{"version":3,"file":"static/js/main.622622f6.js","mappings":"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AM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAA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Ae,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MAC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d,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBA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GAAU,CACnB,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,wICzEpCysT,GAAW,CACpB,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIACjD,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA6C,uIAC7C,6CAA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","sources":["../node_modules/@thirdweb-dev/crypto/dist|lazy|/^node:cry.*$/|groupOptions: {}|namespace object","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.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-react.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.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/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/address.ts","../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts","../node_modules/@ethersproject/abi/src.ts/coders/array.ts","../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts","../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/null.ts","../node_modules/@ethersproject/abi/src.ts/coders/number.ts","../node_modules/@ethersproject/abi/src.ts/coders/string.ts","../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/abi/src.ts/fragments.ts","../node_modules/@ethersproject/abi/src.ts/interface.ts","../node_modules/@ethersproject/abstract-provider/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts","../node_modules/@ethersproject/abstract-signer/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/basex/src.ts/index.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/contracts/src.ts/index.ts","../node_modules/@ethersproject/contracts/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/id.ts","../node_modules/@ethersproject/hash/src.ts/message.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts","../node_modules/@ethersproject/hash/src.ts/namehash.ts","../node_modules/@ethersproject/hash/src.ts/typed-data.ts","../node_modules/@ethersproject/hdnode/src.ts/_version.ts","../node_modules/@ethersproject/hdnode/src.ts/index.ts","../node_modules/@ethersproject/json-wallets/src.ts/_version.ts","../node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts","../node_modules/@ethersproject/json-wallets/src.ts/index.ts","../node_modules/@ethersproject/json-wallets/src.ts/inspect.ts","../node_modules/@ethersproject/json-wallets/src.ts/keystore.ts","../node_modules/@ethersproject/json-wallets/src.ts/utils.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/pbkdf2/src.ts/browser-pbkdf2.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts","../node_modules/@ethersproject/providers/src.ts/ankr-provider.ts","../node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts","../node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts","../node_modules/@ethersproject/providers/src.ts/fallback-provider.ts","../node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts","../node_modules/@ethersproject/providers/src.ts/infura-provider.ts","../node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts","../node_modules/@ethersproject/providers/src.ts/pocket-provider.ts","../node_modules/@ethersproject/providers/src.ts/index.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/web3-provider.ts","../node_modules/@ethersproject/providers/src.ts/browser-ws.ts","../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts","../node_modules/@ethersproject/random/src.ts/_version.ts","../node_modules/@ethersproject/random/src.ts/browser-random.ts","../node_modules/@ethersproject/random/src.ts/shuffle.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/types.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/solidity/src.ts/_version.ts","../node_modules/@ethersproject/solidity/src.ts/index.ts","../node_modules/@ethersproject/strings/src.ts/bytes32.ts","../node_modules/@ethersproject/strings/src.ts/idna.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/wallet/src.ts/index.ts","../node_modules/@ethersproject/wallet/src.ts/_version.ts","../node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/web/src.ts/_version.ts","../node_modules/@ethersproject/wordlists/src.ts/_version.ts","../node_modules/@ethersproject/wordlists/src.ts/wordlist.ts","../node_modules/@ethersproject/wordlists/src.ts/lang-en.ts","../node_modules/@ethersproject/wordlists/src.ts/browser-wordlists.ts","../node_modules/@multiformats/base-x/src/index.js","../node_modules/@radix-ui/react-icons/src/CheckIcon.tsx","../node_modules/@radix-ui/react-icons/src/CheckCircledIcon.tsx","../node_modules/@radix-ui/react-icons/src/ChevronDownIcon.tsx","../node_modules/@radix-ui/react-icons/src/ChevronLeftIcon.tsx","../node_modules/@radix-ui/react-icons/src/ChevronRightIcon.tsx","../node_modules/@radix-ui/react-icons/src/CopyIcon.tsx","../node_modules/@radix-ui/react-icons/src/Cross2Icon.tsx","../node_modules/@radix-ui/react-icons/src/CrossCircledIcon.tsx","../node_modules/@radix-ui/react-icons/src/EnterIcon.tsx","../node_modules/@radix-ui/react-icons/src/ExclamationTriangleIcon.tsx","../node_modules/@radix-ui/react-icons/src/ExternalLinkIcon.tsx","../node_modules/@radix-ui/react-icons/src/EyeClosedIcon.tsx","../node_modules/@radix-ui/react-icons/src/EyeOpenIcon.tsx","../node_modules/@radix-ui/react-icons/src/MagnifyingGlassIcon.tsx","../node_modules/@radix-ui/react-icons/src/PaperPlaneIcon.tsx","../node_modules/@radix-ui/react-icons/src/PinBottomIcon.tsx","../node_modules/@radix-ui/react-icons/src/ReloadIcon.tsx","../node_modules/@radix-ui/react-icons/src/ShuffleIcon.tsx","../node_modules/@radix-ui/react-icons/src/TextAlignLeftIcon.tsx","../node_modules/@stablelib/binary/binary.ts","../node_modules/@stablelib/chacha/chacha.ts","../node_modules/@stablelib/chacha20poly1305/chacha20poly1305.ts","../node_modules/@stablelib/constant-time/constant-time.ts","../node_modules/@stablelib/ed25519/ed25519.ts","../node_modules/@stablelib/hash/hash.ts","../node_modules/@stablelib/hkdf/hkdf.ts","../node_modules/@stablelib/hmac/hmac.ts","../node_modules/@stablelib/int/int.ts","../node_modules/@stablelib/poly1305/poly1305.ts","../node_modules/@stablelib/random/random.ts","../node_modules/@stablelib/random/source/browser.ts","../node_modules/@stablelib/random/source/node.ts","../node_modules/@stablelib/random/source/system.ts","../node_modules/@stablelib/sha256/sha256.ts","../node_modules/@stablelib/sha512/sha512.ts","../node_modules/@stablelib/wipe/wipe.ts","../node_modules/@stablelib/x25519/x25519.ts","../node_modules/@thirdweb-dev/chains/dist/thirdweb-dev-chains.esm.js","../node_modules/@thirdweb-dev/crypto/dist/thirdweb-dev-crypto.esm.js","../node_modules/@thirdweb-dev/crypto/node_modules/js-sha3/src/sha3.js","../node_modules/@thirdweb-dev/generated-abis/dist/thirdweb-dev-generated-abis.esm.js","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","../node_modules/@thirdweb-dev/sdk/evm/dist/thirdweb-dev-sdk-evm.browser.esm.js","../node_modules/@thirdweb-dev/auth/dist/auth-ffe5a232.browser.esm.js","../node_modules/@thirdweb-dev/react-core/dist/useTransactions-cab166fd.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/token-415e1c97.browser.esm.js","../node_modules/@radix-ui/react-visually-hidden/dist/packages/react/visually-hidden/src/VisuallyHidden.tsx","../node_modules/@radix-ui/react-tooltip/dist/packages/react/tooltip/src/Tooltip.tsx","../node_modules/@thirdweb-dev/react/dist/Tooltip-ee6e156f.browser.esm.js","../node_modules/@radix-ui/colors/index.mjs","../node_modules/@thirdweb-dev/react/dist/formElements-8021f017.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/frameWallet-6283facc.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/magicLink-1e5cf114.browser.esm.js","../node_modules/@radix-ui/react-focus-guards/dist/packages/react/focus-guards/src/FocusGuards.tsx","../node_modules/@radix-ui/react-focus-scope/dist/packages/react/focus-scope/src/FocusScope.tsx","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/react-remove-scroll/node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-sidecar/node_modules/tslib/tslib.es6.mjs","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/packages/react/popover/src/Popover.tsx","../node_modules/@radix-ui/react-collection/dist/packages/react/collection/src/Collection.tsx","../node_modules/@radix-ui/react-direction/dist/packages/react/direction/src/Direction.tsx","../node_modules/@radix-ui/react-roving-focus/dist/packages/react/roving-focus/src/RovingFocusGroup.tsx","../node_modules/@radix-ui/react-tabs/dist/packages/react/tabs/src/Tabs.tsx","../node_modules/fuse.js/dist/fuse.esm.js","../node_modules/@radix-ui/react-menu/dist/packages/react/menu/src/Menu.tsx","../node_modules/@radix-ui/react-dropdown-menu/dist/packages/react/dropdown-menu/src/DropdownMenu.tsx","../node_modules/@radix-ui/react-dialog/dist/packages/react/dialog/src/Dialog.tsx","../node_modules/@thirdweb-dev/react/dist/oneKeyWallet-14e8704c.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/paperWallet-6ef8b5a7.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/safeChainSlug-12460a7c.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedCoinbaseProvider-a1001768.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/safeWallet-6b5152ac.browser.esm.js","../node_modules/@thirdweb-dev/react/dist/walletConnectV1-0bb585a3.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/deployWithThrowawayDeployer-e83ef1d9.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/fetchCurrencyValue-7b372272.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/index-924d29a2.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/normalizePriceValue-b8097c8f.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/contract-publisher-3700369d.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/sdk-f403edff.browser.esm.js","../node_modules/@thirdweb-dev/sdk/dist/transactions-12414a24.browser.esm.js","../node_modules/@thirdweb-dev/storage/dist/thirdweb-dev-storage.esm.js","../node_modules/@thirdweb-dev/wallets/dist/assertWindowEthereum-f5a6356c.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/base-80191bd0.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/classPrivateFieldSet-a5db7c83.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/classPrivateMethodGet-ea199cc3.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/connector-05689d68.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/constants-1ba9df2b.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/constants-e71c81af.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/defineProperty-c8ecdc07.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/embedded-wallet-8b5fb8bd.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedCoin98Provider-7ac39dfc.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedCoreWalletProvider-ac484273.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedCryptoDefiWalletProvider-9dfc0146.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedMetamaskProvider-90084de7.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedOKXProvider-7f8b38ec.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedOneKeyProvider-0923fbdd.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedPhantomProvider-95eb3d4f.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedRabbyProvider-8aa8e671.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/getInjectedRainbowProvider-ecc48a30.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/okx/dist/thirdweb-dev-wallets-evm-wallets-okx.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/core-wallet/dist/thirdweb-dev-wallets-evm-wallets-core-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/onekey/dist/thirdweb-dev-wallets-evm-wallets-onekey.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/crypto-defi-wallet/dist/thirdweb-dev-wallets-evm-wallets-crypto-defi-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/rabby/dist/thirdweb-dev-wallets-evm-wallets-rabby.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/coin98/dist/thirdweb-dev-wallets-evm-wallets-coin98.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/embedded-wallet/dist/thirdweb-dev-wallets-evm-wallets-embedded-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/injected/dist/thirdweb-dev-wallets-evm-wallets-injected.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/token-bound-smart-wallet/dist/thirdweb-dev-wallets-evm-wallets-token-bound-smart-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/thirdweb-dev-wallets.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/walletIds-afeb5af2.browser.esm.js","../node_modules/@thirdweb-dev/wallets/dist/wc-fbb7ab15.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/blocto/dist/thirdweb-dev-wallets-evm-wallets-blocto.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/coinbase-wallet/dist/thirdweb-dev-wallets-evm-wallets-coinbase-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/frame/dist/thirdweb-dev-wallets-evm-wallets-frame.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/local-wallet/dist/thirdweb-dev-wallets-evm-wallets-local-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/magic/dist/thirdweb-dev-wallets-evm-wallets-magic.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/metamask/dist/thirdweb-dev-wallets-evm-wallets-metamask.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/paper-wallet/dist/thirdweb-dev-wallets-evm-wallets-paper-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/phantom/dist/thirdweb-dev-wallets-evm-wallets-phantom.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/rainbow-wallet/dist/thirdweb-dev-wallets-evm-wallets-rainbow-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/safe/dist/thirdweb-dev-wallets-evm-wallets-safe.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/signer/dist/thirdweb-dev-wallets-evm-wallets-signer.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/smart-wallet/dist/thirdweb-dev-wallets-evm-wallets-smart-wallet.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/trust/dist/thirdweb-dev-wallets-evm-wallets-trust.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/wallet-connect/dist/thirdweb-dev-wallets-evm-wallets-wallet-connect.browser.esm.js","../node_modules/@thirdweb-dev/wallets/evm/wallets/zerion/dist/thirdweb-dev-wallets-evm-wallets-zerion.browser.esm.js","../node_modules/destr/dist/index.mjs","../node_modules/unstorage/dist/shared/unstorage.8581f561.mjs","../node_modules/unstorage/dist/index.mjs","../node_modules/idb-keyval/dist/index.js","../../constants.ts","../../utils.ts","../../api.ts","../../crypto.ts","../../env.ts","../../index.ts","../../events.ts","../../../../src/constants/heartbeat.ts","../../../../src/constants/index.ts","../../heartbeat.ts","../../../../src/types/heartbeat.ts","../../../../src/types/index.ts","../../provider.ts","../../error.ts","../../format.ts","../../misc.ts","../../url.ts","../../validators.ts","../node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws/browser.js","../../../../src/constants/misc.ts","../../../../src/constants/time.ts","../../../../src/types/watch.ts","../../../../src/utils/convert.ts","../../../../src/utils/delay.ts","../../../../src/utils/index.ts","../../watch.ts","../../jsonrpc.ts","../node_modules/aes-js/index.js","../node_modules/base-x/src/index.js","../node_modules/base64-js/index.js","../node_modules/bech32/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/bs58/index.js","../node_modules/buffer/index.js","../node_modules/cid-tool/node_modules/uint8arrays/to-string.js","../node_modules/cid-tool/node_modules/uint8arrays/util/bases.js","../node_modules/cid-tool/src/core/base32.js","../node_modules/cid-tool/src/core/bases.js","../node_modules/cid-tool/src/core/codecs.js","../node_modules/cid-tool/src/core/format.js","../node_modules/cid-tool/src/core/hashes.js","../node_modules/cid-tool/src/core/index.js","../node_modules/cid-tool/src/index.js","../node_modules/cids/src/cid-util.js","../node_modules/cids/src/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/decode-uri-component/index.js","../node_modules/detect-browser/es/index.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/encode-utf8/index.js","../node_modules/ethers/src.ts/utils.ts","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/explain-error/index.js","../../src/backoff.ts","../../../../src/delay/always/always.delay.ts","../../delay/delay.base.ts","../../delay/delay.factory.ts","../../../../src/delay/skip-first/skip-first.delay.ts","../../../../src/jitter/full/full.jitter.ts","../../jitter/jitter.factory.ts","../../../../src/jitter/no/no.jitter.ts","../../src/options.ts","../node_modules/fast-deep-equal/index.js","../node_modules/filter-obj/index.js","../node_modules/form-data/lib/browser.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/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/isomorphic-unfetch/browser.js","../node_modules/js-sha3/src/sha3.js","../node_modules/lodash.isequal/index.js","../node_modules/mime/Mime.js","../node_modules/mime/lite.js","../node_modules/mime/types/standard.js","../node_modules/minimalistic-assert/index.js","../node_modules/multibase/src/base.js","../node_modules/multibase/src/constants.js","../node_modules/multibase/src/index.js","../node_modules/multibase/src/rfc4648.js","../node_modules/multibase/src/util.js","../node_modules/multicodec/src/generated-table.js","../node_modules/multicodec/src/index.js","../node_modules/multicodec/src/maps.js","../node_modules/multicodec/src/util.js","../node_modules/multihashes/node_modules/varint/decode.js","../node_modules/multihashes/node_modules/varint/encode.js","../node_modules/multihashes/node_modules/varint/index.js","../node_modules/multihashes/node_modules/varint/length.js","../node_modules/multihashes/src/constants.js","../node_modules/multihashes/src/index.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/query-string/index.js","../node_modules/quick-format-unescaped/index.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/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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/scrypt-js/scrypt.js","../node_modules/split-on-first/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/symbol-observable/es/index.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/toggle-selection/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/unfetch/src/index.mjs","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/shim/index.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","../node_modules/varint/decode.js","../node_modules/varint/encode.js","../node_modules/varint/index.js","../node_modules/varint/length.js","../node_modules/pino/browser.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@noble/hashes/src/_assert.ts","../node_modules/@noble/hashes/src/_sha2.ts","../node_modules/@noble/hashes/src/sha256.ts","../node_modules/@noble/hashes/src/crypto.ts","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@paperxyz/sdk-common-utilities/src/constants/blockchain.ts","../node_modules/@paperxyz/sdk-common-utilities/src/constants/settings.ts","../node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../node_modules/@radix-ui/react-dismissable-layer/dist/packages/react/dismissable-layer/src/DismissableLayer.tsx","../node_modules/@radix-ui/react-use-escape-keydown/dist/packages/react/use-escape-keydown/src/useEscapeKeydown.tsx","../node_modules/@radix-ui/react-id/dist/packages/react/id/src/id.tsx","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.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/@radix-ui/react-arrow/dist/packages/react/arrow/src/Arrow.tsx","../node_modules/@radix-ui/react-popper/dist/packages/react/popper/src/Popper.tsx","../node_modules/@radix-ui/react-use-size/dist/packages/react/use-size/src/useSize.tsx","../node_modules/@radix-ui/react-portal/dist/packages/react/portal/src/Portal.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/logger.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.tsx","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../node_modules/@tanstack/react-query/src/useSyncExternalStore.ts","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/eventemitter3/index.mjs","../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/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../node_modules/uint8arrays/esm/src/equals.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/zod/lib/index.mjs","../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/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-spinners/esm/helpers/unitConverter.js","../node_modules/react-spinners/esm/helpers/animation.js","../node_modules/react-spinners/esm/ClipLoader.js","utils/Vouchers.js","utils/Vouchers2.js","../node_modules/@crossmint/client-sdk-base/src/types/errors.ts","../node_modules/@crossmint/client-sdk-base/src/types/blockchain.ts","../node_modules/@crossmint/client-sdk-base/src/types/index.ts","../node_modules/@crossmint/client-sdk-base/src/types/events/public/events.ts","../node_modules/@crossmint/client-sdk-base/src/types/events/internal/events.ts","../node_modules/@crossmint/client-sdk-base/src/utils/ui.ts","../node_modules/@crossmint/client-sdk-base/src/consts/embed.ts","../node_modules/@crossmint/client-sdk-base/src/services/hosted/crossmintModalService.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/Klingon.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/enUS.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/index.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/esES.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/frFR.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/itIT.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/koKR.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/ptPT.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/zhCN.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/zhTW.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/deDE.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/ruRU.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/trTR.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/ukUA.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/thTH.ts","../node_modules/@crossmint/client-sdk-base/src/utils/i18n/dictionaries/viVN.ts","../node_modules/theming/dist/theming.esm.js","../node_modules/is-in-browser/dist/module.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/jss/dist/jss.esm.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-rule-value-observable/dist/jss-plugin-rule-value-observable.esm.js","../node_modules/jss-plugin-template/dist/jss-plugin-template.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-extend/dist/jss-plugin-extend.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/jss-plugin-compose/dist/jss-plugin-compose.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/jss-plugin-expand/dist/jss-plugin-expand.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/jss-preset-default/dist/jss-preset-default.esm.js","../node_modules/react-jss/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/react-jss/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/css-jss/dist/css-jss.esm.js","../node_modules/react-jss/dist/react-jss.esm.js","../node_modules/@crossmint/client-sdk-react-ui/src/consts/version.ts","../node_modules/@crossmint/client-sdk-react-ui/src/components/hosted/styles.ts","../node_modules/@crossmint/client-sdk-react-ui/src/components/hosted/CrossmintPayButton.tsx","../node_modules/@crossmint/client-sdk-react-ui/src/hooks/useEnvironment.ts","../node_modules/@crossmint/client-sdk-base/src/services/hosted/crossmintPayButtonService.ts","../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/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/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.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/core/mergeConfig.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","Components/Home.jsx","App.js","reportWebVitals.js","index.js"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 89844;\nmodule.exports = webpackEmptyAsyncContext;","/*\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// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\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 // $FlowFixMe\n return document.styleSheets[i];\n }\n }\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 ? process.env.NODE_ENV === 'production' : 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 (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\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 if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\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, COMMENT, 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};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\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 createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\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 // 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 document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\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 var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\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 var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : 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 insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\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 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 { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.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-c39617d8.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 pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.1\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\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 } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\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 = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\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; // $FlowFixMe\n\n var node = 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 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\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\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\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\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\nvar classnames = function classnames(args) {\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 if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\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, css, className) {\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\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\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 && process.env.NODE_ENV !== 'production') {\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\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\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 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 ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\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\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\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 if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.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 = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\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 } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\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 if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\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 if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function 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 if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[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 if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\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 += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\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 memoize from '@emotion/memoize';\n\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|download|draggable|encType|enterKeyHint|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 * 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 isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__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\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\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});\nvar ThemeProvider = function ThemeProvider(props) {\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(Component) {\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 }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\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(function (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 if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\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\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\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, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","var isBrowser = \"object\" !== 'undefined';\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 {\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 _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\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\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, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\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\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\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 = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\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 () {\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 if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = 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 ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\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 && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\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 // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled 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","export const version = \"abi/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-provider/5.7.0\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"abstract-signer/5.7.0\";\n","export const version = \"address/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is 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\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","export const version = \"bignumber/5.7.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","export const version = \"contracts/5.7.0\";\n","export const version = \"hash/5.7.0\";\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","export const version = \"hdnode/5.7.0\";\n","\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getAccountPath(index: number): string {\n if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${ index }'/0/0`;\n}\n","export const version = \"json-wallets/5.7.0\";\n","\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n","\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n","\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func, scryptFunc: ScryptFunc, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n","\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.7.0\";\n","export const version = \"networks/5.7.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, SupportedAlgorithm } from \"@ethersproject/sha2\";\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen)\n const block1 = new Uint8Array(salt.length + 4)\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n\n let r: number;\n let T: Uint8Array;\n\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(hashAlgorithm, password, block1));\n\n if (!hLen) {\n hLen = U.length\n T = new Uint8Array(hLen)\n l = Math.ceil(keylen / hLen)\n r = keylen - (l - 1) * hLen\n }\n\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n\n\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n\n const destPos = (i - 1) * hLen\n const len = (i === l ? r : hLen)\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n\n return hexlify(DK)\n}\n\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"providers/5.7.2\";\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record {\n const result: Record = { };\n for (let key in transaction) {\n if ((transaction)[key] == null) { continue; }\n let value = (transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if (({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (result).status == 0 && (result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record): Record {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record, post?: boolean): Promise {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise, startBlock?: BlockTag, endBlock?: BlockTag): Promise> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise\n getPromise: () => Promise,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = >(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array) => any {\n return function(configs: Array): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise {\n const provider = (config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((provider).getEtherPrice) {\n return (provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise = checkNetworks(providerConfigs.map((c) => ((c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = ((c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = (tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n","\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n","\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (error).code = payload.error.code;\n (error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n","export const version = \"random/5.7.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Debugging line for testing browser lib in node\n//const window = { crypto: { getRandomValues: () => { } } };\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal(): any {\n if (typeof self !== 'undefined') { return self; }\n if (typeof window !== 'undefined') { return window; }\n if (typeof global !== 'undefined') { return global; }\n throw new Error('unable to locate global object');\n};\n\nconst anyGlobal = getGlobal();\n\nlet crypto: any = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n\n logger.warn(\"WARNING: Missing strong random number source\");\n\n crypto = {\n getRandomValues: function(buffer: Uint8Array): Uint8Array {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\n\nexport function randomBytes(length: number): Uint8Array {\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n};\n","\"use strict\";\n\nexport function shuffled(array: Array): Array {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n","export const version = \"rlp/5.7.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"sha2/5.7.0\";\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\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","'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 naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var 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\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","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","'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 '';\n return '';\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 '';\n return '';\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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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 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) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\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 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 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 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 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) {\n var delta = msg.byteLength() * 8 - 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 key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\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 // 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) {\n msg = this._truncateToN(new BN(msg, 16));\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","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'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","export const version = \"signing-key/5.7.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"solidity/5.7.0\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n logger.throwArgumentError(\"invalid number type\", \"type\", type)\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes type\", \"type\", type)\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${ type }`, \"value\", value)\n }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${ type }`, \"value\", value)\n }\n const result: Array = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", type)\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray, values: ReadonlyArray) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values)\n }\n const tight: Array = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashSha256(pack(types, values));\n}\n","\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n","\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array };\n\nfunction bytes2(data: string): Array {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array>): Array {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n return name;\n}\n\n","export const version = \"strings/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","export const version = \"transactions/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","export const version = \"units/5.7.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record>, value: Record, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n","export const version = \"wallet/5.7.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = \"cors\"; // no-cors, cors, *same-origin\n request.cache = \"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = \"same-origin\"; // include, *same-origin, omit\n request.redirect = \"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = (opts.mode); }\n if (opts.cache) { request.cache = (opts.cache); }\n if (opts.credentials) { request.credentials = (opts.credentials); }\n if (opts.redirect) { request.redirect = (opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array>(((response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","export const version = \"web/5.7.1\";\n","export const version = \"wordlists/5.7.0\";\n","\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\n// Browser; only include English by default\n\nimport { Wordlist } from \"./wordlist\";\n\nimport { langEn as en } from \"./lang-en\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n en: en\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\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) { throw new TypeError(x + ' is ambiguous') }\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) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\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)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\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 // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\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) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\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) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\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) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const CheckIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default CheckIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const CheckCircledIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default CheckCircledIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ChevronDownIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ChevronDownIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ChevronLeftIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ChevronLeftIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ChevronRightIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ChevronRightIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const CopyIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default CopyIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const Cross2Icon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default Cross2Icon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const CrossCircledIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default CrossCircledIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const EnterIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default EnterIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ExclamationTriangleIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ExclamationTriangleIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ExternalLinkIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ExternalLinkIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const EyeClosedIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default EyeClosedIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const EyeOpenIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default EyeOpenIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const MagnifyingGlassIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default MagnifyingGlassIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const PaperPlaneIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default PaperPlaneIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const PinBottomIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default PinBottomIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ReloadIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ReloadIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const ShuffleIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default ShuffleIcon;\n","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const TextAlignLeftIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default TextAlignLeftIcon;\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\n\nimport { isSafeInteger } from \"@stablelib/int\";\n\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nexport function readInt16BE(array: Uint8Array, offset = 0): number {\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\n\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nexport function readUint16BE(array: Uint8Array, offset = 0): number {\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\n\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nexport function readInt16LE(array: Uint8Array, offset = 0): number {\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\n\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nexport function readUint16LE(array: Uint8Array, offset = 0): number {\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\n\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint16BE(value: number, out = new Uint8Array(2), offset = 0): Uint8Array {\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\n\nexport const writeInt16BE = writeUint16BE;\n\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint16LE(value: number, out = new Uint8Array(2), offset = 0): Uint8Array {\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\n\nexport const writeInt16LE = writeUint16LE;\n\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nexport function readInt32BE(array: Uint8Array, offset = 0): number {\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\n\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nexport function readUint32BE(array: Uint8Array, offset = 0): number {\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\n\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nexport function readInt32LE(array: Uint8Array, offset = 0): number {\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\n\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nexport function readUint32LE(array: Uint8Array, offset = 0): number {\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\n\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint32BE(value: number, out = new Uint8Array(4), offset = 0): Uint8Array {\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\n\nexport const writeInt32BE = writeUint32BE;\n\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint32LE(value: number, out = new Uint8Array(4), offset = 0): Uint8Array {\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\n\n\nexport const writeInt32LE = writeUint32LE;\n\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nexport function readInt64BE(array: Uint8Array, offset = 0): number {\n const hi = readInt32BE(array, offset);\n const lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo>>31) * 0x100000000);\n}\n\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nexport function readUint64BE(array: Uint8Array, offset = 0): number {\n const hi = readUint32BE(array, offset);\n const lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\n\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nexport function readInt64LE(array: Uint8Array, offset = 0): number {\n const lo = readInt32LE(array, offset);\n const hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo>>31) * 0x100000000);\n}\n\n\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nexport function readUint64LE(array: Uint8Array, offset = 0): number {\n const lo = readUint32LE(array, offset);\n const hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\n\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint64BE(value: number, out = new Uint8Array(8), offset = 0): Uint8Array {\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\n\nexport const writeInt64BE = writeUint64BE;\n\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint64LE(value: number, out = new Uint8Array(8), offset = 0): Uint8Array {\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\n\nexport const writeInt64LE = writeUint64LE;\n\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nexport function readUintBE(bitLength: number, array: Uint8Array, offset = 0): number {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n let result = 0;\n let mul = 1;\n for (let i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\n\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nexport function readUintLE(bitLength: number, array: Uint8Array, offset = 0): number {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n let result = 0;\n let mul = 1;\n for (let i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\n\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nexport function writeUintBE(bitLength: number, value: number,\n out = new Uint8Array(bitLength / 8), offset = 0): Uint8Array {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n let div = 1;\n for (let i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\n\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nexport function writeUintLE(bitLength: number, value: number,\n out = new Uint8Array(bitLength / 8), offset = 0): Uint8Array {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n let div = 1;\n for (let i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\n\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nexport function readFloat32BE(array: Uint8Array, offset = 0): number {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\n\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nexport function readFloat32LE(array: Uint8Array, offset = 0): number {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\n\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nexport function readFloat64BE(array: Uint8Array, offset = 0): number {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\n\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nexport function readFloat64LE(array: Uint8Array, offset = 0): number {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\n\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat32BE(value: number, out = new Uint8Array(4), offset = 0): Uint8Array {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\n\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat32LE(value: number, out = new Uint8Array(4), offset = 0): Uint8Array {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\n\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat64BE(value: number, out = new Uint8Array(8), offset = 0): Uint8Array {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\n\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat64LE(value: number, out = new Uint8Array(8), offset = 0): Uint8Array {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package chacha implements ChaCha stream cipher.\n */\n\nimport { writeUint32LE } from \"@stablelib/binary\";\nimport { wipe } from \"@stablelib/wipe\";\n\n// Number of ChaCha rounds (ChaCha20).\nconst ROUNDS = 20;\n\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out: Uint8Array, input: Uint8Array, key: Uint8Array): void {\n let j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n let j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n let j2 = 0x79622D32; // \"2-by\"\n let j3 = 0x6B206574; // \"te k\"\n let j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n let j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n let j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n let j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n let j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n let j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n let j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n let j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n let j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n let j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n let j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n let j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n\n let x0 = j0;\n let x1 = j1;\n let x2 = j2;\n let x3 = j3;\n let x4 = j4;\n let x5 = j5;\n let x6 = j6;\n let x7 = j7;\n let x8 = j8;\n let x9 = j9;\n let x10 = j10;\n let x11 = j11;\n let x12 = j12;\n let x13 = j13;\n let x14 = j14;\n let x15 = j15;\n\n for (let i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0; x12 ^= x0; x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0; x4 ^= x8; x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0; x13 ^= x1; x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0; x5 ^= x9; x5 = x5 >>> (32 - 12) | x5 << 12;\n\n x2 = x2 + x6 | 0; x14 ^= x2; x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0; x6 ^= x10; x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0; x15 ^= x3; x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0; x7 ^= x11; x7 = x7 >>> (32 - 12) | x7 << 12;\n\n x2 = x2 + x6 | 0; x14 ^= x2; x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0; x6 ^= x10; x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0; x15 ^= x3; x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0; x7 ^= x11; x7 = x7 >>> (32 - 7) | x7 << 7;\n\n x1 = x1 + x5 | 0; x13 ^= x1; x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0; x5 ^= x9; x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0; x12 ^= x0; x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0; x4 ^= x8; x4 = x4 >>> (32 - 7) | x4 << 7;\n\n x0 = x0 + x5 | 0; x15 ^= x0; x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0; x5 ^= x10; x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0; x12 ^= x1; x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0; x6 ^= x11; x6 = x6 >>> (32 - 12) | x6 << 12;\n\n x2 = x2 + x7 | 0; x13 ^= x2; x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0; x7 ^= x8; x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0; x14 ^= x3; x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0; x4 ^= x9; x4 = x4 >>> (32 - 12) | x4 << 12;\n\n x2 = x2 + x7 | 0; x13 ^= x2; x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0; x7 ^= x8; x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0; x14 ^= x3; x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0; x4 ^= x9; x4 = x4 >>> (32 - 7) | x4 << 7;\n\n x1 = x1 + x6 | 0; x12 ^= x1; x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0; x6 ^= x11; x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0; x15 ^= x0; x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0; x5 ^= x10; x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n writeUint32LE(x0 + j0 | 0, out, 0);\n writeUint32LE(x1 + j1 | 0, out, 4);\n writeUint32LE(x2 + j2 | 0, out, 8);\n writeUint32LE(x3 + j3 | 0, out, 12);\n writeUint32LE(x4 + j4 | 0, out, 16);\n writeUint32LE(x5 + j5 | 0, out, 20);\n writeUint32LE(x6 + j6 | 0, out, 24);\n writeUint32LE(x7 + j7 | 0, out, 28);\n writeUint32LE(x8 + j8 | 0, out, 32);\n writeUint32LE(x9 + j9 | 0, out, 36);\n writeUint32LE(x10 + j10 | 0, out, 40);\n writeUint32LE(x11 + j11 | 0, out, 44);\n writeUint32LE(x12 + j12 | 0, out, 48);\n writeUint32LE(x13 + j13 | 0, out, 52);\n writeUint32LE(x14 + j14 | 0, out, 56);\n writeUint32LE(x15 + j15 | 0, out, 60);\n}\n\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nexport function streamXOR(key: Uint8Array, nonce: Uint8Array,\n src: Uint8Array, dst: Uint8Array, nonceInplaceCounterLength = 0): Uint8Array {\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n\n let nc: Uint8Array;\n let counterLength: number;\n\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n } else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n\n // Allocate temporary space for ChaCha block.\n const block = new Uint8Array(64);\n\n for (let i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n\n // XOR block bytes with src into dst.\n for (let j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n\n // Cleanup temporary space.\n wipe(block);\n\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe(nc);\n }\n\n return dst;\n}\n\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nexport function stream(key: Uint8Array, nonce: Uint8Array,\n dst: Uint8Array, nonceInplaceCounterLength = 0): Uint8Array {\n wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\n\nfunction incrementCounter(counter: Uint8Array, pos: number, len: number) {\n let carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package chacha20poly1305 implements ChaCha20-Poly1305 AEAD.\n */\n\nimport { AEAD } from \"@stablelib/aead\";\nimport { streamXOR, stream } from \"@stablelib/chacha\";\nimport { Poly1305 } from \"@stablelib/poly1305\";\nimport { wipe } from \"@stablelib/wipe\";\nimport { writeUint64LE } from \"@stablelib/binary\";\nimport { equal } from \"@stablelib/constant-time\";\n\nexport const KEY_LENGTH = 32;\nexport const NONCE_LENGTH = 12;\nexport const TAG_LENGTH = 16;\n\nconst ZEROS = new Uint8Array(16);\n\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nexport class ChaCha20Poly1305 implements AEAD {\n readonly nonceLength = NONCE_LENGTH;\n readonly tagLength = TAG_LENGTH;\n\n private _key: Uint8Array;\n\n /**\n * Creates a new instance with the given 32-byte key.\n */\n constructor(key: Uint8Array) {\n if (key.length !== KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n seal(nonce: Uint8Array, plaintext: Uint8Array, associatedData?: Uint8Array,\n dst?: Uint8Array): Uint8Array {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n\n // Allocate space for counter, and set nonce as last bytes of it.\n const counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n const authKey = new Uint8Array(32);\n stream(this._key, counter, authKey, 4);\n\n // Allocate space for sealed ciphertext.\n const resultLength = plaintext.length + this.tagLength;\n let result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n } else {\n result = new Uint8Array(resultLength);\n }\n\n // Encrypt plaintext.\n streamXOR(this._key, counter, plaintext, result, 4);\n\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length),\n authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n\n // Cleanup.\n wipe(counter);\n\n return result;\n }\n\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n open(nonce: Uint8Array, sealed: Uint8Array, associatedData?: Uint8Array,\n dst?: Uint8Array): Uint8Array | null {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n\n // Allocate space for counter, and set nonce as last bytes of it.\n const counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n\n // Generate authentication key by taking first 32-bytes of stream.\n const authKey = new Uint8Array(32);\n stream(this._key, counter, authKey, 4);\n\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n const calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey,\n sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n\n // Constant-time compare tags and return null if they differ.\n if (!equal(calculatedTag,\n sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n\n // Allocate space for decrypted plaintext.\n const resultLength = sealed.length - this.tagLength;\n let result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n } else {\n result = new Uint8Array(resultLength);\n }\n\n // Decrypt.\n streamXOR(this._key, counter,\n sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n\n // Cleanup.\n wipe(counter);\n\n return result;\n }\n\n clean(): this {\n wipe(this._key);\n return this;\n }\n\n private _authenticate(tagOut: Uint8Array, authKey: Uint8Array,\n ciphertext: Uint8Array, associatedData?: Uint8Array) {\n\n // Initialize Poly1305 with authKey.\n const h = new Poly1305(authKey);\n\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n const length = new Uint8Array(8);\n if (associatedData) {\n writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n\n // Authenticate length of ciphertext.\n writeUint64LE(ciphertext.length, length);\n h.update(length);\n\n // Get tag and copy it into tagOut.\n const tag = h.digest();\n for (let i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n\n // Cleanup.\n h.clean();\n wipe(tag);\n wipe(length);\n }\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nexport function select(subject: number, resultIfOne: number, resultIfZero: number): number {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\n\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nexport function lessOrEqual(a: number, b: number): number {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\n\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nexport function compare(a: Uint8Array, b: Uint8Array): number {\n if (a.length !== b.length) {\n return 0;\n }\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\n\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nexport function equal(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\n\nimport { randomBytes, RandomSource } from \"@stablelib/random\";\nimport { hash, SHA512 } from \"@stablelib/sha512\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport const SIGNATURE_LENGTH = 64;\nexport const PUBLIC_KEY_LENGTH = 32;\nexport const SECRET_KEY_LENGTH = 64;\nexport const SEED_LENGTH = 32;\n\n// TODO(dchest): some functions are copies of ../kex/x25519.\n// Find a way to combine them without opening up to public.\n\n// Ported from TweetNaCl.js, which was ported from TweetNaCl\n// by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n// https://tweetnacl.js.org\n\n// TweetNaCl contributors:\n// Daniel J. Bernstein, Bernard van Gastel, Wesley Janssen,\n// Tanja Lange, Peter Schwabe, Sjaak Smetsers.\n// Public domain.\n// https://tweetnacl.cr.yp.to/\n\ntype GF = Float64Array;\n\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init?: number[]): GF {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n\n// Base point.\nconst _9 = new Uint8Array(32); _9[0] = 9;\n\nconst gf0 = gf();\n\nconst gf1 = gf([1]);\n\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\n\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\n\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\n\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\n\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\n\nfunction set25519(r: GF, a: GF) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\n\nfunction car25519(o: GF) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\n\nfunction sel25519(p: GF, q: GF, b: number) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o: Uint8Array, n: GF) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\n\nfunction verify32(x: Uint8Array, y: Uint8Array) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\n\nfunction neq25519(a: GF, b: GF) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\n\nfunction par25519(a: GF) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o: GF, n: Uint8Array) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\n\nfunction add(o: GF, a: GF, b: GF) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\n\nfunction sub(o: GF, a: GF, b: GF) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\n\nfunction mul(o: GF, a: GF, b: GF) {\n let v: number, c: number,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction square(o: GF, a: GF) {\n mul(o, a, a);\n}\n\nfunction inv25519(o: GF, i: GF) {\n const c = gf();\n let a: number;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\n\nfunction pow2523(o: GF, i: GF) {\n const c = gf();\n let a: number;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\n\n\nfunction edadd(p: GF[], q: GF[]) {\n const a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\n\nfunction cswap(p: GF[], q: GF[], b: number) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r: Uint8Array, p: GF[]) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p: GF[], q: GF[], s: Uint8Array) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p: GF[], s: Uint8Array) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nexport interface KeyPair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\n// Generates key pair from secret 32-byte seed.\nexport function generateKeyPairFromSeed(seed: Uint8Array): KeyPair {\n if (seed.length !== SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${SEED_LENGTH} bytes`);\n }\n\n const d = hash(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n\n return {\n publicKey,\n secretKey\n };\n}\n\nexport function generateKeyPair(prng?: RandomSource): KeyPair {\n const seed = randomBytes(32, prng);\n const result = generateKeyPairFromSeed(seed);\n wipe(seed);\n return result;\n}\n\nexport function extractPublicKeyFromSecretKey(secretKey: Uint8Array): Uint8Array {\n if (secretKey.length !== SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\n\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10\n]);\n\nfunction modL(r: Uint8Array, x: Float64Array) {\n let carry: number;\n let i: number;\n let j: number;\n let k: number;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r: Uint8Array) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n\n// Returns 64-byte signature of the message under the 64-byte secret key.\nexport function sign(secretKey: Uint8Array, message: Uint8Array): Uint8Array {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n\n const d = hash(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n\n const hs = new SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n\n return signature;\n}\n\nfunction unpackneg(r: GF[], p: Uint8Array) {\n const t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n\n mul(r[3], r[0], r[1]);\n return 0;\n}\n\nexport function verify(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n\n if (signature.length !== SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${SIGNATURE_LENGTH} bytes`);\n }\n\n if (unpackneg(q, publicKey)) {\n return false;\n }\n\n const hs = new SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\n\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nexport function convertPublicKeyToX25519(publicKey: Uint8Array): Uint8Array {\n let q = [gf(), gf(), gf(), gf()];\n\n if (unpackneg(q, publicKey)) {\n throw new Error(\"Ed25519: invalid public key\");\n }\n\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\n\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nexport function convertSecretKeyToX25519(secretKey: Uint8Array): Uint8Array {\n const d = hash(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n wipe(d);\n return o;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package hash provides interface for hash functions.\n */\n\n/**\n * Hash interface describes properties of\n * cryptographic hash functions.\n */\nexport interface Hash {\n readonly digestLength: number;\n readonly blockSize: number;\n update(data: Uint8Array): this;\n reset(): this;\n finish(out: Uint8Array): this;\n digest(): Uint8Array;\n clean(): void;\n}\n\nexport interface SerializableHash extends Hash {\n saveState(): any;\n restoreState(savedState: any): this;\n cleanSavedState(savedState: any): void;\n}\n\nexport function isSerializableHash(h: Hash): h is SerializableHash {\n return (\n typeof (h as SerializableHash).saveState !== \"undefined\" &&\n typeof (h as SerializableHash).restoreState !== \"undefined\" &&\n typeof (h as SerializableHash).cleanSavedState !== \"undefined\"\n );\n}\n\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package hkdf implements HKDF key derivation function.\n */\n\nimport { Hash } from \"@stablelib/hash\";\nimport { HMAC, hmac } from \"@stablelib/hmac\";\nimport { wipe } from \"@stablelib/wipe\";\n\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nexport class HKDF {\n private _hmac: HMAC;\n private _buffer: Uint8Array;\n private _bufpos: number;\n private _counter = new Uint8Array(1); // starts with zero\n private _hash: new () => Hash;\n private _info?: Uint8Array;\n\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n constructor(hash: new () => Hash,\n key: Uint8Array,\n salt = new Uint8Array(0),\n info?: Uint8Array) {\n\n this._hash = hash;\n this._info = info;\n\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(this._hash, salt, key);\n\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new HMAC(hash, okm);\n\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n\n // Fill buffer with new block of HKDF-Extract output.\n private _fillBuffer(): void {\n // Increment counter.\n this._counter[0]++;\n\n const ctr = this._counter[0];\n\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n\n // Hash in the counter.\n this._hmac.update(this._counter);\n\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n\n // Reset buffer position.\n this._bufpos = 0;\n }\n\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n expand(length: number): Uint8Array {\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n }\n\n clean(): void {\n this._hmac.clean();\n wipe(this._buffer);\n wipe(this._counter);\n this._bufpos = 0;\n }\n}\n\n// TODO(dchest): maybe implement deriveKey?\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package hmac implements HMAC algorithm.\n */\n\nimport { Hash, SerializableHash, isSerializableHash } from \"@stablelib/hash\";\nimport { equal as constantTimeEqual } from \"@stablelib/constant-time\";\nimport { wipe } from \"@stablelib/wipe\";\n\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nexport class HMAC implements SerializableHash {\n readonly blockSize: number;\n readonly digestLength: number;\n\n private _inner: Hash; // inner hash\n private _outer: Hash; // outer hash\n\n private _finished = false; // true if HMAC was finalized\n\n // Copies of hash states after keying.\n // Need for quick reset without hashing the key again.\n private _innerKeyedState: any | undefined;\n private _outerKeyedState: any | undefined;\n\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n constructor(hash: new () => Hash | SerializableHash, key: Uint8Array) {\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n\n // Pad temporary stores a key (or its hash) padded with zeroes.\n const pad = new Uint8Array(this.blockSize);\n\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n } else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n\n // To make inner hash key, xor byte 0x36 into pad.\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (isSerializableHash(this._inner) && isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n\n // Clean pad.\n wipe(pad);\n }\n\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n reset(): this {\n if (!isSerializableHash(this._inner) || !isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n }\n\n /**\n * Cleans HMAC state.\n */\n clean() {\n if (isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n }\n\n /**\n * Updates state with provided data.\n */\n update(data: Uint8Array): this {\n this._inner.update(data);\n return this;\n }\n\n /**\n * Finalizes HMAC and puts the result in out.\n */\n finish(out: Uint8Array): this {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n\n return this;\n }\n\n /**\n * Returns the computed message authentication code.\n */\n digest(): Uint8Array {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n }\n\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n saveState(): any {\n if (!isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n }\n\n restoreState(savedState: any): this {\n if (!isSerializableHash(this._inner) || !isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n }\n\n cleanSavedState(savedState: any) {\n if (!isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n }\n}\n\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nexport function hmac(hash: new () => Hash, key: Uint8Array, data: Uint8Array): Uint8Array {\n const h = new HMAC(hash, key);\n h.update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\n\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexport const equal = constantTimeEqual;\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package int provides helper functions for integerss.\n */\n\n// Shim using 16-bit pieces.\nfunction imulShim(a: number, b: number): number {\n const ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n const bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexport const mul = (Math as { imul?(a: number, b: number): number }).imul || imulShim;\n\n/** 32-bit integer addition. */\nexport function add(a: number, b: number): number {\n return (a + b) | 0;\n}\n\n/** 32-bit integer subtraction. */\nexport function sub(a: number, b: number): number {\n return (a - b) | 0;\n}\n\n/** 32-bit integer left rotation */\nexport function rotl(x: number, n: number): number {\n return x << n | x >>> (32 - n);\n}\n\n/** 32-bit integer left rotation */\nexport function rotr(x: number, n: number): number {\n return x << (32 - n) | x >>> n;\n}\n\nfunction isIntegerShim(n: number): boolean {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexport const isInteger = (Number as { isInteger?(n: number): boolean }).isInteger || isIntegerShim;\n\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexport const MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexport const isSafeInteger = (n: number): boolean =>\n isInteger(n) && (n >= -MAX_SAFE_INTEGER && n <= MAX_SAFE_INTEGER);\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\n\nimport { equal as constantTimeEqual } from \"@stablelib/constant-time\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport const DIGEST_LENGTH = 16;\n\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nexport class Poly1305 {\n readonly digestLength = DIGEST_LENGTH;\n\n private _buffer = new Uint8Array(16);\n private _r = new Uint16Array(10);\n private _h = new Uint16Array(10);\n private _pad = new Uint16Array(8);\n private _leftover = 0;\n private _fin = 0;\n private _finished = false;\n\n constructor(key: Uint8Array) {\n let t0 = key[0] | key[1] << 8; this._r[0] = (t0) & 0x1fff;\n let t1 = key[2] | key[3] << 8; this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n let t2 = key[4] | key[5] << 8; this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n let t3 = key[6] | key[7] << 8; this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n let t4 = key[8] | key[9] << 8; this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n let t5 = key[10] | key[11] << 8; this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n let t6 = key[12] | key[13] << 8; this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n let t7 = key[14] | key[15] << 8; this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n\n private _blocks(m: Uint8Array, mpos: number, bytes: number) {\n let hibit = this._fin ? 0 : 1 << 11;\n\n let h0 = this._h[0],\n h1 = this._h[1],\n h2 = this._h[2],\n h3 = this._h[3],\n h4 = this._h[4],\n h5 = this._h[5],\n h6 = this._h[6],\n h7 = this._h[7],\n h8 = this._h[8],\n h9 = this._h[9];\n\n let r0 = this._r[0],\n r1 = this._r[1],\n r2 = this._r[2],\n r3 = this._r[3],\n r4 = this._r[4],\n r5 = this._r[5],\n r6 = this._r[6],\n r7 = this._r[7],\n r8 = this._r[8],\n r9 = this._r[9];\n\n while (bytes >= 16) {\n let t0 = m[mpos + 0] | m[mpos + 1] << 8; h0 += (t0) & 0x1fff;\n let t1 = m[mpos + 2] | m[mpos + 3] << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n let t2 = m[mpos + 4] | m[mpos + 5] << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n let t3 = m[mpos + 6] | m[mpos + 7] << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n let t4 = m[mpos + 8] | m[mpos + 9] << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n let t5 = m[mpos + 10] | m[mpos + 11] << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n let t6 = m[mpos + 12] | m[mpos + 13] << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n let t7 = m[mpos + 14] | m[mpos + 15] << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n let c = 0;\n\n let d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n let d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n let d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n let d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n let d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n let d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n let d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n let d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n let d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n let d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this._h[0] = h0;\n this._h[1] = h1;\n this._h[2] = h2;\n this._h[3] = h3;\n this._h[4] = h4;\n this._h[5] = h5;\n this._h[6] = h6;\n this._h[7] = h7;\n this._h[8] = h8;\n this._h[9] = h9;\n }\n\n finish(mac: Uint8Array, macpos = 0): this {\n const g = new Uint16Array(10);\n let c: number;\n let mask: number;\n let f: number;\n let i: number;\n\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\n }\n\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this._h[i] += c;\n c = this._h[i] >>> 13;\n this._h[i] &= 0x1fff;\n }\n this._h[0] += (c * 5);\n c = this._h[0] >>> 13;\n this._h[0] &= 0x1fff;\n this._h[1] += c;\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n this._h[2] += c;\n\n g[0] = this._h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this._h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n this._h[i] = (this._h[i] & mask) | g[i];\n }\n\n this._h[0] = ((this._h[0]) | (this._h[1] << 13)) & 0xffff;\n this._h[1] = ((this._h[1] >>> 3) | (this._h[2] << 10)) & 0xffff;\n this._h[2] = ((this._h[2] >>> 6) | (this._h[3] << 7)) & 0xffff;\n this._h[3] = ((this._h[3] >>> 9) | (this._h[4] << 4)) & 0xffff;\n this._h[4] = ((this._h[4] >>> 12) | (this._h[5] << 1) | (this._h[6] << 14)) & 0xffff;\n this._h[5] = ((this._h[6] >>> 2) | (this._h[7] << 11)) & 0xffff;\n this._h[6] = ((this._h[7] >>> 5) | (this._h[8] << 8)) & 0xffff;\n this._h[7] = ((this._h[8] >>> 8) | (this._h[9] << 5)) & 0xffff;\n\n f = this._h[0] + this._pad[0];\n this._h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this._h[i] + this._pad[i]) | 0) + (f >>> 16)) | 0;\n this._h[i] = f & 0xffff;\n }\n\n mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n\n this._finished = true;\n return this;\n }\n\n update(m: Uint8Array): this {\n let mpos = 0;\n let bytes = m.length;\n let want: number;\n\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (let i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (let i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n\n return this;\n }\n\n digest(): Uint8Array {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n let mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n }\n\n clean(): this {\n wipe(this._buffer);\n wipe(this._r);\n wipe(this._h);\n wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n }\n}\n\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nexport function oneTimeAuth(key: Uint8Array, data: Uint8Array): Uint8Array {\n const h = new Poly1305(key);\n h.update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\n\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nexport function equal(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== DIGEST_LENGTH || b.length !== DIGEST_LENGTH) {\n return false;\n }\n return constantTimeEqual(a, b);\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package random provides functions to access system's\n * cryptographically secure random byte generator.\n */\n\nimport { RandomSource } from \"./source\";\nimport { SystemRandomSource } from \"./source/system\";\nimport { readUint32LE } from \"@stablelib/binary\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport { RandomSource } from \"./source\";\n\nexport const defaultRandomSource = new SystemRandomSource();\n\nexport function randomBytes(length: number, prng: RandomSource = defaultRandomSource): Uint8Array {\n return prng.randomBytes(length);\n}\n\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nexport function randomUint32(prng: RandomSource = defaultRandomSource): number {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = readUint32LE(buf);\n\n // Clean the buffer.\n wipe(buf);\n\n return result;\n}\n\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nexport function randomString(\n length: number,\n charset = ALPHANUMERIC,\n prng: RandomSource = defaultRandomSource\n): string {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n wipe(buf);\n }\n return out;\n}\n\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nexport function randomStringForEntropy(\n bits: number,\n charset = ALPHANUMERIC,\n prng: RandomSource = defaultRandomSource\n): string {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\nimport { RandomSource } from \"./\";\n\nconst QUOTA = 65536;\n\nexport class BrowserRandomSource implements RandomSource {\n isAvailable = false;\n isInstantiated = false;\n\n private _crypto?: { getRandomValues: typeof window.crypto.getRandomValues };\n\n constructor() {\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || (self as { msCrypto?: any }).msCrypto) // IE11 has msCrypto\n : null;\n\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n\n randomBytes(length: number): Uint8Array {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\nimport { RandomSource } from \"./\";\nimport { wipe } from \"@stablelib/wipe\";\n\ndeclare function require(name: string): any;\n\nexport class NodeRandomSource implements RandomSource {\n isAvailable = false;\n isInstantiated = false;\n\n private _crypto: { randomBytes(n: number): Uint8Array } | undefined;\n\n constructor() {\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n\n randomBytes(length: number): Uint8Array {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n\n // Allocate output array.\n const out = new Uint8Array(length);\n\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n\n // Cleanup.\n wipe(buffer);\n\n return out;\n }\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\nimport { RandomSource } from \"./\";\nimport { BrowserRandomSource } from \"./browser\";\nimport { NodeRandomSource } from \"./node\";\n\nexport class SystemRandomSource implements RandomSource {\n isAvailable = false;\n name = \"\";\n private _source: RandomSource;\n\n constructor() {\n // Try browser.\n this._source = new BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n\n // If no browser source, try Node.\n this._source = new NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n\n // No sources, we're out of options.\n }\n\n randomBytes(length: number): Uint8Array {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package sha256 implements SHA-2-256 cryptographic hash function.\n */\n\nimport { SerializableHash } from \"@stablelib/hash\";\nimport { readUint32BE, writeUint32BE } from \"@stablelib/binary\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport const DIGEST_LENGTH = 32;\nexport const BLOCK_SIZE = 64;\n\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nexport class SHA256 implements SerializableHash {\n /** Length of hash output */\n readonly digestLength: number = DIGEST_LENGTH;\n\n /** Block size */\n readonly blockSize: number = BLOCK_SIZE;\n\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n protected _state = new Int32Array(8); // hash state\n private _temp = new Int32Array(64); // temporary state\n private _buffer = new Uint8Array(128); // buffer for data to hash\n private _bufferLength = 0; // number of bytes in buffer\n private _bytesHashed = 0; // number of total bytes hashed\n private _finished = false; // indicates whether the hash was finalized\n\n constructor() {\n this.reset();\n }\n\n protected _initState() {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n }\n\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n reset(): this {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n }\n\n /**\n * Cleans internal buffers and resets hash state.\n */\n clean() {\n wipe(this._buffer);\n wipe(this._temp);\n this.reset();\n }\n\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n update(data: Uint8Array, dataLength: number = data.length): this {\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n let dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n }\n\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n finish(out: Uint8Array): this {\n if (!this._finished) {\n const bytesHashed = this._bytesHashed;\n const left = this._bufferLength;\n const bitLenHi = (bytesHashed / 0x20000000) | 0;\n const bitLenLo = bytesHashed << 3;\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n\n this._buffer[left] = 0x80;\n for (let i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n\n this._finished = true;\n }\n\n for (let i = 0; i < this.digestLength / 4; i++) {\n writeUint32BE(this._state[i], out, i * 4);\n }\n\n return this;\n }\n\n /**\n * Returns the final hash digest.\n */\n digest(): Uint8Array {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n }\n\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n saveState(): SavedState {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n }\n\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n restoreState(savedState: SavedState): this {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n }\n\n /**\n * Cleans state returned by saveState().\n */\n cleanSavedState(savedState: SavedState) {\n wipe(savedState.state);\n if (savedState.buffer) {\n wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n }\n}\n\nexport type SavedState = {\n state: Int32Array;\n buffer: Uint8Array | undefined;\n bufferLength: number;\n bytesHashed: number;\n};\n\n// Constants\nconst K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\nfunction hashBlocks(w: Int32Array, v: Int32Array, p: Uint8Array, pos: number, len: number): number {\n while (len >= 64) {\n let a = v[0];\n let b = v[1];\n let c = v[2];\n let d = v[3];\n let e = v[4];\n let f = v[5];\n let g = v[6];\n let h = v[7];\n\n for (let i = 0; i < 16; i++) {\n let j = pos + i * 4;\n w[i] = readUint32BE(p, j);\n }\n\n for (let i = 16; i < 64; i++) {\n let u = w[i - 2];\n let t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n\n u = w[i - 15];\n let t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n\n for (let i = 0; i < 64; i++) {\n let t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n let t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\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\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n\nexport function hash(data: Uint8Array): Uint8Array {\n const h = new SHA256();\n h.update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package sha512 implements SHA-2-512 cryptographic hash function.\n */\n\nimport { SerializableHash } from \"@stablelib/hash\";\nimport { readUint32BE, writeUint32BE } from \"@stablelib/binary\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport const DIGEST_LENGTH = 64;\nexport const BLOCK_SIZE = 128;\n\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nexport class SHA512 implements SerializableHash {\n /** Length of hash output */\n readonly digestLength: number = DIGEST_LENGTH;\n\n /** Block size */\n readonly blockSize: number = BLOCK_SIZE;\n\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n protected _stateHi = new Int32Array(8); // hash state, high bytes\n protected _stateLo = new Int32Array(8); // hash state, low bytes\n private _tempHi = new Int32Array(16); // temporary state, high bytes\n private _tempLo = new Int32Array(16); // temporary state, low bytes\n private _buffer = new Uint8Array(256); // buffer for data to hash\n private _bufferLength = 0; // number of bytes in buffer\n private _bytesHashed = 0; // number of total bytes hashed\n private _finished = false; // indicates whether the hash was finalized\n\n constructor() {\n this.reset();\n }\n\n protected _initState() {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n }\n\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n reset(): this {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n }\n\n /**\n * Cleans internal buffers and resets hash state.\n */\n clean() {\n wipe(this._buffer);\n wipe(this._tempHi);\n wipe(this._tempLo);\n this.reset();\n }\n\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n update(data: Uint8Array, dataLength: number = data.length): this {\n if (this._finished) {\n throw new Error(\"SHA512: can't update because hash was finished.\");\n }\n let dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo,\n this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo,\n data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n }\n\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n finish(out: Uint8Array): this {\n if (!this._finished) {\n const bytesHashed = this._bytesHashed;\n const left = this._bufferLength;\n const bitLenHi = (bytesHashed / 0x20000000) | 0;\n const bitLenLo = bytesHashed << 3;\n const padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n\n this._buffer[left] = 0x80;\n for (let i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n\n this._finished = true;\n }\n\n for (let i = 0; i < this.digestLength / 8; i++) {\n writeUint32BE(this._stateHi[i], out, i * 8);\n writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n\n return this;\n }\n\n /**\n * Returns the final hash digest.\n */\n digest(): Uint8Array {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n }\n\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n saveState(): SavedState {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n }\n\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n restoreState(savedState: SavedState): this {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n }\n\n /**\n * Cleans state returned by saveState().\n */\n cleanSavedState(savedState: SavedState) {\n wipe(savedState.stateHi);\n wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n }\n}\n\nexport type SavedState = {\n stateHi: Int32Array;\n stateLo: Int32Array;\n buffer: Uint8Array | undefined;\n bufferLength: number;\n bytesHashed: number;\n};\n\n// Constants\nconst K = new Int32Array([\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\n\nfunction hashBlocks(wh: Int32Array, wl: Int32Array, hh: Int32Array, hl: Int32Array,\n m: Uint8Array, pos: number, len: number): number {\n\n let ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n let h: number, l: number;\n let th: number, tl: number;\n let a: number, b: number, c: number, d: number;\n\n while (len >= 128) {\n for (let i = 0; i < 16; i++) {\n const j = 8 * i + pos;\n wh[i] = readUint32BE(m, j);\n wl[i] = readUint32BE(m, j + 4);\n }\n for (let i = 0; i < 80; i++) {\n let bh0 = ah0;\n let bh1 = ah1;\n let bh2 = ah2;\n let bh3 = ah3;\n let bh4 = ah4;\n let bh5 = ah5;\n let bh6 = ah6;\n let bh7 = ah7;\n\n let bl0 = al0;\n let bl1 = al1;\n let bl2 = al2;\n let bl3 = al3;\n let bl4 = al4;\n let bl5 = al5;\n let bl6 = al6;\n let bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i % 16 === 15) {\n for (let j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n len -= 128;\n }\n\n return pos;\n}\n\nexport function hash(data: Uint8Array): Uint8Array {\n const h = new SHA512();\n h.update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package wipe implements functions for zeroing arrays.\n */\n\nexport type NumericArray = number[] | Uint8Array | Int8Array | Uint16Array\n | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array;\n\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nexport function wipe(array: NumericArray): NumericArray {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (let i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package x25519 implements X25519 key agreement.\n */\n\nimport { randomBytes, RandomSource } from \"@stablelib/random\";\nimport { wipe } from \"@stablelib/wipe\";\n\nexport const PUBLIC_KEY_LENGTH = 32;\nexport const SECRET_KEY_LENGTH = 32;\nexport const SHARED_KEY_LENGTH = 32;\n\n// TODO(dchest): some functions are copies of ../sign/ed25519.\n// Find a way to combine them without opening up to public.\n\n// Ported from TweetNaCl.js, which is ported from TweetNaCl\n// by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n// https://tweetnacl.js.org\n\n// TweetNaCl contributors:\n// Daniel J. Bernstein, Bernard van Gastel, Wesley Janssen,\n// Tanja Lange, Peter Schwabe, Sjaak Smetsers.\n// Public domain.\n// https://tweetnacl.cr.yp.to/\n\ntype GF = Float64Array;\n\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init?: number[]): GF {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n\n// Base point.\nconst _9 = new Uint8Array(32); _9[0] = 9;\n\nconst _121665 = gf([0xdb41, 1]);\n\nfunction car25519(o: GF) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\n\nfunction sel25519(p: GF, q: GF, b: number) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o: Uint8Array, n: GF) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\n\nfunction unpack25519(o: GF, n: Uint8Array) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\n\nfunction add(o: GF, a: GF, b: GF) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\n\nfunction sub(o: GF, a: GF, b: GF) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\n\nfunction mul(o: GF, a: GF, b: GF) {\n let v: number, c: number,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction square(o: GF, a: GF) {\n mul(o, a, a);\n}\n\nfunction inv25519(o: GF, inp: GF) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\n\nexport function scalarMult(n: Uint8Array, p: Uint8Array): Uint8Array {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n\n unpack25519(x, p);\n\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n\n a[0] = d[0] = 1;\n\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\n\nexport function scalarMultBase(n: Uint8Array): Uint8Array {\n return scalarMult(n, _9);\n}\n\nexport interface KeyPair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\nexport function generateKeyPairFromSeed(seed: Uint8Array): KeyPair {\n if (seed.length !== SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\n\nexport function generateKeyPair(prng?: RandomSource): KeyPair {\n const seed = randomBytes(32, prng);\n const result = generateKeyPairFromSeed(seed);\n wipe(seed);\n return result;\n}\n\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nexport function sharedKey(mySecretKey: Uint8Array, theirPublicKey: Uint8Array, rejectZero = false): Uint8Array {\n if (mySecretKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n\n const result = scalarMult(mySecretKey, theirPublicKey);\n\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n\n return result;\n}\n","var c1 = {\n \"chain\": \"ETH\",\n \"chainId\": 1,\n \"ens\": {\n \"registry\": \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n },\n \"explorers\": [{\n \"name\": \"etherscan\",\n \"url\": \"https://etherscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"blockscout\",\n \"url\": \"https://eth.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://ethereum.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ethereum.org\",\n \"name\": \"Ethereum Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"redFlags\": [],\n \"rpc\": [\"https://ethereum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.infura.io/v3/${INFURA_API_KEY}\", \"wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}\", \"https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}\", \"https://api.mycryptoapi.com/eth\", \"https://cloudflare-eth.com\", \"https://ethereum.publicnode.com\", \"wss://ethereum.publicnode.com\", \"https://mainnet.gateway.tenderly.co\", \"wss://mainnet.gateway.tenderly.co\", \"https://rpc.blocknative.com/boost\", \"https://rpc.flashbots.net/fast\", \"https://rpc.mevblocker.io/fullprivacy\"],\n \"shortName\": \"eth\",\n \"slip44\": 60,\n \"slug\": \"ethereum\",\n \"testnet\": false\n};\n\nvar c2 = {\n \"chain\": \"EXP\",\n \"chainId\": 2,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://expanse.tech\",\n \"name\": \"Expanse Network\",\n \"nativeCurrency\": {\n \"name\": \"Expanse Network Ether\",\n \"symbol\": \"EXP\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://expanse-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.expanse.tech\"],\n \"shortName\": \"exp\",\n \"slip44\": 40,\n \"slug\": \"expanse-network\",\n \"testnet\": false\n};\n\nvar c3 = {\n \"chain\": \"ETH\",\n \"chainId\": 3,\n \"ens\": {\n \"registry\": \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n },\n \"explorers\": [{\n \"name\": \"etherscan\",\n \"url\": \"https://ropsten.etherscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=3&address=${ADDRESS}\", \"https://faucet.ropsten.be?${ADDRESS}\"],\n \"infoURL\": \"https://github.com/ethereum/ropsten\",\n \"name\": \"Ropsten\",\n \"nativeCurrency\": {\n \"name\": \"Ropsten Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 3,\n \"rpc\": [\"https://ropsten.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ropsten.infura.io/v3/${INFURA_API_KEY}\", \"wss://ropsten.infura.io/ws/v3/${INFURA_API_KEY}\"],\n \"shortName\": \"rop\",\n \"slug\": \"ropsten\",\n \"testnet\": true,\n \"title\": \"Ethereum Testnet Ropsten\"\n};\n\nvar c4 = {\n \"chain\": \"ETH\",\n \"chainId\": 4,\n \"ens\": {\n \"registry\": \"0xe7410170f87102df0055eb195163a03b7f2bff4a\"\n },\n \"explorers\": [{\n \"name\": \"etherscan-rinkeby\",\n \"url\": \"https://rinkeby.etherscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=4&address=${ADDRESS}\", \"https://faucet.rinkeby.io\"],\n \"infoURL\": \"https://www.rinkeby.io\",\n \"name\": \"Rinkeby\",\n \"nativeCurrency\": {\n \"name\": \"Rinkeby Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 4,\n \"rpc\": [\"https://rinkeby.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rinkeby.infura.io/v3/${INFURA_API_KEY}\", \"wss://rinkeby.infura.io/ws/v3/${INFURA_API_KEY}\"],\n \"shortName\": \"rin\",\n \"slug\": \"rinkeby\",\n \"testnet\": true,\n \"title\": \"Ethereum Testnet Rinkeby\"\n};\n\nvar c5 = {\n \"chain\": \"ETH\",\n \"chainId\": 5,\n \"ens\": {\n \"registry\": \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n },\n \"explorers\": [{\n \"name\": \"etherscan-goerli\",\n \"url\": \"https://goerli.etherscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"blockscout-goerli\",\n \"url\": \"https://eth-goerli.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=5&address=${ADDRESS}\", \"https://goerli-faucet.slock.it?address=${ADDRESS}\", \"https://faucet.goerli.mudit.blog\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://goerli.net/#about\",\n \"name\": \"Goerli\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 5,\n \"redFlags\": [],\n \"rpc\": [\"https://goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli.infura.io/v3/${INFURA_API_KEY}\", \"wss://goerli.infura.io/v3/${INFURA_API_KEY}\", \"https://rpc.goerli.mudit.blog/\", \"https://ethereum-goerli.publicnode.com\", \"wss://ethereum-goerli.publicnode.com\", \"https://goerli.gateway.tenderly.co\", \"wss://goerli.gateway.tenderly.co\"],\n \"shortName\": \"gor\",\n \"slug\": \"goerli\",\n \"testnet\": true,\n \"title\": \"Ethereum Testnet Goerli\"\n};\n\nvar c6 = {\n \"chain\": \"ETC\",\n \"chainId\": 6,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://explorer.jade.builders/?network=kotti\",\n \"name\": \"Ethereum Classic Testnet Kotti\",\n \"nativeCurrency\": {\n \"name\": \"Kotti Ether\",\n \"symbol\": \"KOT\",\n \"decimals\": 18\n },\n \"networkId\": 6,\n \"rpc\": [\"https://ethereum-classic-testnet-kotti.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.ethercluster.com/kotti\"],\n \"shortName\": \"kot\",\n \"slug\": \"ethereum-classic-testnet-kotti\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c7 = {\n \"chain\": \"TCH\",\n \"chainId\": 7,\n \"explorers\": [{\n \"name\": \"Thaichain Explorer\",\n \"url\": \"https://exp.thaichain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://thaichain.io\",\n \"name\": \"ThaiChain\",\n \"nativeCurrency\": {\n \"name\": \"ThaiChain Ether\",\n \"symbol\": \"TCH\",\n \"decimals\": 18\n },\n \"networkId\": 7,\n \"rpc\": [\"https://thaichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dome.cloud\", \"https://rpc.thaichain.org\"],\n \"shortName\": \"tch\",\n \"slug\": \"thaichain\",\n \"testnet\": false\n};\n\nvar c8 = {\n \"chain\": \"UBQ\",\n \"chainId\": 8,\n \"explorers\": [{\n \"name\": \"ubiqscan\",\n \"url\": \"https://ubiqscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ubiqsmart.com\",\n \"name\": \"Ubiq\",\n \"nativeCurrency\": {\n \"name\": \"Ubiq Ether\",\n \"symbol\": \"UBQ\",\n \"decimals\": 18\n },\n \"networkId\": 8,\n \"rpc\": [\"https://ubiq.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.octano.dev\", \"https://pyrus2.ubiqscan.io\"],\n \"shortName\": \"ubq\",\n \"slip44\": 108,\n \"slug\": \"ubiq\",\n \"testnet\": false\n};\n\nvar c9 = {\n \"chain\": \"UBQ\",\n \"chainId\": 9,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://ethersocial.org\",\n \"name\": \"Ubiq Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ubiq Testnet Ether\",\n \"symbol\": \"TUBQ\",\n \"decimals\": 18\n },\n \"networkId\": 2,\n \"rpc\": [],\n \"shortName\": \"tubq\",\n \"slug\": \"ubiq-network-testnet\",\n \"testnet\": true\n};\n\nvar c10 = {\n \"chain\": \"ETH\",\n \"chainId\": 10,\n \"explorers\": [{\n \"name\": \"etherscan\",\n \"url\": \"https://optimistic.etherscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"blockscout\",\n \"url\": \"https://optimism.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://optimism.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/optimism/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://optimism.io\",\n \"name\": \"OP Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 10,\n \"redFlags\": [],\n \"rpc\": [\"https://optimism.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}\", \"https://opt-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}\", \"https://mainnet.optimism.io\", \"https://optimism.publicnode.com\", \"wss://optimism.publicnode.com\", \"https://optimism.gateway.tenderly.co\", \"wss://optimism.gateway.tenderly.co\"],\n \"shortName\": \"oeth\",\n \"slug\": \"optimism\",\n \"testnet\": false\n};\n\nvar c11 = {\n \"chain\": \"META\",\n \"chainId\": 11,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://metadium.com\",\n \"name\": \"Metadium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Metadium Mainnet Ether\",\n \"symbol\": \"META\",\n \"decimals\": 18\n },\n \"networkId\": 11,\n \"rpc\": [\"https://metadium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.metadium.com/prod\"],\n \"shortName\": \"meta\",\n \"slip44\": 916,\n \"slug\": \"metadium\",\n \"testnet\": false\n};\n\nvar c12 = {\n \"chain\": \"META\",\n \"chainId\": 12,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://metadium.com\",\n \"name\": \"Metadium Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Metadium Testnet Ether\",\n \"symbol\": \"KAL\",\n \"decimals\": 18\n },\n \"networkId\": 12,\n \"rpc\": [\"https://metadium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.metadium.com/dev\"],\n \"shortName\": \"kal\",\n \"slug\": \"metadium-testnet\",\n \"testnet\": true\n};\n\nvar c13 = {\n \"chain\": \"DIODE\",\n \"chainId\": 13,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://diode.io/staging\",\n \"name\": \"Diode Testnet Staging\",\n \"nativeCurrency\": {\n \"name\": \"Staging Diodes\",\n \"symbol\": \"sDIODE\",\n \"decimals\": 18\n },\n \"networkId\": 13,\n \"rpc\": [\"https://diode-testnet-staging.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging.diode.io:8443/\", \"wss://staging.diode.io:8443/ws\"],\n \"shortName\": \"dstg\",\n \"slug\": \"diode-testnet-staging\",\n \"testnet\": true\n};\n\nvar c14 = {\n \"chain\": \"FLR\",\n \"chainId\": 14,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://flare-explorer.flare.network\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"flarescan\",\n \"url\": \"https://flarescan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmevAevHxRkK2zVct2Eu6Y7s38YC4SmiAiw9X7473pVtmL\",\n \"width\": 382,\n \"height\": 382,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://flare.network\",\n \"name\": \"Flare Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Flare\",\n \"symbol\": \"FLR\",\n \"decimals\": 18\n },\n \"networkId\": 14,\n \"rpc\": [\"https://flare.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://14.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://flare-api.flare.network/ext/C/rpc\", \"https://flare.public-rpc.com\", \"https://rpc.ftso.au/flare\"],\n \"shortName\": \"flr\",\n \"slug\": \"flare\",\n \"testnet\": false\n};\n\nvar c15 = {\n \"chain\": \"DIODE\",\n \"chainId\": 15,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://diode.io/prenet\",\n \"name\": \"Diode Prenet\",\n \"nativeCurrency\": {\n \"name\": \"Diodes\",\n \"symbol\": \"DIODE\",\n \"decimals\": 18\n },\n \"networkId\": 15,\n \"rpc\": [\"https://diode-prenet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://prenet.diode.io:8443/\", \"wss://prenet.diode.io:8443/ws\"],\n \"shortName\": \"diode\",\n \"slug\": \"diode-prenet\",\n \"testnet\": false\n};\n\nvar c16 = {\n \"chain\": \"FLR\",\n \"chainId\": 16,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://coston-explorer.flare.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.towolabs.com\", \"https://fauceth.komputing.org?chain=16&address=${ADDRESS}\"],\n \"icon\": {\n \"url\": \"ipfs://QmW7Ljv2eLQ1poRrhJBaVWJBF1TyfZ8QYxDeELRo6sssrj\",\n \"width\": 382,\n \"height\": 382,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://flare.xyz\",\n \"name\": \"Flare Testnet Coston\",\n \"nativeCurrency\": {\n \"name\": \"Coston Flare\",\n \"symbol\": \"CFLR\",\n \"decimals\": 18\n },\n \"networkId\": 16,\n \"rpc\": [\"https://flare-testnet-coston.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://coston-api.flare.network/ext/bc/C/rpc\"],\n \"shortName\": \"cflr\",\n \"slug\": \"flare-testnet-coston\",\n \"testnet\": true\n};\n\nvar c17 = {\n \"chain\": \"TCH\",\n \"chainId\": 17,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://exp.thaifi.com\",\n \"name\": \"ThaiChain 2.0 ThaiFi\",\n \"nativeCurrency\": {\n \"name\": \"Thaifi Ether\",\n \"symbol\": \"TFI\",\n \"decimals\": 18\n },\n \"networkId\": 17,\n \"rpc\": [\"https://thaichain-2-0-thaifi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.thaifi.com\"],\n \"shortName\": \"tfi\",\n \"slug\": \"thaichain-2-0-thaifi\",\n \"testnet\": false\n};\n\nvar c18 = {\n \"chain\": \"TST\",\n \"chainId\": 18,\n \"explorers\": [{\n \"name\": \"thundercore-blockscout-testnet\",\n \"url\": \"https://explorer-testnet.thundercore.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-testnet.thundercore.com\"],\n \"infoURL\": \"https://thundercore.com\",\n \"name\": \"ThunderCore Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ThunderCore Testnet Token\",\n \"symbol\": \"TST\",\n \"decimals\": 18\n },\n \"networkId\": 18,\n \"rpc\": [\"https://thundercore-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.thundercore.com\"],\n \"shortName\": \"TST\",\n \"slug\": \"thundercore-testnet\",\n \"testnet\": true\n};\n\nvar c19 = {\n \"chain\": \"SGB\",\n \"chainId\": 19,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://songbird-explorer.flare.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXyvnrZY8FUxSULfnKKA99sAEkjAHtvhRx5WeHixgaEdu\",\n \"width\": 382,\n \"height\": 382,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://flare.xyz\",\n \"name\": \"Songbird Canary-Network\",\n \"nativeCurrency\": {\n \"name\": \"Songbird\",\n \"symbol\": \"SGB\",\n \"decimals\": 18\n },\n \"networkId\": 19,\n \"rpc\": [\"https://songbird-canary-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://19.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://songbird-api.flare.network/ext/C/rpc\", \"https://sgb.ftso.com.au/ext/bc/C/rpc\", \"https://sgb.lightft.so/rpc\", \"https://sgb-rpc.ftso.eu\", \"https://rpc.ftso.au/songbird\"],\n \"shortName\": \"sgb\",\n \"slug\": \"songbird-canary-network\",\n \"testnet\": false\n};\n\nvar c20 = {\n \"chain\": \"ETH\",\n \"chainId\": 20,\n \"explorers\": [{\n \"name\": \"elastos esc explorer\",\n \"url\": \"https://esc.elastos.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.elastos.org/\",\n \"name\": \"Elastos Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"Elastos\",\n \"symbol\": \"ELA\",\n \"decimals\": 18\n },\n \"networkId\": 20,\n \"rpc\": [\"https://elastos-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.elastos.io/eth\"],\n \"shortName\": \"esc\",\n \"slug\": \"elastos-smart-chain\",\n \"testnet\": false\n};\n\nvar c21 = {\n \"chain\": \"ETH\",\n \"chainId\": 21,\n \"explorers\": [{\n \"name\": \"elastos esc explorer\",\n \"url\": \"https://esc-testnet.elastos.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://esc-faucet.elastos.io/\"],\n \"infoURL\": \"https://www.elastos.org/\",\n \"name\": \"Elastos Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Elastos\",\n \"symbol\": \"tELA\",\n \"decimals\": 18\n },\n \"networkId\": 21,\n \"rpc\": [\"https://elastos-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://21.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api-testnet.elastos.io/eth\"],\n \"shortName\": \"esct\",\n \"slug\": \"elastos-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c22 = {\n \"chain\": \"ETH\",\n \"chainId\": 22,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.elastos.org/\",\n \"name\": \"ELA-DID-Sidechain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Elastos\",\n \"symbol\": \"ELA\",\n \"decimals\": 18\n },\n \"networkId\": 22,\n \"rpc\": [],\n \"shortName\": \"eladid\",\n \"slug\": \"ela-did-sidechain\",\n \"testnet\": false\n};\n\nvar c23 = {\n \"chain\": \"ETH\",\n \"chainId\": 23,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://elaeth.io/\",\n \"name\": \"ELA-DID-Sidechain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Elastos\",\n \"symbol\": \"tELA\",\n \"decimals\": 18\n },\n \"networkId\": 23,\n \"rpc\": [],\n \"shortName\": \"eladidt\",\n \"slug\": \"ela-did-sidechain-testnet\",\n \"testnet\": true\n};\n\nvar c24 = {\n \"chain\": \"KAI\",\n \"chainId\": 24,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXoHaZXJevc59GuzEgBhwRSH6kio1agMRvL8bD93pARRV\",\n \"width\": 297,\n \"height\": 297,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kardiachain.io\",\n \"name\": \"KardiaChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"KardiaChain\",\n \"symbol\": \"KAI\",\n \"decimals\": 18\n },\n \"networkId\": 0,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://kardiachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://24.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.kardiachain.io\"],\n \"shortName\": \"kardiachain\",\n \"slug\": \"kardiachain\",\n \"testnet\": false\n};\n\nvar c25 = {\n \"chain\": \"CRO\",\n \"chainId\": 25,\n \"explorers\": [{\n \"name\": \"Cronos Explorer\",\n \"url\": \"https://explorer.cronos.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://cronos.org/\",\n \"name\": \"Cronos Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Cronos\",\n \"symbol\": \"CRO\",\n \"decimals\": 18\n },\n \"networkId\": 25,\n \"rpc\": [\"https://cronos.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://25.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.cronos.org\", \"https://cronos-evm.publicnode.com\", \"wss://cronos-evm.publicnode.com\"],\n \"shortName\": \"cro\",\n \"slug\": \"cronos\",\n \"testnet\": false\n};\n\nvar c26 = {\n \"chain\": \"genesis\",\n \"chainId\": 26,\n \"explorers\": [{\n \"name\": \"Genesis L1 testnet explorer\",\n \"url\": \"https://testnet.genesisl1.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.genesisl1.com\",\n \"name\": \"Genesis L1 testnet\",\n \"nativeCurrency\": {\n \"name\": \"L1 testcoin\",\n \"symbol\": \"L1test\",\n \"decimals\": 18\n },\n \"networkId\": 26,\n \"rpc\": [\"https://genesis-l1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://26.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testrpc.genesisl1.org\"],\n \"shortName\": \"L1test\",\n \"slug\": \"genesis-l1-testnet\",\n \"testnet\": true\n};\n\nvar c27 = {\n \"chain\": \"SHIB\",\n \"chainId\": 27,\n \"explorers\": [{\n \"name\": \"Shiba Explorer\",\n \"url\": \"https://exp.shibchain.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://shibchain.org\",\n \"name\": \"ShibaChain\",\n \"nativeCurrency\": {\n \"name\": \"SHIBA INU COIN\",\n \"symbol\": \"SHIB\",\n \"decimals\": 18\n },\n \"networkId\": 27,\n \"rpc\": [\"https://shibachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://27.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.shibchain.org\"],\n \"shortName\": \"shib\",\n \"slug\": \"shibachain\",\n \"testnet\": false\n};\n\nvar c28 = {\n \"chain\": \"ETH\",\n \"chainId\": 28,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://blockexplorer.rinkeby.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba Network Rinkeby Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 28,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-4\",\n \"bridges\": [{\n \"url\": \"https://gateway.rinkeby.boba.network\"\n }]\n },\n \"rpc\": [\"https://boba-network-rinkeby-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://28.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rinkeby.boba.network/\"],\n \"shortName\": \"BobaRinkeby\",\n \"slug\": \"boba-network-rinkeby-testnet\",\n \"testnet\": true\n};\n\nvar c29 = {\n \"chain\": \"genesis\",\n \"chainId\": 29,\n \"explorers\": [{\n \"name\": \"Genesis L1 blockchain explorer\",\n \"url\": \"https://explorer.genesisl1.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.genesisl1.com\",\n \"name\": \"Genesis L1\",\n \"nativeCurrency\": {\n \"name\": \"L1 coin\",\n \"symbol\": \"L1\",\n \"decimals\": 18\n },\n \"networkId\": 29,\n \"rpc\": [\"https://genesis-l1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://29.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.genesisl1.org\"],\n \"shortName\": \"L1\",\n \"slug\": \"genesis-l1\",\n \"testnet\": false\n};\n\nvar c30 = {\n \"chain\": \"Rootstock\",\n \"chainId\": 30,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://rootstock.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Rootstock Explorer\",\n \"url\": \"https://explorer.rsk.co\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigidzbf22dnpmmlfxv6u7oifq6ln33j4n57ox4ipiproalufrheym\",\n \"width\": 3000,\n \"height\": 3325,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rootstock.io\",\n \"name\": \"Rootstock Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Smart Bitcoin\",\n \"symbol\": \"RBTC\",\n \"decimals\": 18\n },\n \"networkId\": 30,\n \"rpc\": [\"https://rootstock.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://30.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://public-node.rsk.co\", \"https://mycrypto.rsk.co\"],\n \"shortName\": \"rsk\",\n \"slip44\": 137,\n \"slug\": \"rootstock\",\n \"testnet\": false\n};\n\nvar c31 = {\n \"chain\": \"Rootstock\",\n \"chainId\": 31,\n \"explorers\": [{\n \"name\": \"RSK Testnet Explorer\",\n \"url\": \"https://explorer.testnet.rsk.co\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.rsk.co/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreigidzbf22dnpmmlfxv6u7oifq6ln33j4n57ox4ipiproalufrheym\",\n \"width\": 3000,\n \"height\": 3325,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rootstock.io\",\n \"name\": \"Rootstock Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Smart Bitcoin\",\n \"symbol\": \"tRBTC\",\n \"decimals\": 18\n },\n \"networkId\": 31,\n \"rpc\": [\"https://rootstock-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://31.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://public-node.testnet.rsk.co\", \"https://mycrypto.testnet.rsk.co\"],\n \"shortName\": \"trsk\",\n \"slug\": \"rootstock-testnet\",\n \"testnet\": true\n};\n\nvar c32 = {\n \"chain\": \"GooD\",\n \"chainId\": 32,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.goodata.org\",\n \"name\": \"GoodData Testnet\",\n \"nativeCurrency\": {\n \"name\": \"GoodData Testnet Ether\",\n \"symbol\": \"GooD\",\n \"decimals\": 18\n },\n \"networkId\": 32,\n \"rpc\": [\"https://gooddata-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://32.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test2.goodata.io\"],\n \"shortName\": \"GooDT\",\n \"slug\": \"gooddata-testnet\",\n \"testnet\": true\n};\n\nvar c33 = {\n \"chain\": \"GooD\",\n \"chainId\": 33,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.goodata.org\",\n \"name\": \"GoodData Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GoodData Mainnet Ether\",\n \"symbol\": \"GooD\",\n \"decimals\": 18\n },\n \"networkId\": 33,\n \"rpc\": [\"https://gooddata.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.goodata.io\"],\n \"shortName\": \"GooD\",\n \"slug\": \"gooddata\",\n \"testnet\": false\n};\n\nvar c34 = {\n \"chain\": \"SCAI\",\n \"chainId\": 34,\n \"explorers\": [{\n \"name\": \"SecureChain Mainnet\",\n \"url\": \"https://explorer.securechain.ai\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.securechain.ai\"],\n \"icon\": {\n \"url\": \"ipfs://Qme2Z8VFYjhHGfLQPBnfseNpEdRfmTDy7VXqrdH4AHETJf\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://securechain.ai\",\n \"name\": \"SecureChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SecureChain\",\n \"symbol\": \"SCAI\",\n \"decimals\": 18\n },\n \"networkId\": 34,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://securechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://34.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.scai.network\"],\n \"shortName\": \"scai\",\n \"slug\": \"securechain\",\n \"testnet\": false\n};\n\nvar c35 = {\n \"chain\": \"TBWG\",\n \"chainId\": 35,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://tbwg.io\",\n \"name\": \"TBWG Chain\",\n \"nativeCurrency\": {\n \"name\": \"TBWG Ether\",\n \"symbol\": \"TBG\",\n \"decimals\": 18\n },\n \"networkId\": 35,\n \"rpc\": [\"https://tbwg-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tbwg.io\"],\n \"shortName\": \"tbwg\",\n \"slug\": \"tbwg-chain\",\n \"testnet\": false\n};\n\nvar c36 = {\n \"chain\": \"Dxchain\",\n \"chainId\": 36,\n \"explorers\": [{\n \"name\": \"dxscan\",\n \"url\": \"https://dxscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYBup5bWoBfkaHntbcgW8Ji7ncad7f53deJ4Q55z4PNQs\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.dxchain.com/\",\n \"name\": \"Dxchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Dxchain\",\n \"symbol\": \"DX\",\n \"decimals\": 18\n },\n \"networkId\": 36,\n \"rpc\": [\"https://dxchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://36.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.dxchain.com\"],\n \"shortName\": \"dx\",\n \"slug\": \"dxchain\",\n \"testnet\": false\n};\n\nvar c37 = {\n \"chain\": \"XPLA\",\n \"chainId\": 37,\n \"explorers\": [{\n \"name\": \"XPLA Explorer\",\n \"url\": \"https://explorer.xpla.io/mainnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmf4GoxfpeA5VGqu7KP5eyv1WKaCpNDbvMxq1MjQBwFWxq\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xpla.io\",\n \"name\": \"Xpla Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"XPLA\",\n \"symbol\": \"XPLA\",\n \"decimals\": 18\n },\n \"networkId\": 37,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://xpla.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://37.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dimension-evm-rpc.xpla.dev\"],\n \"shortName\": \"xpla\",\n \"slug\": \"xpla\",\n \"testnet\": false\n};\n\nvar c38 = {\n \"chain\": \"VAL\",\n \"chainId\": 38,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://valorbit.com\",\n \"name\": \"Valorbit\",\n \"nativeCurrency\": {\n \"name\": \"Valorbit\",\n \"symbol\": \"VAL\",\n \"decimals\": 18\n },\n \"networkId\": 38,\n \"rpc\": [\"https://valorbit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://38.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.valorbit.com/v2\"],\n \"shortName\": \"val\",\n \"slip44\": 538,\n \"slug\": \"valorbit\",\n \"testnet\": false\n};\n\nvar c39 = {\n \"chain\": \"u2u\",\n \"chainId\": 39,\n \"explorers\": [{\n \"name\": \"U2U Explorer\",\n \"url\": \"https://u2uscan.xyz\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmcW64RgqQVHnNbVFyfaMNKt7dJvFqEbfEHZmeyeK8dpEa\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcW64RgqQVHnNbVFyfaMNKt7dJvFqEbfEHZmeyeK8dpEa\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://uniultra.xyz\",\n \"name\": \"U2U Solaris Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Unicorn Ultra\",\n \"symbol\": \"U2U\",\n \"decimals\": 18\n },\n \"networkId\": 39,\n \"rpc\": [\"https://u2u-solaris.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://39.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.uniultra.xyz\"],\n \"shortName\": \"u2u\",\n \"slug\": \"u2u-solaris\",\n \"testnet\": false\n};\n\nvar c40 = {\n \"chain\": \"TLOS\",\n \"chainId\": 40,\n \"explorers\": [{\n \"name\": \"teloscan\",\n \"url\": \"https://teloscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdkgQDtDedsNNth3ZVgWfwRZPCePLA13MtLvV4CEYSuTR/TLOS.png\",\n \"width\": 228,\n \"height\": 228,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://telos.net\",\n \"name\": \"Telos EVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Telos\",\n \"symbol\": \"TLOS\",\n \"decimals\": 18\n },\n \"networkId\": 40,\n \"redFlags\": [],\n \"rpc\": [\"https://telos-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://40.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.telos.net/evm\"],\n \"shortName\": \"TelosEVM\",\n \"slug\": \"telos-evm\",\n \"testnet\": false\n};\n\nvar c41 = {\n \"chain\": \"TLOS\",\n \"chainId\": 41,\n \"explorers\": [{\n \"name\": \"teloscan\",\n \"url\": \"https://testnet.teloscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://app.telos.net/testnet/developers\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdkgQDtDedsNNth3ZVgWfwRZPCePLA13MtLvV4CEYSuTR/TLOS.png\",\n \"width\": 228,\n \"height\": 228,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://telos.net\",\n \"name\": \"Telos EVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Telos\",\n \"symbol\": \"TLOS\",\n \"decimals\": 18\n },\n \"networkId\": 41,\n \"redFlags\": [],\n \"rpc\": [\"https://telos-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://41.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.telos.net/evm\"],\n \"shortName\": \"TelosEVMTestnet\",\n \"slug\": \"telos-evm-testnet\",\n \"testnet\": true\n};\n\nvar c42 = {\n \"chain\": \"LUKSO\",\n \"chainId\": 42,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.execution.mainnet.lukso.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qmeg9sFF5tAGi6MCx7YjtVHW6a23zqvHRK1xwzSdp9iE7z\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lukso.network\",\n \"name\": \"LUKSO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LUKSO\",\n \"symbol\": \"LYX\",\n \"decimals\": 18\n },\n \"networkId\": 42,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://lukso.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mainnet.lukso.network\", \"wss://ws-rpc.mainnet.lukso.network\"],\n \"shortName\": \"lukso\",\n \"slug\": \"lukso\",\n \"testnet\": false\n};\n\nvar c43 = {\n \"chain\": \"pangolin\",\n \"chainId\": 43,\n \"explorers\": [{\n \"name\": \"subscan\",\n \"url\": \"https://pangolin.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://docs.darwinia.network/pangolin-testnet-1e9ac8b09e874e8abd6a7f18c096ca6a\"],\n \"infoURL\": \"https://darwinia.network/\",\n \"name\": \"Darwinia Pangolin Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Pangolin Network Native Token\",\n \"symbol\": \"PRING\",\n \"decimals\": 18\n },\n \"networkId\": 43,\n \"rpc\": [\"https://darwinia-pangolin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pangolin-rpc.darwinia.network\"],\n \"shortName\": \"pangolin\",\n \"slug\": \"darwinia-pangolin-testnet\",\n \"testnet\": true\n};\n\nvar c44 = {\n \"chain\": \"crab\",\n \"chainId\": 44,\n \"explorers\": [{\n \"name\": \"subscan\",\n \"url\": \"https://crab.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://crab.network/\",\n \"name\": \"Crab Network\",\n \"nativeCurrency\": {\n \"name\": \"Crab Network Native Token\",\n \"symbol\": \"CRAB\",\n \"decimals\": 18\n },\n \"networkId\": 44,\n \"rpc\": [\"https://crab-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://44.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://crab-rpc.darwinia.network\", \"https://crab-rpc.darwiniacommunitydao.xyz\", \"https://darwiniacrab-rpc.dwellir.com\"],\n \"shortName\": \"crab\",\n \"slug\": \"crab-network\",\n \"testnet\": false\n};\n\nvar c45 = {\n \"chain\": \"pangoro\",\n \"chainId\": 45,\n \"explorers\": [{\n \"name\": \"subscan\",\n \"url\": \"https://pangoro.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://docs.darwinia.network/pangoro-testnet-70cfec5dc9ca42759959ba3803edaec2\"],\n \"infoURL\": \"https://darwinia.network/\",\n \"name\": \"Darwinia Pangoro Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Pangoro Network Native Token\",\n \"symbol\": \"ORING\",\n \"decimals\": 18\n },\n \"networkId\": 45,\n \"rpc\": [\"https://darwinia-pangoro-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://45.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pangoro-rpc.darwinia.network\"],\n \"shortName\": \"pangoro\",\n \"slug\": \"darwinia-pangoro-testnet\",\n \"testnet\": true\n};\n\nvar c46 = {\n \"chain\": \"darwinia\",\n \"chainId\": 46,\n \"explorers\": [{\n \"name\": \"subscan\",\n \"url\": \"https://darwinia.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://darwinia.network/\",\n \"name\": \"Darwinia Network\",\n \"nativeCurrency\": {\n \"name\": \"Darwinia Network Native Token\",\n \"symbol\": \"RING\",\n \"decimals\": 18\n },\n \"networkId\": 46,\n \"rpc\": [\"https://darwinia-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://46.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.darwinia.network\", \"https://darwinia-rpc.darwiniacommunitydao.xyz\", \"https://darwinia-rpc.dwellir.com\"],\n \"shortName\": \"darwinia\",\n \"slug\": \"darwinia-network\",\n \"testnet\": false\n};\n\nvar c47 = {\n \"chain\": \"XPLA\",\n \"chainId\": 47,\n \"explorers\": [{\n \"name\": \"XPLA Explorer\",\n \"url\": \"https://explorer.xpla.io/testnet\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.xpla.io/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbvEAKZfgJckEziU3mpCwz6jqMeWRcLgd8TNsWA7g8sD9/xpla.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xpla.io/\",\n \"name\": \"Xpla Testnet\",\n \"nativeCurrency\": {\n \"name\": \"XPLA\",\n \"symbol\": \"XPLA\",\n \"decimals\": 18\n },\n \"networkId\": 47,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://xpla-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://47.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cube-evm-rpc.xpla.dev\"],\n \"shortName\": \"xpla-test\",\n \"slug\": \"xpla-testnet\",\n \"testnet\": true\n};\n\nvar c48 = {\n \"chain\": \"ETMP\",\n \"chainId\": 48,\n \"explorers\": [{\n \"name\": \"etmpscan\",\n \"url\": \"https://etmscan.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://etm.network\",\n \"name\": \"Ennothem Mainnet Proterozoic\",\n \"nativeCurrency\": {\n \"name\": \"Ennothem\",\n \"symbol\": \"ETMP\",\n \"decimals\": 18\n },\n \"networkId\": 48,\n \"rpc\": [\"https://ennothem-proterozoic.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://48.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.etm.network\"],\n \"shortName\": \"etmp\",\n \"slug\": \"ennothem-proterozoic\",\n \"testnet\": false\n};\n\nvar c49 = {\n \"chain\": \"ETMP\",\n \"chainId\": 49,\n \"explorers\": [{\n \"name\": \"etmp\",\n \"url\": \"https://pioneer.etmscan.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://etm.network\",\n \"name\": \"Ennothem Testnet Pioneer\",\n \"nativeCurrency\": {\n \"name\": \"Ennothem\",\n \"symbol\": \"ETMP\",\n \"decimals\": 18\n },\n \"networkId\": 49,\n \"rpc\": [\"https://ennothem-testnet-pioneer.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://49.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.pioneer.etm.network\"],\n \"shortName\": \"etmpTest\",\n \"slug\": \"ennothem-testnet-pioneer\",\n \"testnet\": true\n};\n\nvar c50 = {\n \"chain\": \"XDC\",\n \"chainId\": 50,\n \"explorers\": [{\n \"name\": \"xdcscan\",\n \"url\": \"https://xdcscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmPzVFs16GwaD8LAcGFLCNXzEK8BHFKNXeM3nmBpnq9xy3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"blocksscan\",\n \"url\": \"https://xdc.blocksscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmPzVFs16GwaD8LAcGFLCNXzEK8BHFKNXeM3nmBpnq9xy3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeRq7pabiJE2n1xU3Y5Mb4TZSX9kQ74x7a3P2Z4PqcMRX\",\n \"width\": 1450,\n \"height\": 1450,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xinfin.org\",\n \"name\": \"XDC Network\",\n \"nativeCurrency\": {\n \"name\": \"XinFin\",\n \"symbol\": \"XDC\",\n \"decimals\": 18\n },\n \"networkId\": 50,\n \"rpc\": [\"https://xdc-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://50.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://erpc.xinfin.network\", \"https://rpc.xinfin.network\", \"https://rpc1.xinfin.network\", \"https://rpc-xdc.icecreamswap.com\"],\n \"shortName\": \"xdc\",\n \"slug\": \"xdc-network\",\n \"testnet\": false\n};\n\nvar c51 = {\n \"chain\": \"XDC\",\n \"chainId\": 51,\n \"explorers\": [{\n \"name\": \"xdcscan\",\n \"url\": \"https://apothem.xinfinscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmPzVFs16GwaD8LAcGFLCNXzEK8BHFKNXeM3nmBpnq9xy3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"blocksscan\",\n \"url\": \"https://apothem.blocksscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmPzVFs16GwaD8LAcGFLCNXzEK8BHFKNXeM3nmBpnq9xy3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.apothem.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmeRq7pabiJE2n1xU3Y5Mb4TZSX9kQ74x7a3P2Z4PqcMRX\",\n \"width\": 1450,\n \"height\": 1450,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xinfin.org\",\n \"name\": \"XDC Apothem Network\",\n \"nativeCurrency\": {\n \"name\": \"XinFin\",\n \"symbol\": \"TXDC\",\n \"decimals\": 18\n },\n \"networkId\": 51,\n \"rpc\": [\"https://xdc-apothem-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://51.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.apothem.network\", \"https://erpc.apothem.network\"],\n \"shortName\": \"txdc\",\n \"slug\": \"xdc-apothem-network\",\n \"testnet\": false\n};\n\nvar c52 = {\n \"chain\": \"CSC\",\n \"chainId\": 52,\n \"explorers\": [{\n \"name\": \"coinexscan\",\n \"url\": \"https://www.coinex.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.coinex.org/\",\n \"name\": \"CoinEx Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CoinEx Chain Native Token\",\n \"symbol\": \"cet\",\n \"decimals\": 18\n },\n \"networkId\": 52,\n \"rpc\": [\"https://coinex-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://52.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.coinex.net\"],\n \"shortName\": \"cet\",\n \"slug\": \"coinex-smart-chain\",\n \"testnet\": false\n};\n\nvar c53 = {\n \"chain\": \"CSC\",\n \"chainId\": 53,\n \"explorers\": [{\n \"name\": \"coinexscan\",\n \"url\": \"https://testnet.coinex.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.coinex.org/\",\n \"name\": \"CoinEx Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CoinEx Chain Test Native Token\",\n \"symbol\": \"cett\",\n \"decimals\": 18\n },\n \"networkId\": 53,\n \"rpc\": [\"https://coinex-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://53.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.coinex.net/\"],\n \"shortName\": \"tcet\",\n \"slug\": \"coinex-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c54 = {\n \"chain\": \"OPENPIECE\",\n \"chainId\": 54,\n \"explorers\": [{\n \"name\": \"Belly Scan\",\n \"url\": \"https://bellyscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVTahJkdSH3HPYsJMK2GmqfWZjLyxE7cXy1aHEnHU3vp2\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cryptopiece.online\",\n \"name\": \"Openpiece Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Belly\",\n \"symbol\": \"BELLY\",\n \"decimals\": 18\n },\n \"networkId\": 54,\n \"rpc\": [\"https://openpiece.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://54.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.openpiece.io\"],\n \"shortName\": \"OP\",\n \"slug\": \"openpiece\",\n \"testnet\": false\n};\n\nvar c55 = {\n \"chain\": \"ZYX\",\n \"chainId\": 55,\n \"explorers\": [{\n \"name\": \"zyxscan\",\n \"url\": \"https://zyxscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://zyx.network/\",\n \"name\": \"Zyx Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Zyx\",\n \"symbol\": \"ZYX\",\n \"decimals\": 18\n },\n \"networkId\": 55,\n \"rpc\": [\"https://zyx.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://55.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-1.zyx.network/\", \"https://rpc-2.zyx.network/\", \"https://rpc-3.zyx.network/\", \"https://rpc-4.zyx.network/\", \"https://rpc-5.zyx.network/\", \"https://rpc-6.zyx.network/\"],\n \"shortName\": \"ZYX\",\n \"slug\": \"zyx\",\n \"testnet\": false\n};\n\nvar c56 = {\n \"chain\": \"BSC\",\n \"chainId\": 56,\n \"explorers\": [{\n \"name\": \"bscscan\",\n \"url\": \"https://bscscan.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://bnb.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/binance-coin/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bnbchain.org/en\",\n \"name\": \"BNB Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BNB Chain Native Token\",\n \"symbol\": \"BNB\",\n \"decimals\": 18\n },\n \"networkId\": 56,\n \"redFlags\": [],\n \"rpc\": [\"https://binance.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://56.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bsc-dataseed1.bnbchain.org\", \"https://bsc-dataseed2.bnbchain.org\", \"https://bsc-dataseed3.bnbchain.org\", \"https://bsc-dataseed4.bnbchain.org\", \"https://bsc-dataseed1.defibit.io\", \"https://bsc-dataseed2.defibit.io\", \"https://bsc-dataseed3.defibit.io\", \"https://bsc-dataseed4.defibit.io\", \"https://bsc-dataseed1.ninicoin.io\", \"https://bsc-dataseed2.ninicoin.io\", \"https://bsc-dataseed3.ninicoin.io\", \"https://bsc-dataseed4.ninicoin.io\", \"https://bsc.publicnode.com\", \"wss://bsc.publicnode.com\", \"wss://bsc-ws-node.nariox.org\"],\n \"shortName\": \"bnb\",\n \"slip44\": 714,\n \"slug\": \"binance\",\n \"testnet\": false\n};\n\nvar c57 = {\n \"chain\": \"SYS\",\n \"chainId\": 57,\n \"explorers\": [{\n \"name\": \"Syscoin Block Explorer\",\n \"url\": \"https://explorer.syscoin.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.syscoin.org\"],\n \"infoURL\": \"https://www.syscoin.org\",\n \"name\": \"Syscoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Syscoin\",\n \"symbol\": \"SYS\",\n \"decimals\": 18\n },\n \"networkId\": 57,\n \"rpc\": [\"https://syscoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://57.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.syscoin.org\", \"https://rpc.ankr.com/syscoin/${ANKR_API_KEY}\", \"https://syscoin.public-rpc.com\", \"wss://rpc.syscoin.org/wss\", \"https://syscoin-evm.publicnode.com\", \"wss://syscoin-evm.publicnode.com\"],\n \"shortName\": \"sys\",\n \"slug\": \"syscoin\",\n \"testnet\": false\n};\n\nvar c58 = {\n \"chain\": \"Ontology\",\n \"chainId\": 58,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.ont.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigmvn6spvbiirtutowpq6jmetevbxoof5plzixjoerbeswy4htfb4\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ont.io/\",\n \"name\": \"Ontology Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ONG\",\n \"symbol\": \"ONG\",\n \"decimals\": 18\n },\n \"networkId\": 58,\n \"rpc\": [\"https://ontology.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://58.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://dappnode1.ont.io:20339\", \"http://dappnode2.ont.io:20339\", \"http://dappnode3.ont.io:20339\", \"http://dappnode4.ont.io:20339\", \"https://dappnode1.ont.io:10339\", \"https://dappnode2.ont.io:10339\", \"https://dappnode3.ont.io:10339\", \"https://dappnode4.ont.io:10339\"],\n \"shortName\": \"OntologyMainnet\",\n \"slug\": \"ontology\",\n \"testnet\": false\n};\n\nvar c59 = {\n \"chain\": \"EOS\",\n \"chainId\": 59,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://eosargentina.io\",\n \"name\": \"EOS EVM Legacy\",\n \"nativeCurrency\": {\n \"name\": \"EOS\",\n \"symbol\": \"EOS\",\n \"decimals\": 18\n },\n \"networkId\": 59,\n \"rpc\": [\"https://eos-evm-legacy.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://59.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.eosargentina.io\"],\n \"shortName\": \"eos-legacy\",\n \"slug\": \"eos-evm-legacy\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c60 = {\n \"chain\": \"GO\",\n \"chainId\": 60,\n \"explorers\": [{\n \"name\": \"GoChain Explorer\",\n \"url\": \"https://explorer.gochain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://gochain.io\",\n \"name\": \"GoChain\",\n \"nativeCurrency\": {\n \"name\": \"GoChain Ether\",\n \"symbol\": \"GO\",\n \"decimals\": 18\n },\n \"networkId\": 60,\n \"rpc\": [\"https://gochain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://60.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.gochain.io\"],\n \"shortName\": \"go\",\n \"slip44\": 6060,\n \"slug\": \"gochain\",\n \"testnet\": false\n};\n\nvar c61 = {\n \"chain\": \"ETC\",\n \"chainId\": 61,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/etc/mainnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"infoURL\": \"https://ethereumclassic.org\",\n \"name\": \"Ethereum Classic Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ethereum Classic Ether\",\n \"symbol\": \"ETC\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://ethereum-classic.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://61.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://etc.rivet.link\", \"https://etc.etcdesktop.com\", \"https://etc.mytokenpocket.vip\"],\n \"shortName\": \"etc\",\n \"slip44\": 61,\n \"slug\": \"ethereum-classic\",\n \"testnet\": false\n};\n\nvar c62 = {\n \"chain\": \"ETC\",\n \"chainId\": 62,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://ethereumclassic.org\",\n \"name\": \"Ethereum Classic Testnet Morden\",\n \"nativeCurrency\": {\n \"name\": \"Ethereum Classic Testnet Ether\",\n \"symbol\": \"TETC\",\n \"decimals\": 18\n },\n \"networkId\": 2,\n \"rpc\": [],\n \"shortName\": \"tetc\",\n \"slug\": \"ethereum-classic-testnet-morden\",\n \"testnet\": true\n};\n\nvar c63 = {\n \"chain\": \"ETC\",\n \"chainId\": 63,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/etc/mordor\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://mordor.canhaz.net/\", \"https://easy.hebeswap.com/#/faucet\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"infoURL\": \"https://github.com/eth-classic/mordor/\",\n \"name\": \"Ethereum Classic Testnet Mordor\",\n \"nativeCurrency\": {\n \"name\": \"Mordor Classic Testnet Ether\",\n \"symbol\": \"METC\",\n \"decimals\": 18\n },\n \"networkId\": 7,\n \"rpc\": [\"https://ethereum-classic-testnet-mordor.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://63.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mordor.etccooperative.org\"],\n \"shortName\": \"metc\",\n \"slip44\": 63,\n \"slug\": \"ethereum-classic-testnet-mordor\",\n \"testnet\": true\n};\n\nvar c64 = {\n \"chain\": \"ELLA\",\n \"chainId\": 64,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://ellaism.org\",\n \"name\": \"Ellaism\",\n \"nativeCurrency\": {\n \"name\": \"Ellaism Ether\",\n \"symbol\": \"ELLA\",\n \"decimals\": 18\n },\n \"networkId\": 64,\n \"rpc\": [\"https://ellaism.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://64.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc.ellaism.org\"],\n \"shortName\": \"ellaism\",\n \"slip44\": 163,\n \"slug\": \"ellaism\",\n \"testnet\": false\n};\n\nvar c65 = {\n \"chain\": \"okexchain\",\n \"chainId\": 65,\n \"explorers\": [{\n \"name\": \"OKLink\",\n \"url\": \"https://www.oklink.com/okexchain-test\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.okex.com/drawdex\"],\n \"infoURL\": \"https://www.okex.com/okexchain\",\n \"name\": \"OKExChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OKExChain Global Utility Token in testnet\",\n \"symbol\": \"OKT\",\n \"decimals\": 18\n },\n \"networkId\": 65,\n \"rpc\": [\"https://okexchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://65.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://exchaintestrpc.okex.org\"],\n \"shortName\": \"tokt\",\n \"slug\": \"okexchain-testnet\",\n \"testnet\": true\n};\n\nvar c66 = {\n \"chain\": \"okxchain\",\n \"chainId\": 66,\n \"explorers\": [{\n \"name\": \"OKLink\",\n \"url\": \"https://www.oklink.com/en/okc\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.okex.com/okc\",\n \"name\": \"OKXChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OKXChain Global Utility Token\",\n \"symbol\": \"OKT\",\n \"decimals\": 18\n },\n \"networkId\": 66,\n \"rpc\": [\"https://okxchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://66.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://exchainrpc.okex.org\", \"https://okc-mainnet.gateway.pokt.network/v1/lb/6275309bea1b320039c893ff\"],\n \"shortName\": \"okt\",\n \"slug\": \"okxchain\",\n \"testnet\": false\n};\n\nvar c67 = {\n \"chain\": \"DBM\",\n \"chainId\": 67,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"http://test.dbmbp.com\",\n \"name\": \"DBChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DBChain Testnet\",\n \"symbol\": \"DBM\",\n \"decimals\": 18\n },\n \"networkId\": 67,\n \"rpc\": [\"https://dbchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://67.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://test-rpc.dbmbp.com\"],\n \"shortName\": \"dbm\",\n \"slug\": \"dbchain-testnet\",\n \"testnet\": true\n};\n\nvar c68 = {\n \"chain\": \"SOTER\",\n \"chainId\": 68,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.soterone.com\",\n \"name\": \"SoterOne Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SoterOne Mainnet Ether\",\n \"symbol\": \"SOTER\",\n \"decimals\": 18\n },\n \"networkId\": 68,\n \"rpc\": [\"https://soterone.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://68.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.soter.one\"],\n \"shortName\": \"SO1\",\n \"slug\": \"soterone\",\n \"testnet\": false\n};\n\nvar c69 = {\n \"chain\": \"ETH\",\n \"chainId\": 69,\n \"explorers\": [{\n \"name\": \"etherscan\",\n \"url\": \"https://kovan-optimistic.etherscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=69&address=${ADDRESS}\"],\n \"infoURL\": \"https://optimism.io\",\n \"name\": \"Optimism Kovan\",\n \"nativeCurrency\": {\n \"name\": \"Kovan Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 69,\n \"rpc\": [\"https://optimism-kovan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://69.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://kovan.optimism.io/\"],\n \"shortName\": \"okov\",\n \"slug\": \"optimism-kovan\",\n \"testnet\": true,\n \"title\": \"Optimism Testnet Kovan\"\n};\n\nvar c70 = {\n \"chain\": \"HSC\",\n \"chainId\": 70,\n \"explorers\": [{\n \"name\": \"hooscan\",\n \"url\": \"https://www.hooscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.hoosmartchain.com\",\n \"name\": \"Hoo Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"Hoo Smart Chain Native Token\",\n \"symbol\": \"HOO\",\n \"decimals\": 18\n },\n \"networkId\": 70,\n \"rpc\": [\"https://hoo-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-mainnet.hoosmartchain.com\", \"https://http-mainnet2.hoosmartchain.com\", \"wss://ws-mainnet.hoosmartchain.com\", \"wss://ws-mainnet2.hoosmartchain.com\"],\n \"shortName\": \"hsc\",\n \"slip44\": 1170,\n \"slug\": \"hoo-smart-chain\",\n \"testnet\": false\n};\n\nvar c71 = {\n \"chain\": \"Conflux\",\n \"chainId\": 71,\n \"explorers\": [{\n \"name\": \"Conflux Scan\",\n \"url\": \"https://evmtestnet.confluxscan.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.confluxnetwork.org\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreifj7n24u2dslfijfihwqvpdeigt5aj3k3sxv6s35lv75sxsfr3ojy\",\n \"width\": 460,\n \"height\": 576,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://confluxnetwork.org\",\n \"name\": \"Conflux eSpace (Testnet)\",\n \"nativeCurrency\": {\n \"name\": \"CFX\",\n \"symbol\": \"CFX\",\n \"decimals\": 18\n },\n \"networkId\": 71,\n \"rpc\": [\"https://conflux-espace-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://71.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmtestnet.confluxrpc.com\"],\n \"shortName\": \"cfxtest\",\n \"slug\": \"conflux-espace-testnet\",\n \"testnet\": true\n};\n\nvar c72 = {\n \"chain\": \"DxChain\",\n \"chainId\": 72,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.dxscan.io\"],\n \"infoURL\": \"https://testnet.dxscan.io/\",\n \"name\": \"DxChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DxChain Testnet\",\n \"symbol\": \"DX\",\n \"decimals\": 18\n },\n \"networkId\": 72,\n \"rpc\": [\"https://dxchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://72.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-http.dxchain.com\"],\n \"shortName\": \"dxc\",\n \"slug\": \"dxchain-testnet\",\n \"testnet\": true\n};\n\nvar c73 = {\n \"chain\": \"FNCY\",\n \"chainId\": 73,\n \"explorers\": [{\n \"name\": \"fncy scan\",\n \"url\": \"https://fncyscan.fncy.world\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmfXCh6UnaEHn3Evz7RFJ3p2ggJBRm9hunDHegeoquGuhD\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.fncy.world\"],\n \"icon\": {\n \"url\": \"ipfs://QmfXCh6UnaEHn3Evz7RFJ3p2ggJBRm9hunDHegeoquGuhD\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fncyscan.fncy.world\",\n \"name\": \"FNCY\",\n \"nativeCurrency\": {\n \"name\": \"FNCY\",\n \"symbol\": \"FNCY\",\n \"decimals\": 18\n },\n \"networkId\": 73,\n \"rpc\": [\"https://fncy.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://73.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fncy-seed1.fncy.world\"],\n \"shortName\": \"FNCY\",\n \"slug\": \"fncy\",\n \"testnet\": true\n};\n\nvar c74 = {\n \"chain\": \"IDChain\",\n \"chainId\": 74,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.idchain.one\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZVwsY6HPXScKqZCA9SWNrr4jrQAHkPhVhMWi6Fj1DsrJ\",\n \"width\": 162,\n \"height\": 129,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://idchain.one/begin/\",\n \"name\": \"IDChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EIDI\",\n \"symbol\": \"EIDI\",\n \"decimals\": 18\n },\n \"networkId\": 74,\n \"rpc\": [\"https://idchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://74.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://idchain.one/rpc/\", \"wss://idchain.one/ws/\"],\n \"shortName\": \"idchain\",\n \"slug\": \"idchain\",\n \"testnet\": false\n};\n\nvar c75 = {\n \"chain\": \"DSC\",\n \"chainId\": 75,\n \"explorers\": [{\n \"name\": \"DSC Explorer Mainnet\",\n \"url\": \"https://explorer.decimalchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSgzwKnJJjys3Uq2aVVdwJ3NffLj3CXMVCph9uByTBegc\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSgzwKnJJjys3Uq2aVVdwJ3NffLj3CXMVCph9uByTBegc\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://decimalchain.com\",\n \"name\": \"Decimal Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Decimal\",\n \"symbol\": \"DEL\",\n \"decimals\": 18\n },\n \"networkId\": 75,\n \"rpc\": [\"https://decimal-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://75.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.decimalchain.com/web3/\", \"https://node1-mainnet.decimalchain.com/web3/\", \"https://node2-mainnet.decimalchain.com/web3/\", \"https://node3-mainnet.decimalchain.com/web3/\", \"https://node4-mainnet.decimalchain.com/web3/\"],\n \"shortName\": \"DSC\",\n \"slug\": \"decimal-smart-chain\",\n \"testnet\": false\n};\n\nvar c76 = {\n \"chain\": \"MIX\",\n \"chainId\": 76,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://mix-blockchain.org\",\n \"name\": \"Mix\",\n \"nativeCurrency\": {\n \"name\": \"Mix Ether\",\n \"symbol\": \"MIX\",\n \"decimals\": 18\n },\n \"networkId\": 76,\n \"rpc\": [\"https://mix.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://76.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc2.mix-blockchain.org:8647\"],\n \"shortName\": \"mix\",\n \"slip44\": 76,\n \"slug\": \"mix\",\n \"testnet\": false\n};\n\nvar c77 = {\n \"chain\": \"POA\",\n \"chainId\": 77,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/poa/sokol\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://poa.network\",\n \"name\": \"POA Network Sokol\",\n \"nativeCurrency\": {\n \"name\": \"POA Sokol Ether\",\n \"symbol\": \"SPOA\",\n \"decimals\": 18\n },\n \"networkId\": 77,\n \"rpc\": [\"https://poa-network-sokol.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://77.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sokol.poa.network\", \"wss://sokol.poa.network/wss\", \"ws://sokol.poa.network:8546\"],\n \"shortName\": \"spoa\",\n \"slug\": \"poa-network-sokol\",\n \"testnet\": false\n};\n\nvar c78 = {\n \"chain\": \"PC\",\n \"chainId\": 78,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://primusmoney.com\",\n \"name\": \"PrimusChain mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Primus Ether\",\n \"symbol\": \"PETH\",\n \"decimals\": 18\n },\n \"networkId\": 78,\n \"rpc\": [\"https://primuschain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ethnode.primusmoney.com/mainnet\"],\n \"shortName\": \"primuschain\",\n \"slug\": \"primuschain\",\n \"testnet\": false\n};\n\nvar c79 = {\n \"chain\": \"Zenith\",\n \"chainId\": 79,\n \"explorers\": [{\n \"name\": \"zenith scan\",\n \"url\": \"https://scan.zenithchain.co\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.zenithchain.co/\",\n \"name\": \"Zenith Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ZENITH\",\n \"symbol\": \"ZENITH\",\n \"decimals\": 18\n },\n \"networkId\": 79,\n \"rpc\": [\"https://zenith.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://79.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataserver-us-1.zenithchain.co/\", \"https://dataserver-asia-3.zenithchain.co/\", \"https://dataserver-asia-4.zenithchain.co/\", \"https://dataserver-asia-2.zenithchain.co/\", \"https://dataserver-asia-5.zenithchain.co/\", \"https://dataserver-asia-6.zenithchain.co/\", \"https://dataserver-asia-7.zenithchain.co/\"],\n \"shortName\": \"zenith\",\n \"slug\": \"zenith\",\n \"testnet\": false\n};\n\nvar c80 = {\n \"chain\": \"GeneChain\",\n \"chainId\": 80,\n \"explorers\": [{\n \"name\": \"GeneChain Scan\",\n \"url\": \"https://scan.genechain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://scan.genechain.io/\",\n \"name\": \"GeneChain\",\n \"nativeCurrency\": {\n \"name\": \"RNA\",\n \"symbol\": \"RNA\",\n \"decimals\": 18\n },\n \"networkId\": 80,\n \"rpc\": [\"https://genechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://80.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.genechain.io\"],\n \"shortName\": \"GeneChain\",\n \"slug\": \"genechain\",\n \"testnet\": false\n};\n\nvar c81 = {\n \"chain\": \"JOC\",\n \"chainId\": 81,\n \"explorers\": [{\n \"name\": \"Block Explorer\",\n \"url\": \"https://explorer.japanopenchain.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidhsiuqrct42bel76zhi3rx35k4lnk6aqgde27nvvxcz563ttfefy\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidhsiuqrct42bel76zhi3rx35k4lnk6aqgde27nvvxcz563ttfefy\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.japanopenchain.org/\",\n \"name\": \"Japan Open Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Japan Open Chain Token\",\n \"symbol\": \"JOC\",\n \"decimals\": 18\n },\n \"networkId\": 81,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://japan-open-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://81.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-1.japanopenchain.org:8545\", \"https://rpc-2.japanopenchain.org:8545\"],\n \"shortName\": \"joc\",\n \"slug\": \"japan-open-chain\",\n \"testnet\": false\n};\n\nvar c82 = {\n \"chain\": \"METER\",\n \"chainId\": 82,\n \"explorers\": [{\n \"name\": \"Meter Mainnet Scan\",\n \"url\": \"https://scan.meter.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.meter.io\"],\n \"infoURL\": \"https://www.meter.io\",\n \"name\": \"Meter Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Meter\",\n \"symbol\": \"MTR\",\n \"decimals\": 18\n },\n \"networkId\": 82,\n \"rpc\": [\"https://meter.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://82.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.meter.io\"],\n \"shortName\": \"Meter\",\n \"slug\": \"meter\",\n \"testnet\": false\n};\n\nvar c83 = {\n \"chain\": \"METER Testnet\",\n \"chainId\": 83,\n \"explorers\": [{\n \"name\": \"Meter Testnet Scan\",\n \"url\": \"https://scan-warringstakes.meter.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-warringstakes.meter.io\"],\n \"infoURL\": \"https://www.meter.io\",\n \"name\": \"Meter Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Meter\",\n \"symbol\": \"MTR\",\n \"decimals\": 18\n },\n \"networkId\": 83,\n \"rpc\": [\"https://meter-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://83.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpctest.meter.io\"],\n \"shortName\": \"MeterTest\",\n \"slug\": \"meter-testnet\",\n \"testnet\": true\n};\n\nvar c84 = {\n \"chain\": \"LNQ\",\n \"chainId\": 84,\n \"explorers\": [{\n \"name\": \"Linqto Devnet Explorer\",\n \"url\": \"https://explorer.linqto-dev.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://linqto.com\",\n \"name\": \"Linqto Devnet\",\n \"nativeCurrency\": {\n \"name\": \"XRP\",\n \"symbol\": \"XRP\",\n \"decimals\": 18\n },\n \"networkId\": 84,\n \"rpc\": [\"https://linqto-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://84.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://linqto-dev.com\"],\n \"shortName\": \"linqto-devnet\",\n \"slug\": \"linqto-devnet\",\n \"testnet\": false\n};\n\nvar c85 = {\n \"chain\": \"GTTEST\",\n \"chainId\": 85,\n \"explorers\": [{\n \"name\": \"GateScan\",\n \"url\": \"https://www.gatescan.org/testnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.gatescan.org/testnet/faucet\"],\n \"infoURL\": \"https://www.gatechain.io\",\n \"name\": \"GateChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"GateToken\",\n \"symbol\": \"GT\",\n \"decimals\": 18\n },\n \"networkId\": 85,\n \"rpc\": [\"https://gatechain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://85.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.gatenode.cc\"],\n \"shortName\": \"gttest\",\n \"slug\": \"gatechain-testnet\",\n \"testnet\": true\n};\n\nvar c86 = {\n \"chain\": \"GT\",\n \"chainId\": 86,\n \"explorers\": [{\n \"name\": \"GateScan\",\n \"url\": \"https://www.gatescan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.gatescan.org/faucet\"],\n \"infoURL\": \"https://www.gatechain.io\",\n \"name\": \"GateChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GateToken\",\n \"symbol\": \"GT\",\n \"decimals\": 18\n },\n \"networkId\": 86,\n \"rpc\": [\"https://gatechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://86.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.gatenode.cc\"],\n \"shortName\": \"gt\",\n \"slug\": \"gatechain\",\n \"testnet\": false\n};\n\nvar c87 = {\n \"chain\": \"NNW\",\n \"chainId\": 87,\n \"explorers\": [{\n \"name\": \"novanetwork\",\n \"url\": \"https://explorer.novanetwork.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTTamJ55YGQwMboq4aqf3JjTEy5WDtjo4GBRQ5VdsWA6U\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://novanetwork.io\",\n \"name\": \"Nova Network\",\n \"nativeCurrency\": {\n \"name\": \"Supernova\",\n \"symbol\": \"SNT\",\n \"decimals\": 18\n },\n \"networkId\": 87,\n \"rpc\": [\"https://nova-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://87.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.novanetwork.io\", \"https://0x57.redjackstudio.com\", \"https://rpc.novanetwork.io:9070\"],\n \"shortName\": \"nnw\",\n \"slug\": \"nova-network\",\n \"testnet\": false\n};\n\nvar c88 = {\n \"chain\": \"TOMO\",\n \"chainId\": 88,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://tomochain.com\",\n \"name\": \"TomoChain\",\n \"nativeCurrency\": {\n \"name\": \"TomoChain\",\n \"symbol\": \"TOMO\",\n \"decimals\": 18\n },\n \"networkId\": 88,\n \"rpc\": [\"https://tomochain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tomochain.com\"],\n \"shortName\": \"tomo\",\n \"slip44\": 889,\n \"slug\": \"tomochain\",\n \"testnet\": false\n};\n\nvar c89 = {\n \"chain\": \"TOMO\",\n \"chainId\": 89,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://tomochain.com\",\n \"name\": \"TomoChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TomoChain\",\n \"symbol\": \"TOMO\",\n \"decimals\": 18\n },\n \"networkId\": 89,\n \"rpc\": [\"https://tomochain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://89.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.tomochain.com\"],\n \"shortName\": \"tomot\",\n \"slip44\": 889,\n \"slug\": \"tomochain-testnet\",\n \"testnet\": true\n};\n\nvar c90 = {\n \"chain\": \"GAR\",\n \"chainId\": 90,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Stage0\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 90,\n \"rpc\": [\"https://garizon-stage0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://90.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s0.garizon.net/rpc\"],\n \"shortName\": \"gar-s0\",\n \"slug\": \"garizon-stage0\",\n \"testnet\": false\n};\n\nvar c91 = {\n \"chain\": \"GAR\",\n \"chainId\": 91,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Stage1\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 91,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-90\"\n },\n \"rpc\": [\"https://garizon-stage1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://91.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s1.garizon.net/rpc\"],\n \"shortName\": \"gar-s1\",\n \"slug\": \"garizon-stage1\",\n \"testnet\": false\n};\n\nvar c92 = {\n \"chain\": \"GAR\",\n \"chainId\": 92,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Stage2\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 92,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-90\"\n },\n \"rpc\": [\"https://garizon-stage2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://92.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s2.garizon.net/rpc\"],\n \"shortName\": \"gar-s2\",\n \"slug\": \"garizon-stage2\",\n \"testnet\": false\n};\n\nvar c93 = {\n \"chain\": \"GAR\",\n \"chainId\": 93,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Stage3\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 93,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-90\"\n },\n \"rpc\": [\"https://garizon-stage3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://93.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s3.garizon.net/rpc\"],\n \"shortName\": \"gar-s3\",\n \"slug\": \"garizon-stage3\",\n \"testnet\": false\n};\n\nvar c94 = {\n \"chain\": \"SDLT\",\n \"chainId\": 94,\n \"explorers\": [{\n \"name\": \"SwissDLT Explorer\",\n \"url\": \"https://explorer.swissdlt.ch\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreig7x5z4j6vh2r3pugmjnob3tmlksaekhqcgsorqzvs55o6v7ehqd4\",\n \"width\": 682,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreig7x5z4j6vh2r3pugmjnob3tmlksaekhqcgsorqzvs55o6v7ehqd4\",\n \"width\": 682,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bcts.ch\",\n \"name\": \"SwissDLT\",\n \"nativeCurrency\": {\n \"name\": \"BCTS\",\n \"symbol\": \"BCTS\",\n \"decimals\": 18\n },\n \"networkId\": 94,\n \"rpc\": [\"https://swissdlt.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://94.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.swissdlt.ch\"],\n \"shortName\": \"sdlt\",\n \"slug\": \"swissdlt\",\n \"testnet\": false\n};\n\nvar c95 = {\n \"chain\": \"CADL\",\n \"chainId\": 95,\n \"explorers\": [{\n \"name\": \"CamDL Block Explorer\",\n \"url\": \"https://explorer.camdl.gov.kh\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.camdl.gov.kh/\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmW5Fpb2Ywnfqcj4ibvpbKvPv5Mo5eseWdYZnnUvLkj2Hp\",\n \"width\": 1453,\n \"height\": 1453,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://camdl.gov.kh/\",\n \"name\": \"CamDL Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CADL\",\n \"symbol\": \"CADL\",\n \"decimals\": 18\n },\n \"networkId\": 95,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://camdl.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://95.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.camdl.gov.kh/\"],\n \"shortName\": \"camdl\",\n \"slug\": \"camdl\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c96 = {\n \"chain\": \"BKC\",\n \"chainId\": 96,\n \"explorers\": [{\n \"name\": \"Bitkub Chain Explorer\",\n \"url\": \"https://bkcscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmYFYwyquipwc9gURQGcEd4iAq7pq15chQrJ3zJJe9HuFT\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYFYwyquipwc9gURQGcEd4iAq7pq15chQrJ3zJJe9HuFT\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bitkubchain.com/\",\n \"name\": \"Bitkub Chain\",\n \"nativeCurrency\": {\n \"name\": \"Bitkub Coin\",\n \"symbol\": \"KUB\",\n \"decimals\": 18\n },\n \"networkId\": 96,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://bitkub-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://96.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bitkubchain.io\", \"wss://wss.bitkubchain.io\"],\n \"shortName\": \"bkc\",\n \"slug\": \"bitkub-chain\",\n \"testnet\": false\n};\n\nvar c97 = {\n \"chain\": \"BSC\",\n \"chainId\": 97,\n \"explorers\": [{\n \"name\": \"bscscan-testnet\",\n \"url\": \"https://testnet.bscscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet.bnbchain.org/faucet-smart\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/binance-coin/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bnbchain.org/en\",\n \"name\": \"BNB Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BNB Chain Native Token\",\n \"symbol\": \"tBNB\",\n \"decimals\": 18\n },\n \"networkId\": 97,\n \"redFlags\": [],\n \"rpc\": [\"https://binance-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://97.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data-seed-prebsc-1-s1.bnbchain.org:8545\", \"https://data-seed-prebsc-2-s1.bnbchain.org:8545\", \"https://data-seed-prebsc-1-s2.bnbchain.org:8545\", \"https://data-seed-prebsc-2-s2.bnbchain.org:8545\", \"https://data-seed-prebsc-1-s3.bnbchain.org:8545\", \"https://data-seed-prebsc-2-s3.bnbchain.org:8545\", \"https://bsc-testnet.publicnode.com\", \"wss://bsc-testnet.publicnode.com\"],\n \"shortName\": \"bnbt\",\n \"slug\": \"binance-testnet\",\n \"testnet\": true\n};\n\nvar c98 = {\n \"chain\": \"SIXNET\",\n \"chainId\": 98,\n \"explorers\": [{\n \"name\": \"SIX Scan\",\n \"url\": \"https://sixscan.io/sixnet\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmP93z696v8Hetu13peY2oEHDXq8Bj5CqaDRwpVkpnM15A\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmP93z696v8Hetu13peY2oEHDXq8Bj5CqaDRwpVkpnM15A\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://six.network/\",\n \"name\": \"Six Protocol\",\n \"nativeCurrency\": {\n \"name\": \"SIX evm token\",\n \"symbol\": \"SIX\",\n \"decimals\": 18\n },\n \"networkId\": 98,\n \"rpc\": [\"https://six-protocol.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://98.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sixnet-rpc-evm.sixprotocol.net\"],\n \"shortName\": \"six\",\n \"slug\": \"six-protocol\",\n \"testnet\": false\n};\n\nvar c99 = {\n \"chain\": \"POA\",\n \"chainId\": 99,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/poa/core\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://poa.network\",\n \"name\": \"POA Network Core\",\n \"nativeCurrency\": {\n \"name\": \"POA Network Core Ether\",\n \"symbol\": \"POA\",\n \"decimals\": 18\n },\n \"networkId\": 99,\n \"rpc\": [\"https://poa-network-core.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://99.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://core.poa.network\"],\n \"shortName\": \"poa\",\n \"slip44\": 178,\n \"slug\": \"poa-network-core\",\n \"testnet\": false\n};\n\nvar c100 = {\n \"chain\": \"GNO\",\n \"chainId\": 100,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://gnosis.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"gnosisscan\",\n \"url\": \"https://gnosisscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://gnosis.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://gnosisfaucet.com\", \"https://stakely.io/faucet/gnosis-chain-xdai\", \"https://faucet.prussia.dev/xdai\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeidk4swpgdyqmpz6shd5onvpaujvwiwthrhypufnwr6xh3dausz2dm\",\n \"width\": 1800,\n \"height\": 1800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.gnosischain.com\",\n \"name\": \"Gnosis\",\n \"nativeCurrency\": {\n \"name\": \"xDAI\",\n \"symbol\": \"XDAI\",\n \"decimals\": 18\n },\n \"networkId\": 100,\n \"rpc\": [\"https://gnosis.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.gnosischain.com\", \"https://rpc.gnosis.gateway.fm\", \"https://rpc.ankr.com/gnosis\", \"https://gnosischain-rpc.gateway.pokt.network\", \"https://gnosis-mainnet.public.blastapi.io\", \"https://gnosis.api.onfinality.io/public\", \"https://gnosis.blockpi.network/v1/rpc/public\", \"https://web3endpoints.com/gnosischain-mainnet\", \"https://gnosis.oat.farm\", \"wss://rpc.gnosischain.com/wss\", \"https://gnosis.publicnode.com\", \"wss://gnosis.publicnode.com\"],\n \"shortName\": \"gno\",\n \"slip44\": 700,\n \"slug\": \"gnosis\",\n \"testnet\": false\n};\n\nvar c101 = {\n \"chain\": \"ETI\",\n \"chainId\": 101,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://einc.io\",\n \"name\": \"EtherInc\",\n \"nativeCurrency\": {\n \"name\": \"EtherInc Ether\",\n \"symbol\": \"ETI\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://etherinc.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.einc.io/jsonrpc/mainnet\"],\n \"shortName\": \"eti\",\n \"slip44\": 464,\n \"slug\": \"etherinc\",\n \"testnet\": false\n};\n\nvar c102 = {\n \"chain\": \"Web3Games\",\n \"chainId\": 102,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUc57w3UTHiWapNW9oQb1dP57ymtdemTTbpvGkjVHBRCo\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://web3games.org/\",\n \"name\": \"Web3Games Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Web3Games\",\n \"symbol\": \"W3G\",\n \"decimals\": 18\n },\n \"networkId\": 102,\n \"rpc\": [\"https://web3games-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://102.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc-0.web3games.org/evm\", \"https://testnet-rpc-1.web3games.org/evm\", \"https://testnet-rpc-2.web3games.org/evm\"],\n \"shortName\": \"tw3g\",\n \"slug\": \"web3games-testnet\",\n \"testnet\": true\n};\n\nvar c103 = {\n \"chain\": \"Worldland\",\n \"chainId\": 103,\n \"explorers\": [{\n \"name\": \"Worldland Explorer\",\n \"url\": \"https://scan.worldland.foundation\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYZNTfK3byhgLsTjXP8vPubVHRz2CWsBrTJxZrQmKq6JZ\",\n \"width\": 3509,\n \"height\": 2482,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://worldland.foundation\",\n \"name\": \"Worldland Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Worldland\",\n \"symbol\": \"WL\",\n \"decimals\": 18\n },\n \"networkId\": 103,\n \"rpc\": [\"https://worldland.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seoul.worldland.foundation\"],\n \"shortName\": \"WLC\",\n \"slug\": \"worldland\",\n \"testnet\": false\n};\n\nvar c104 = {\n \"chain\": \"tKLC\",\n \"chainId\": 104,\n \"explorers\": [{\n \"name\": \"kaibascan\",\n \"url\": \"https://kaibascan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafybeihbsw3ky7yf6llpww6fabo4dicotcgwjpefscoxrppstjx25dvtea\",\n \"width\": 932,\n \"height\": 932,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeihbsw3ky7yf6llpww6fabo4dicotcgwjpefscoxrppstjx25dvtea\",\n \"width\": 932,\n \"height\": 932,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kaibadefi.com\",\n \"name\": \"Kaiba Lightning Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Kaiba Testnet Token\",\n \"symbol\": \"tKAIBA\",\n \"decimals\": 18\n },\n \"networkId\": 104,\n \"rpc\": [\"https://kaiba-lightning-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://104.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://klc.live/\"],\n \"shortName\": \"tklc\",\n \"slug\": \"kaiba-lightning-chain-testnet\",\n \"testnet\": true\n};\n\nvar c105 = {\n \"chain\": \"Web3Games\",\n \"chainId\": 105,\n \"explorers\": [{\n \"name\": \"Web3Games Explorer\",\n \"url\": \"https://explorer-devnet.web3games.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUc57w3UTHiWapNW9oQb1dP57ymtdemTTbpvGkjVHBRCo\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://web3games.org/\",\n \"name\": \"Web3Games Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Web3Games\",\n \"symbol\": \"W3G\",\n \"decimals\": 18\n },\n \"networkId\": 105,\n \"rpc\": [\"https://web3games-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://105.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet.web3games.org/evm\"],\n \"shortName\": \"dw3g\",\n \"slug\": \"web3games-devnet\",\n \"testnet\": false\n};\n\nvar c106 = {\n \"chain\": \"Velas\",\n \"chainId\": 106,\n \"explorers\": [{\n \"name\": \"Velas Explorer\",\n \"url\": \"https://evmexplorer.velas.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNXiCXJxEeBd7ZYGYjPSMTSdbDd2nfodLC677gUfk9ku5\",\n \"width\": 924,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://velas.com\",\n \"name\": \"Velas EVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Velas\",\n \"symbol\": \"VLX\",\n \"decimals\": 18\n },\n \"networkId\": 106,\n \"rpc\": [\"https://velas-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://106.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmexplorer.velas.com/rpc\", \"https://explorer.velas.com/rpc\"],\n \"shortName\": \"vlx\",\n \"slug\": \"velas-evm\",\n \"testnet\": false\n};\n\nvar c107 = {\n \"chain\": \"NTN\",\n \"chainId\": 107,\n \"explorers\": [{\n \"name\": \"nebulatestnet\",\n \"url\": \"https://explorer.novanetwork.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.novanetwork.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmeFaJtQqTKKuXQR7ysS53bLFPasFBcZw445cvYJ2HGeTo\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://novanetwork.io\",\n \"name\": \"Nebula Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Nebula X\",\n \"symbol\": \"NBX\",\n \"decimals\": 18\n },\n \"networkId\": 107,\n \"rpc\": [\"https://nebula-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://107.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.rpc.novanetwork.io\"],\n \"shortName\": \"ntn\",\n \"slug\": \"nebula-testnet\",\n \"testnet\": true\n};\n\nvar c108 = {\n \"chain\": \"TT\",\n \"chainId\": 108,\n \"explorers\": [{\n \"name\": \"thundercore-viewblock\",\n \"url\": \"https://viewblock.io/thundercore\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://thundercore.com\",\n \"name\": \"ThunderCore Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ThunderCore Token\",\n \"symbol\": \"TT\",\n \"decimals\": 18\n },\n \"networkId\": 108,\n \"rpc\": [\"https://thundercore.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://108.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.thundercore.com\", \"https://mainnet-rpc.thundertoken.net\", \"https://mainnet-rpc.thundercore.io\"],\n \"shortName\": \"TT\",\n \"slip44\": 1001,\n \"slug\": \"thundercore\",\n \"testnet\": false\n};\n\nvar c109 = {\n \"chain\": \"Shibarium\",\n \"chainId\": 109,\n \"explorers\": [{\n \"name\": \"shibariumscan\",\n \"url\": \"https://www.shibariumscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYNVkoZgRjDBQzJz6kog9mA2yPzQFW2oSKvhnkwuBhLQE\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shibariumecosystem.com\",\n \"name\": \"Shibarium\",\n \"nativeCurrency\": {\n \"name\": \"BONE Shibarium\",\n \"symbol\": \"BONE\",\n \"decimals\": 18\n },\n \"networkId\": 109,\n \"rpc\": [\"https://shibarium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://109.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.shibrpc.com\"],\n \"shortName\": \"shibariumecosystem\",\n \"slug\": \"shibarium\",\n \"testnet\": false\n};\n\nvar c110 = {\n \"chain\": \"XPR\",\n \"chainId\": 110,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://protonchain.com\",\n \"name\": \"Proton Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Proton\",\n \"symbol\": \"XPR\",\n \"decimals\": 4\n },\n \"networkId\": 110,\n \"rpc\": [\"https://proton-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://protontestnet.greymass.com/\"],\n \"shortName\": \"xpr\",\n \"slug\": \"proton-testnet\",\n \"testnet\": true\n};\n\nvar c111 = {\n \"chain\": \"ETL\",\n \"chainId\": 111,\n \"explorers\": [],\n \"faucets\": [\"https://etherlite.org/faucets\"],\n \"icon\": {\n \"url\": \"ipfs://QmbNAai1KnBnw4SPQKgrf6vBddifPCQTg2PePry1bmmZYy\",\n \"width\": 88,\n \"height\": 88,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://etherlite.org\",\n \"name\": \"EtherLite Chain\",\n \"nativeCurrency\": {\n \"name\": \"EtherLite\",\n \"symbol\": \"ETL\",\n \"decimals\": 18\n },\n \"networkId\": 111,\n \"rpc\": [\"https://etherlite-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.etherlite.org\"],\n \"shortName\": \"ETL\",\n \"slug\": \"etherlite-chain\",\n \"testnet\": false\n};\n\nvar c112 = {\n \"chain\": \"Coinbit\",\n \"chainId\": 112,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://coinbit-explorer.chain.sbcrypto.app\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdaQRUbAXJGfHeJ8jaB8WVh8CCmHExq8VjvAfXpLWWQEo\",\n \"width\": 760,\n \"height\": 760,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://crypto.stockbit.com/\",\n \"name\": \"Coinbit Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Gas IDR\",\n \"symbol\": \"GIDR\",\n \"decimals\": 18\n },\n \"networkId\": 112,\n \"rpc\": [\"https://coinbit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://112.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://coinbit-rpc-mainnet.chain.sbcrypto.app\"],\n \"shortName\": \"coinbit\",\n \"slug\": \"coinbit\",\n \"testnet\": false\n};\n\nvar c113 = {\n \"chain\": \"Dehvo\",\n \"chainId\": 113,\n \"explorers\": [{\n \"name\": \"Dehvo Explorer\",\n \"url\": \"https://explorer.dehvo.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://buy.dehvo.com\"],\n \"infoURL\": \"https://dehvo.com\",\n \"name\": \"Dehvo\",\n \"nativeCurrency\": {\n \"name\": \"Dehvo\",\n \"symbol\": \"Deh\",\n \"decimals\": 18\n },\n \"networkId\": 113,\n \"rpc\": [\"https://dehvo.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://113.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.dehvo.com\", \"https://rpc.dehvo.com\", \"https://rpc1.dehvo.com\", \"https://rpc2.dehvo.com\"],\n \"shortName\": \"deh\",\n \"slip44\": 714,\n \"slug\": \"dehvo\",\n \"testnet\": false\n};\n\nvar c114 = {\n \"chain\": \"FLR\",\n \"chainId\": 114,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://coston2-explorer.flare.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://coston2-faucet.towolabs.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmZhAYyazEBZSHWNQb9uCkNPq2MNTLoW3mjwiD3955hUjw\",\n \"width\": 382,\n \"height\": 382,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://flare.xyz\",\n \"name\": \"Flare Testnet Coston2\",\n \"nativeCurrency\": {\n \"name\": \"Coston2 Flare\",\n \"symbol\": \"C2FLR\",\n \"decimals\": 18\n },\n \"networkId\": 114,\n \"rpc\": [\"https://flare-testnet-coston2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://114.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://coston2-api.flare.network/ext/bc/C/rpc\"],\n \"shortName\": \"c2flr\",\n \"slug\": \"flare-testnet-coston2\",\n \"testnet\": true\n};\n\nvar c115 = {\n \"chain\": \"DeBank\",\n \"chainId\": 115,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW9pBps8WHRRWmyXhjLZrjZJUe8F48hUu7z98bu2RVsjN\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://debank.com\",\n \"name\": \"DeBank Testnet(Deprecated)\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 115,\n \"rpc\": [],\n \"shortName\": \"debank-testnet\",\n \"slug\": \"debank-testnet-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c116 = {\n \"chain\": \"DeBank\",\n \"chainId\": 116,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW9pBps8WHRRWmyXhjLZrjZJUe8F48hUu7z98bu2RVsjN\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://debank.com\",\n \"name\": \"DeBank Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 116,\n \"rpc\": [],\n \"shortName\": \"debank-mainnet\",\n \"slug\": \"debank\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c117 = {\n \"chain\": \"Uptick\",\n \"chainId\": 117,\n \"explorers\": [{\n \"name\": \"Uptick Explorer\",\n \"url\": \"https://evm-explorer.uptick.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRGJ6PqYHDTWuUQ6xfnK8S82NzRXiMjTnSGat9qtLuaLP\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRGJ6PqYHDTWuUQ6xfnK8S82NzRXiMjTnSGat9qtLuaLP\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.uptick.network\",\n \"name\": \"Uptick Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Uptick\",\n \"symbol\": \"UPTICK\",\n \"decimals\": 18\n },\n \"networkId\": 117,\n \"rpc\": [\"https://uptick.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://117.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://json-rpc.uptick.network\"],\n \"shortName\": \"auptick\",\n \"slug\": \"uptick\",\n \"testnet\": false\n};\n\nvar c118 = {\n \"chain\": \"Arcology\",\n \"chainId\": 118,\n \"explorers\": [{\n \"name\": \"arcology\",\n \"url\": \"https://testnet.arcology.network/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRD7itMvaZutfBjyA7V9xkMGDtsZiJSagPwd3ijqka8kE\",\n \"width\": 288,\n \"height\": 288,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://arcology.network/\",\n \"name\": \"Arcology Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Arcology Coin\",\n \"symbol\": \"Acol\",\n \"decimals\": 18\n },\n \"networkId\": 118,\n \"rpc\": [\"https://arcology-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://118.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.arcology.network/rpc\"],\n \"shortName\": \"arcology\",\n \"slug\": \"arcology-testnet\",\n \"testnet\": true\n};\n\nvar c119 = {\n \"chain\": \"ENULS\",\n \"chainId\": 119,\n \"explorers\": [{\n \"name\": \"enulsscan\",\n \"url\": \"https://evmscan.nuls.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYz8LK5WkUN8UwqKfWUjnyLuYqQZWihT7J766YXft4TSy\",\n \"width\": 26,\n \"height\": 41,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYz8LK5WkUN8UwqKfWUjnyLuYqQZWihT7J766YXft4TSy\",\n \"width\": 26,\n \"height\": 41,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://nuls.io\",\n \"name\": \"ENULS Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"NULS\",\n \"symbol\": \"NULS\",\n \"decimals\": 18\n },\n \"networkId\": 119,\n \"rpc\": [\"https://enuls.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://119.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmapi.nuls.io\", \"https://evmapi2.nuls.io\"],\n \"shortName\": \"enuls\",\n \"slug\": \"enuls\",\n \"testnet\": false\n};\n\nvar c120 = {\n \"chain\": \"ENULS\",\n \"chainId\": 120,\n \"explorers\": [{\n \"name\": \"enulsscan\",\n \"url\": \"https://beta.evmscan.nuls.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYz8LK5WkUN8UwqKfWUjnyLuYqQZWihT7J766YXft4TSy\",\n \"width\": 26,\n \"height\": 41,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"http://faucet.nuls.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmYz8LK5WkUN8UwqKfWUjnyLuYqQZWihT7J766YXft4TSy\",\n \"width\": 26,\n \"height\": 41,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://nuls.io\",\n \"name\": \"ENULS Testnet\",\n \"nativeCurrency\": {\n \"name\": \"NULS\",\n \"symbol\": \"NULS\",\n \"decimals\": 18\n },\n \"networkId\": 120,\n \"rpc\": [\"https://enuls-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://120.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://beta.evmapi.nuls.io\", \"https://beta.evmapi2.nuls.io\"],\n \"shortName\": \"enulst\",\n \"slug\": \"enuls-testnet\",\n \"testnet\": true\n};\n\nvar c121 = {\n \"chain\": \"REAL\",\n \"chainId\": 121,\n \"explorers\": [{\n \"name\": \"realscan\",\n \"url\": \"https://rclscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.rclsidechain.com/\",\n \"name\": \"Realchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Realchain\",\n \"symbol\": \"REAL\",\n \"decimals\": 18\n },\n \"networkId\": 121,\n \"rpc\": [\"https://realchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://121.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rcl-dataseed1.rclsidechain.com\", \"https://rcl-dataseed2.rclsidechain.com\", \"https://rcl-dataseed3.rclsidechain.com\", \"https://rcl-dataseed4.rclsidechain.com\", \"wss://rcl-dataseed1.rclsidechain.com/v1/\", \"wss://rcl-dataseed2.rclsidechain.com/v1/\", \"wss://rcl-dataseed3.rclsidechain.com/v1/\", \"wss://rcl-dataseed4.rclsidechain.com/v1/\"],\n \"shortName\": \"REAL\",\n \"slip44\": 714,\n \"slug\": \"realchain\",\n \"testnet\": false\n};\n\nvar c122 = {\n \"chain\": \"FUSE\",\n \"chainId\": 122,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.fuse.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQg8aqyeaMfHvjzFDtZkb8dUNRYhFezPp8UYVc1HnLpRW/green.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fuse.io/\",\n \"name\": \"Fuse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Fuse\",\n \"symbol\": \"FUSE\",\n \"decimals\": 18\n },\n \"networkId\": 122,\n \"redFlags\": [],\n \"rpc\": [\"https://fuse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://122.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.fuse.io\"],\n \"shortName\": \"fuse\",\n \"slug\": \"fuse\",\n \"testnet\": false\n};\n\nvar c123 = {\n \"chain\": \"fuse\",\n \"chainId\": 123,\n \"explorers\": [],\n \"faucets\": [\"https://get.fusespark.io\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQg8aqyeaMfHvjzFDtZkb8dUNRYhFezPp8UYVc1HnLpRW/green.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.fuse.io/general/fuse-network-blockchain/fuse-testnet\",\n \"name\": \"Fuse Sparknet\",\n \"nativeCurrency\": {\n \"name\": \"Spark\",\n \"symbol\": \"SPARK\",\n \"decimals\": 18\n },\n \"networkId\": 123,\n \"redFlags\": [],\n \"rpc\": [\"https://fuse-sparknet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://123.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.fusespark.io\"],\n \"shortName\": \"spark\",\n \"slug\": \"fuse-sparknet\",\n \"testnet\": true\n};\n\nvar c124 = {\n \"chain\": \"DWU\",\n \"chainId\": 124,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://decentralized-web.tech/dw_chain.php\",\n \"name\": \"Decentralized Web Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Decentralized Web Utility\",\n \"symbol\": \"DWU\",\n \"decimals\": 18\n },\n \"networkId\": 124,\n \"rpc\": [\"https://decentralized-web.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://124.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://decentralized-web.tech/dw_rpc.php\"],\n \"shortName\": \"dwu\",\n \"slug\": \"decentralized-web\",\n \"testnet\": false\n};\n\nvar c125 = {\n \"chain\": \"OYchain\",\n \"chainId\": 125,\n \"explorers\": [{\n \"name\": \"OYchain Testnet Explorer\",\n \"url\": \"https://explorer.testnet.oychain.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.oychain.io\"],\n \"infoURL\": \"https://www.oychain.io\",\n \"name\": \"OYchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OYchain Token\",\n \"symbol\": \"OY\",\n \"decimals\": 18\n },\n \"networkId\": 125,\n \"rpc\": [\"https://oychain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://125.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.oychain.io\"],\n \"shortName\": \"OYchainTestnet\",\n \"slip44\": 125,\n \"slug\": \"oychain-testnet\",\n \"testnet\": true\n};\n\nvar c126 = {\n \"chain\": \"OYchain\",\n \"chainId\": 126,\n \"explorers\": [{\n \"name\": \"OYchain Mainnet Explorer\",\n \"url\": \"https://explorer.oychain.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXW5T2MaGHznXUmQEXoyJjcdmX7dhLbj5fnqvZZKqeKzA\",\n \"width\": 677,\n \"height\": 237,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.oychain.io\",\n \"name\": \"OYchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OYchain Token\",\n \"symbol\": \"OY\",\n \"decimals\": 18\n },\n \"networkId\": 126,\n \"rpc\": [\"https://oychain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://126.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mainnet.oychain.io\"],\n \"shortName\": \"OYchainMainnet\",\n \"slip44\": 126,\n \"slug\": \"oychain\",\n \"testnet\": false\n};\n\nvar c127 = {\n \"chain\": \"FETH\",\n \"chainId\": 127,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.factory127.com\",\n \"name\": \"Factory 127 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Factory 127 Token\",\n \"symbol\": \"FETH\",\n \"decimals\": 18\n },\n \"networkId\": 127,\n \"rpc\": [],\n \"shortName\": \"feth\",\n \"slip44\": 127,\n \"slug\": \"factory-127\",\n \"testnet\": false\n};\n\nvar c128 = {\n \"chain\": \"Heco\",\n \"chainId\": 128,\n \"explorers\": [{\n \"name\": \"hecoinfo\",\n \"url\": \"https://hecoinfo.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.hecochain.com\",\n \"name\": \"Huobi ECO Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Huobi ECO Chain Native Token\",\n \"symbol\": \"HT\",\n \"decimals\": 18\n },\n \"networkId\": 128,\n \"rpc\": [\"https://huobi-eco-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://128.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-mainnet.hecochain.com\", \"wss://ws-mainnet.hecochain.com\"],\n \"shortName\": \"heco\",\n \"slip44\": 1010,\n \"slug\": \"huobi-eco-chain\",\n \"testnet\": false\n};\n\nvar c134 = {\n \"chain\": \"Bellecour\",\n \"chainId\": 134,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.bellecour.iex.ec\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUYKpVmZL4aS3TEZLG5wbrRJ6exxLiwm1rejfGYYNicfb\",\n \"width\": 155,\n \"height\": 155,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://iex.ec\",\n \"name\": \"iExec Sidechain\",\n \"nativeCurrency\": {\n \"name\": \"xRLC\",\n \"symbol\": \"xRLC\",\n \"decimals\": 18\n },\n \"networkId\": 134,\n \"rpc\": [\"https://iexec-sidechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://134.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bellecour.iex.ec\"],\n \"shortName\": \"rlc\",\n \"slug\": \"iexec-sidechain\",\n \"testnet\": false\n};\n\nvar c135 = {\n \"chain\": \"Alyx Chain Testnet\",\n \"chainId\": 135,\n \"explorers\": [{\n \"name\": \"alyx testnet scan\",\n \"url\": \"https://testnet.alyxscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.alyxchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreifd43fcvh77mdcwjrpzpnlhthounc6b4u645kukqpqhduaveatf6i\",\n \"width\": 2481,\n \"height\": 2481,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.alyxchain.com\",\n \"name\": \"Alyx Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Alyx Testnet Native Token\",\n \"symbol\": \"ALYX\",\n \"decimals\": 18\n },\n \"networkId\": 135,\n \"rpc\": [\"https://alyx-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://135.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.alyxchain.com\"],\n \"shortName\": \"AlyxTestnet\",\n \"slug\": \"alyx-chain-testnet\",\n \"testnet\": true\n};\n\nvar c136 = {\n \"chain\": \"Deamchain\",\n \"chainId\": 136,\n \"explorers\": [{\n \"name\": \"Deamchain Block Explorer\",\n \"url\": \"https://scan.deamchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXvHWmjfXKdZMSz7x82NR4SjEqigKdJELVHbnzUPkj17F\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXvHWmjfXKdZMSz7x82NR4SjEqigKdJELVHbnzUPkj17F\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://deamchain.com\",\n \"name\": \"Deamchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Deamchain Native Token\",\n \"symbol\": \"DEAM\",\n \"decimals\": 18\n },\n \"networkId\": 136,\n \"rpc\": [\"https://deamchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://136.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.deamchain.com\"],\n \"shortName\": \"deam\",\n \"slug\": \"deamchain\",\n \"testnet\": false\n};\n\nvar c137 = {\n \"chain\": \"Polygon\",\n \"chainId\": 137,\n \"explorers\": [{\n \"name\": \"polygonscan\",\n \"url\": \"https://polygonscan.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://polygon.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/polygon/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polygon.technology/\",\n \"name\": \"Polygon Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MATIC\",\n \"symbol\": \"MATIC\",\n \"decimals\": 18\n },\n \"networkId\": 137,\n \"redFlags\": [],\n \"rpc\": [\"https://polygon.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://137.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://polygon-mainnet.infura.io/v3/${INFURA_API_KEY}\", \"https://polygon-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}\", \"https://polygon-rpc.com/\", \"https://rpc-mainnet.matic.network\", \"https://matic-mainnet.chainstacklabs.com\", \"https://rpc-mainnet.maticvigil.com\", \"https://rpc-mainnet.matic.quiknode.pro\", \"https://matic-mainnet-full-rpc.bwarelabs.com\", \"https://polygon-bor.publicnode.com\", \"wss://polygon-bor.publicnode.com\", \"https://polygon.gateway.tenderly.co\", \"wss://polygon.gateway.tenderly.co\"],\n \"shortName\": \"matic\",\n \"slip44\": 966,\n \"slug\": \"polygon\",\n \"testnet\": false\n};\n\nvar c138 = {\n \"chain\": \"dfiometa\",\n \"chainId\": 138,\n \"ens\": {\n \"registry\": \"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85\"\n },\n \"explorers\": [{\n \"name\": \"Quorum Explorer\",\n \"url\": \"https://public-0138.defi-oracle.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE\",\n \"width\": 1000,\n \"height\": 1043,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://defi-oracle.io/\",\n \"name\": \"Defi Oracle Meta Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://defi-oracle-meta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://138.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.public-0138.defi-oracle.io\", \"wss://rpc.public-0138.defi-oracle.io\"],\n \"shortName\": \"dfio-meta-main\",\n \"slip44\": 60,\n \"slug\": \"defi-oracle-meta\",\n \"testnet\": false\n};\n\nvar c139 = {\n \"chain\": \"WOOP\",\n \"chainId\": 139,\n \"explorers\": [{\n \"name\": \"wikiwoop\",\n \"url\": \"https://explorer.wikiwoop.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qma7LpnkGjAN1dwL6VTXUYqzySNxjLg4br7J8UE4yZWYec\",\n \"width\": 310,\n \"height\": 310,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://wikiwoop.com\",\n \"name\": \"WoopChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"WoopCoin\",\n \"symbol\": \"WOOC\",\n \"decimals\": 18\n },\n \"networkId\": 139,\n \"rpc\": [\"https://woopchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://139.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.woop.ai/rpc\"],\n \"shortName\": \"woop\",\n \"slug\": \"woopchain\",\n \"testnet\": false\n};\n\nvar c141 = {\n \"chain\": \"OPENPIECE\",\n \"chainId\": 141,\n \"explorers\": [{\n \"name\": \"Belly Scan\",\n \"url\": \"https://testnet.bellyscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVTahJkdSH3HPYsJMK2GmqfWZjLyxE7cXy1aHEnHU3vp2\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cryptopiece.online\",\n \"name\": \"Openpiece Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Belly\",\n \"symbol\": \"BELLY\",\n \"decimals\": 18\n },\n \"networkId\": 141,\n \"rpc\": [\"https://openpiece-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://141.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.openpiece.io\"],\n \"shortName\": \"OPtest\",\n \"slug\": \"openpiece-testnet\",\n \"testnet\": true\n};\n\nvar c142 = {\n \"chain\": \"DAX\",\n \"chainId\": 142,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://prodax.io/\",\n \"name\": \"DAX CHAIN\",\n \"nativeCurrency\": {\n \"name\": \"Prodax\",\n \"symbol\": \"DAX\",\n \"decimals\": 18\n },\n \"networkId\": 142,\n \"rpc\": [\"https://dax-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://142.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.prodax.io\"],\n \"shortName\": \"dax\",\n \"slug\": \"dax-chain\",\n \"testnet\": false\n};\n\nvar c144 = {\n \"chain\": \"PHI\",\n \"chainId\": 144,\n \"explorers\": [{\n \"name\": \"Phiscan\",\n \"url\": \"https://phiscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreid6pm3mic7izp3a6zlfwhhe7etd276bjfsq2xash6a4s2vmcdf65a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreid6pm3mic7izp3a6zlfwhhe7etd276bjfsq2xash6a4s2vmcdf65a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://phi.network\",\n \"name\": \"PHI Network v2\",\n \"nativeCurrency\": {\n \"name\": \"PHI\",\n \"symbol\": \"Φ\",\n \"decimals\": 18\n },\n \"networkId\": 144,\n \"rpc\": [\"https://phi-network-v2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://144.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.phi.network\"],\n \"shortName\": \"PHI\",\n \"slug\": \"phi-network-v2\",\n \"testnet\": false\n};\n\nvar c148 = {\n \"chain\": \"ShimmerEVM\",\n \"chainId\": 148,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.evm.shimmer.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreibky2sy6qhi6arktayvologkrgu5kudpgdxfkx4uosbvmstz7v4di\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibky2sy6qhi6arktayvologkrgu5kudpgdxfkx4uosbvmstz7v4di\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shimmer.network\",\n \"name\": \"ShimmerEVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SMR\",\n \"symbol\": \"SMR\",\n \"decimals\": 18\n },\n \"networkId\": 148,\n \"rpc\": [\"https://shimmerevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://148.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://json-rpc.evm.shimmer.network\"],\n \"shortName\": \"shimmerevm-mainnet\",\n \"slug\": \"shimmerevm\",\n \"testnet\": false,\n \"title\": \"ShimmerEVM Mainnet\"\n};\n\nvar c150 = {\n \"chain\": \"FIVENET\",\n \"chainId\": 150,\n \"explorers\": [{\n \"name\": \"SIX Scan fivenet\",\n \"url\": \"https://sixscan.io/fivenet\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmP93z696v8Hetu13peY2oEHDXq8Bj5CqaDRwpVkpnM15A\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.sixprotocol.net\"],\n \"icon\": {\n \"url\": \"ipfs://QmP93z696v8Hetu13peY2oEHDXq8Bj5CqaDRwpVkpnM15A\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://six.network/\",\n \"name\": \"Six Protocol Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SIX testnet evm token\",\n \"symbol\": \"tSIX\",\n \"decimals\": 18\n },\n \"networkId\": 150,\n \"rpc\": [\"https://six-protocol-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://150.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-evm.fivenet.sixprotocol.net\"],\n \"shortName\": \"sixt\",\n \"slug\": \"six-protocol-testnet\",\n \"testnet\": true\n};\n\nvar c151 = {\n \"chain\": \"RBN\",\n \"chainId\": 151,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://redbelly.network\",\n \"name\": \"Redbelly Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Redbelly Network Coin\",\n \"symbol\": \"RBNT\",\n \"decimals\": 18\n },\n \"networkId\": 151,\n \"rpc\": [],\n \"shortName\": \"rbn\",\n \"slug\": \"redbelly-network\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c152 = {\n \"chain\": \"RBN\",\n \"chainId\": 152,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://redbelly.network\",\n \"name\": \"Redbelly Network Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Redbelly Network Coin\",\n \"symbol\": \"RBNT\",\n \"decimals\": 18\n },\n \"networkId\": 152,\n \"rpc\": [],\n \"shortName\": \"rbn-devnet\",\n \"slug\": \"redbelly-network-devnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c153 = {\n \"chain\": \"RBN\",\n \"chainId\": 153,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://redbelly.network\",\n \"name\": \"Redbelly Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Redbelly Network Coin\",\n \"symbol\": \"RBNT\",\n \"decimals\": 18\n },\n \"networkId\": 153,\n \"rpc\": [],\n \"shortName\": \"rbn-testnet\",\n \"slug\": \"redbelly-network-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c154 = {\n \"chain\": \"RBN\",\n \"chainId\": 154,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://redbelly.network\",\n \"name\": \"Redbelly Network TGE\",\n \"nativeCurrency\": {\n \"name\": \"Redbelly Network Coin\",\n \"symbol\": \"RBNT\",\n \"decimals\": 18\n },\n \"networkId\": 154,\n \"rpc\": [],\n \"shortName\": \"rbn-tge\",\n \"slug\": \"redbelly-network-tge\",\n \"testnet\": false\n};\n\nvar c155 = {\n \"chain\": \"TENET\",\n \"chainId\": 155,\n \"explorers\": [{\n \"name\": \"TenetScan Testnet\",\n \"url\": \"https://testnet.tenetscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmc1gqjWTzNo4pyFSGtQuCu7kRSZZBUVybtTjHn2nNEEPA\",\n \"width\": 640,\n \"height\": 640,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://faucet.testnet.tenet.org\"],\n \"icon\": {\n \"url\": \"ipfs://Qmc1gqjWTzNo4pyFSGtQuCu7kRSZZBUVybtTjHn2nNEEPA\",\n \"width\": 640,\n \"height\": 640,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://tenet.org/\",\n \"name\": \"Tenet Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TENET\",\n \"symbol\": \"TENET\",\n \"decimals\": 18\n },\n \"networkId\": 155,\n \"rpc\": [\"https://tenet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://155.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.tenet.org\"],\n \"shortName\": \"tenet-testnet\",\n \"slug\": \"tenet-testnet\",\n \"testnet\": true,\n \"title\": \"Tenet Testnet\"\n};\n\nvar c156 = {\n \"chain\": \"OEBt\",\n \"chainId\": 156,\n \"explorers\": [{\n \"name\": \"OEScan explorer\",\n \"url\": \"https://testnet.oescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmdoQUfYqtkWMfjtoPv2KWDY4MxDDSsyWgwXtCx6jfkezz\",\n \"width\": 155,\n \"height\": 177,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.oeblock.com/\",\n \"name\": \"OEBlock Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OEBlock\",\n \"symbol\": \"OEB\",\n \"decimals\": 18\n },\n \"networkId\": 156,\n \"rpc\": [\"https://oeblock-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://156.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.oeblock.com\"],\n \"shortName\": \"obe\",\n \"slug\": \"oeblock-testnet\",\n \"testnet\": true\n};\n\nvar c160 = {\n \"chain\": \"Eva\",\n \"chainId\": 160,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://amax.network\",\n \"name\": \"Armonia Eva Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Armonia Multichain Native Token\",\n \"symbol\": \"AMAX\",\n \"decimals\": 18\n },\n \"networkId\": 160,\n \"rpc\": [\"https://armonia-eva-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://160.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evascan.io/api/eth-rpc/\"],\n \"shortName\": \"eva\",\n \"slug\": \"armonia-eva-chain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c161 = {\n \"chain\": \"Wall-e\",\n \"chainId\": 161,\n \"explorers\": [{\n \"name\": \"blockscout - evascan\",\n \"url\": \"https://testnet.evascan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://amax.network\",\n \"name\": \"Armonia Eva Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Armonia Multichain Native Token\",\n \"symbol\": \"AMAX\",\n \"decimals\": 18\n },\n \"networkId\": 161,\n \"rpc\": [\"https://armonia-eva-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://161.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.evascan.io/api/eth-rpc/\"],\n \"shortName\": \"wall-e\",\n \"slug\": \"armonia-eva-chain-testnet\",\n \"testnet\": true\n};\n\nvar c162 = {\n \"chain\": \"PHT\",\n \"chainId\": 162,\n \"explorers\": [],\n \"faucets\": [\"https://discuss.lightstreams.network/t/request-test-tokens\"],\n \"infoURL\": \"https://explorer.sirius.lightstreams.io\",\n \"name\": \"Lightstreams Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Lightstreams PHT\",\n \"symbol\": \"PHT\",\n \"decimals\": 18\n },\n \"networkId\": 162,\n \"rpc\": [\"https://lightstreams-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://162.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.sirius.lightstreams.io\"],\n \"shortName\": \"tpht\",\n \"slug\": \"lightstreams-testnet\",\n \"testnet\": true\n};\n\nvar c163 = {\n \"chain\": \"PHT\",\n \"chainId\": 163,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://explorer.lightstreams.io\",\n \"name\": \"Lightstreams Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Lightstreams PHT\",\n \"symbol\": \"PHT\",\n \"decimals\": 18\n },\n \"networkId\": 163,\n \"rpc\": [\"https://lightstreams.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://163.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.mainnet.lightstreams.io\"],\n \"shortName\": \"pht\",\n \"slug\": \"lightstreams\",\n \"testnet\": false\n};\n\nvar c165 = {\n \"chain\": \"Omni\",\n \"chainId\": 165,\n \"explorers\": [{\n \"name\": \"Omni Explorer\",\n \"url\": \"https://testnet.explorer.omni.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"infoURL\": \"https://docs.omni.network/\",\n \"name\": \"Omni Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Omni\",\n \"symbol\": \"OMNI\",\n \"decimals\": 18\n },\n \"networkId\": 165,\n \"rpc\": [\"https://omni-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://165.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.omni.network\"],\n \"shortName\": \"omni_testnet\",\n \"slug\": \"omni-testnet\",\n \"testnet\": true\n};\n\nvar c167 = {\n \"chain\": \"ATOSHI\",\n \"chainId\": 167,\n \"explorers\": [{\n \"name\": \"atoshiscan\",\n \"url\": \"https://scan.atoverse.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfFK6B4MFLrpSS46aLf7hjpt28poHFeTGEKEuH248Tbyj\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://atoshi.org\",\n \"name\": \"Atoshi Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ATOSHI\",\n \"symbol\": \"ATOS\",\n \"decimals\": 18\n },\n \"networkId\": 167,\n \"rpc\": [\"https://atoshi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://167.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.atoshi.io/\"],\n \"shortName\": \"atoshi\",\n \"slug\": \"atoshi-testnet\",\n \"testnet\": true\n};\n\nvar c168 = {\n \"chain\": \"AIOZ\",\n \"chainId\": 168,\n \"explorers\": [{\n \"name\": \"AIOZ Network Explorer\",\n \"url\": \"https://explorer.aioz.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRAGPFhvQiXgoJkui7WHajpKctGFrJNhHqzYdwcWt5V3Z\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://aioz.network\",\n \"name\": \"AIOZ Network\",\n \"nativeCurrency\": {\n \"name\": \"AIOZ\",\n \"symbol\": \"AIOZ\",\n \"decimals\": 18\n },\n \"networkId\": 168,\n \"rpc\": [\"https://aioz-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://168.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-dataseed.aioz.network\"],\n \"shortName\": \"aioz\",\n \"slip44\": 60,\n \"slug\": \"aioz-network\",\n \"testnet\": false\n};\n\nvar c169 = {\n \"chain\": \"Manta Pacific\",\n \"chainId\": 169,\n \"explorers\": [{\n \"name\": \"manta-pacific Explorer\",\n \"url\": \"https://pacific-explorer.manta.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTckcVTViRZ3NqT36MTt8AvgBSmudrbgU3pi8AaNtthoV\",\n \"width\": 834,\n \"height\": 834,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://pacific-info.manta.network\",\n \"name\": \"Manta Pacific Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 169,\n \"rpc\": [\"https://manta-pacific.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://169.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pacific-rpc.manta.network/http\"],\n \"shortName\": \"manta\",\n \"slug\": \"manta-pacific\",\n \"testnet\": false\n};\n\nvar c170 = {\n \"chain\": \"ETH\",\n \"chainId\": 170,\n \"explorers\": [],\n \"faucets\": [\"https://faucet-testnet.hscscan.com/\"],\n \"infoURL\": \"https://www.hoosmartchain.com\",\n \"name\": \"HOO Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"HOO\",\n \"symbol\": \"HOO\",\n \"decimals\": 18\n },\n \"networkId\": 170,\n \"rpc\": [\"https://hoo-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://170.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-testnet.hoosmartchain.com\"],\n \"shortName\": \"hoosmartchain\",\n \"slug\": \"hoo-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c172 = {\n \"chain\": \"Resil\",\n \"chainId\": 172,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.latam-blockchain.com\"],\n \"infoURL\": \"https://latam-blockchain.com\",\n \"name\": \"Latam-Blockchain Resil Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Latam-Blockchain Resil Test Native Token\",\n \"symbol\": \"usd\",\n \"decimals\": 18\n },\n \"networkId\": 172,\n \"rpc\": [\"https://latam-blockchain-resil-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://172.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.latam-blockchain.com\", \"wss://ws.latam-blockchain.com\"],\n \"shortName\": \"resil\",\n \"slug\": \"latam-blockchain-resil-testnet\",\n \"testnet\": true\n};\n\nvar c180 = {\n \"chain\": \"AME\",\n \"chainId\": 180,\n \"explorers\": [{\n \"name\": \"AME Scan\",\n \"url\": \"https://amescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://amechain.io/\",\n \"name\": \"AME Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"AME\",\n \"symbol\": \"AME\",\n \"decimals\": 18\n },\n \"networkId\": 180,\n \"rpc\": [\"https://ame-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://180.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.amechain.io/\"],\n \"shortName\": \"ame\",\n \"slug\": \"ame-chain\",\n \"testnet\": false\n};\n\nvar c186 = {\n \"chain\": \"Seele\",\n \"chainId\": 186,\n \"explorers\": [{\n \"name\": \"seeleview\",\n \"url\": \"https://seeleview.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://seelen.pro/\",\n \"name\": \"Seele Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Seele\",\n \"symbol\": \"Seele\",\n \"decimals\": 18\n },\n \"networkId\": 186,\n \"rpc\": [\"https://seele.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://186.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.seelen.pro/\"],\n \"shortName\": \"Seele\",\n \"slug\": \"seele\",\n \"testnet\": false\n};\n\nvar c188 = {\n \"chain\": \"BMC\",\n \"chainId\": 188,\n \"explorers\": [{\n \"name\": \"Blockmeta\",\n \"url\": \"https://bmc.blockmeta.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bmc.bytom.io/\",\n \"name\": \"BMC Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BTM\",\n \"symbol\": \"BTM\",\n \"decimals\": 18\n },\n \"networkId\": 188,\n \"rpc\": [\"https://bmc.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://188.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.bmcchain.com/\"],\n \"shortName\": \"BMC\",\n \"slug\": \"bmc\",\n \"testnet\": false\n};\n\nvar c189 = {\n \"chain\": \"BMC\",\n \"chainId\": 189,\n \"explorers\": [{\n \"name\": \"Blockmeta\",\n \"url\": \"https://bmctestnet.blockmeta.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bmc.bytom.io/\",\n \"name\": \"BMC Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BTM\",\n \"symbol\": \"BTM\",\n \"decimals\": 18\n },\n \"networkId\": 189,\n \"rpc\": [\"https://bmc-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://189.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bmcchain.com\"],\n \"shortName\": \"BMCT\",\n \"slug\": \"bmc-testnet\",\n \"testnet\": true\n};\n\nvar c193 = {\n \"chain\": \"CEM\",\n \"chainId\": 193,\n \"explorers\": [{\n \"name\": \"cemscan\",\n \"url\": \"https://cemscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://cemblockchain.com/\",\n \"name\": \"Crypto Emergency\",\n \"nativeCurrency\": {\n \"name\": \"Crypto Emergency\",\n \"symbol\": \"CEM\",\n \"decimals\": 18\n },\n \"networkId\": 193,\n \"rpc\": [\"https://crypto-emergency.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://193.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cemchain.com\"],\n \"shortName\": \"cem\",\n \"slug\": \"crypto-emergency\",\n \"testnet\": false\n};\n\nvar c195 = {\n \"chain\": \"X1\",\n \"chainId\": 195,\n \"explorers\": [{\n \"name\": \"OKLink\",\n \"url\": \"https://www.oklink.com/x1-test\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.okx.com/x1/faucet\"],\n \"features\": [],\n \"infoURL\": \"https://www.okx.com/x1\",\n \"name\": \"X1 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"X1 Global Utility Token in testnet\",\n \"symbol\": \"OKB\",\n \"decimals\": 18\n },\n \"networkId\": 195,\n \"rpc\": [\"https://x1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://195.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testrpc.x1.tech\", \"https://x1testrpc.okx.com\"],\n \"shortName\": \"tokb\",\n \"slug\": \"x1-testnet\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c196 = {\n \"chain\": \"X1\",\n \"chainId\": 196,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"infoURL\": \"https://www.okx.com/x1\",\n \"name\": \"X1 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"X1 Global Utility Token\",\n \"symbol\": \"OKB\",\n \"decimals\": 18\n },\n \"networkId\": 196,\n \"rpc\": [],\n \"shortName\": \"okb\",\n \"slug\": \"x1\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c197 = {\n \"chain\": \"NEUTR\",\n \"chainId\": 197,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet.neutrinoschain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://neutrinoschain.com/faucet\"],\n \"infoURL\": \"https://docs.neutrinoschain.com\",\n \"name\": \"Neutrinos TestNet\",\n \"nativeCurrency\": {\n \"name\": \"Neutrinos\",\n \"symbol\": \"NEUTR\",\n \"decimals\": 18\n },\n \"networkId\": 197,\n \"rpc\": [\"https://neutrinos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://197.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.neutrinoschain.com\"],\n \"shortName\": \"NEUTR\",\n \"slug\": \"neutrinos-testnet\",\n \"testnet\": true\n};\n\nvar c198 = {\n \"chain\": \"Bit\",\n \"chainId\": 198,\n \"explorers\": [{\n \"name\": \"Bitchain Scan\",\n \"url\": \"https://explorer.bitchain.biz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.bitchain.biz/\",\n \"name\": \"Bitchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitcoin\",\n \"symbol\": \"BTC\",\n \"decimals\": 18\n },\n \"networkId\": 198,\n \"rpc\": [\"https://bitchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://198.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bitchain.biz/\"],\n \"shortName\": \"bit\",\n \"slug\": \"bitchain\",\n \"testnet\": false\n};\n\nvar c199 = {\n \"chain\": \"BTTC\",\n \"chainId\": 199,\n \"explorers\": [{\n \"name\": \"BitTorrent Chain Explorer\",\n \"url\": \"https://bttcscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https:/bt.io\",\n \"name\": \"BitTorrent Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BitTorrent\",\n \"symbol\": \"BTT\",\n \"decimals\": 18\n },\n \"networkId\": 199,\n \"rpc\": [\"https://bittorrent-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://199.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bittorrentchain.io/\"],\n \"shortName\": \"BTT\",\n \"slug\": \"bittorrent-chain\",\n \"testnet\": false\n};\n\nvar c200 = {\n \"chain\": \"AOX\",\n \"chainId\": 200,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/xdai/arbitrum\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://xdaichain.com\",\n \"name\": \"Arbitrum on xDai\",\n \"nativeCurrency\": {\n \"name\": \"xDAI\",\n \"symbol\": \"xDAI\",\n \"decimals\": 18\n },\n \"networkId\": 200,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-100\"\n },\n \"rpc\": [\"https://arbitrum-on-xdai.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://200.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://arbitrum.xdaichain.com/\"],\n \"shortName\": \"aox\",\n \"slug\": \"arbitrum-on-xdai\",\n \"testnet\": false\n};\n\nvar c201 = {\n \"chain\": \"MOAC\",\n \"chainId\": 201,\n \"explorers\": [{\n \"name\": \"moac testnet explorer\",\n \"url\": \"https://testnet.moac.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://moac.io\",\n \"name\": \"MOAC testnet\",\n \"nativeCurrency\": {\n \"name\": \"MOAC\",\n \"symbol\": \"mc\",\n \"decimals\": 18\n },\n \"networkId\": 201,\n \"rpc\": [\"https://moac-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://201.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gateway.moac.io/testnet\"],\n \"shortName\": \"moactest\",\n \"slug\": \"moac-testnet\",\n \"testnet\": true\n};\n\nvar c204 = {\n \"chain\": \"opBNB\",\n \"chainId\": 204,\n \"explorers\": [{\n \"name\": \"opbnbscan\",\n \"url\": \"https://mainnet.opbnbscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeib75gwytvblyvjpfminitr3i6mpat3a624udfsqsl5nysf5vuuvie\",\n \"width\": 96,\n \"height\": 96,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://opbnb.bnbchain.org/en\",\n \"name\": \"opBNB Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BNB Chain Native Token\",\n \"symbol\": \"BNB\",\n \"decimals\": 18\n },\n \"networkId\": 204,\n \"rpc\": [\"https://opbnb.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://204.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://opbnb-mainnet-rpc.bnbchain.org\", \"https://opbnb-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3\", \"wss://opbnb-mainnet.nodereal.io/ws/v1/64a9df0874fb4a93b9d0a3849de012d3\", \"https://opbnb-mainnet.nodereal.io/v1/e9a36765eb8a40b9bd12e680a1fd2bc5\", \"wss://opbnb-mainnet.nodereal.io/ws/v1/e9a36765eb8a40b9bd12e680a1fd2bc5\", \"https://opbnb.publicnode.com\", \"wss://opbnb.publicnode.com\"],\n \"shortName\": \"obnb\",\n \"slip44\": 714,\n \"slug\": \"opbnb\",\n \"testnet\": false\n};\n\nvar c206 = {\n \"chain\": \"VinuChain Testnet\",\n \"chainId\": 206,\n \"explorers\": [{\n \"name\": \"VinuScan Testnet\",\n \"url\": \"https://testnet.vinuscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiayq7a5qncxzlilfnvpgzt4pwfxbof2qrqr2nyd2suztfummpty4i\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidtie4srt52ry67wd3dpxhklmug2ozrawvf3jdlljveinp3frutra\",\n \"width\": 2000,\n \"height\": 392,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://vitainu.org\",\n \"name\": \"VinuChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"VinuChain\",\n \"symbol\": \"VС\",\n \"decimals\": 18\n },\n \"networkId\": 206,\n \"rpc\": [\"https://vinuchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://206.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://vinufoundation-rpc.com\"],\n \"shortName\": \"VCTEST\",\n \"slug\": \"vinuchain-testnet\",\n \"testnet\": true\n};\n\nvar c207 = {\n \"chain\": \"VinuChain\",\n \"chainId\": 207,\n \"explorers\": [{\n \"name\": \"VinuScan\",\n \"url\": \"https://vinuscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiayq7a5qncxzlilfnvpgzt4pwfxbof2qrqr2nyd2suztfummpty4i\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeiderli6uaaxk7eboyf7g4abnybgrkbglmqbkmf25z57ode7zdzmvy\",\n \"width\": 613,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://vitainu.org\",\n \"name\": \"VinuChain Network\",\n \"nativeCurrency\": {\n \"name\": \"VinuChain\",\n \"symbol\": \"VС\",\n \"decimals\": 18\n },\n \"networkId\": 207,\n \"rpc\": [\"https://vinuchain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://207.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://vinuchain-rpc.com\"],\n \"shortName\": \"VC\",\n \"slug\": \"vinuchain-network\",\n \"testnet\": false\n};\n\nvar c208 = {\n \"chain\": \"utx\",\n \"chainId\": 208,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://structx.io\",\n \"name\": \"Structx Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Notes\",\n \"symbol\": \"utx\",\n \"decimals\": 18\n },\n \"networkId\": 208,\n \"rpc\": [\"https://structx.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://208.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.structx.io\"],\n \"shortName\": \"utx\",\n \"slug\": \"structx\",\n \"testnet\": false\n};\n\nvar c210 = {\n \"chain\": \"BTN\",\n \"chainId\": 210,\n \"explorers\": [{\n \"name\": \"Bitnet Explorer\",\n \"url\": \"https://btnscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9h3nFiCzaBLnBNw8Wot4U7vvEVK45EQfi8nxH4nvrmz\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitnet.money\",\n \"name\": \"Bitnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitnet\",\n \"symbol\": \"BTN\",\n \"decimals\": 18\n },\n \"networkId\": 210,\n \"rpc\": [\"https://bitnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://210.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bitnet.money\", \"https://rpc.btnscan.com\"],\n \"shortName\": \"BTN\",\n \"slug\": \"bitnet\",\n \"testnet\": false\n};\n\nvar c211 = {\n \"chain\": \"EDI\",\n \"chainId\": 211,\n \"explorers\": [],\n \"faucets\": [\"http://faucet.freight.sh\"],\n \"infoURL\": \"https://freighttrust.com\",\n \"name\": \"Freight Trust Network\",\n \"nativeCurrency\": {\n \"name\": \"Freight Trust Native\",\n \"symbol\": \"0xF\",\n \"decimals\": 18\n },\n \"networkId\": 0,\n \"rpc\": [\"https://freight-trust-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://211.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://13.57.207.168:3435\", \"https://app.freighttrust.net/ftn/${API_KEY}\"],\n \"shortName\": \"EDI\",\n \"slug\": \"freight-trust-network\",\n \"testnet\": false\n};\n\nvar c212 = {\n \"chain\": \"MAP\",\n \"chainId\": 212,\n \"explorers\": [{\n \"name\": \"mapscan\",\n \"url\": \"https://testnet.mapscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.maplabs.io\"],\n \"infoURL\": \"https://maplabs.io\",\n \"name\": \"MAP Makalu\",\n \"nativeCurrency\": {\n \"name\": \"Makalu MAP\",\n \"symbol\": \"MAP\",\n \"decimals\": 18\n },\n \"networkId\": 212,\n \"rpc\": [\"https://map-makalu.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://212.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.maplabs.io\"],\n \"shortName\": \"makalu\",\n \"slug\": \"map-makalu\",\n \"testnet\": true,\n \"title\": \"MAP Testnet Makalu\"\n};\n\nvar c214 = {\n \"chain\": \"Shinarium\",\n \"chainId\": 214,\n \"explorers\": [{\n \"name\": \"shinascan\",\n \"url\": \"https://shinascan.shinarium.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeiadbavrwcial76vs5ovhyykyaobteltuhliqcthdairbja4klwzhu\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shinarium.org\",\n \"name\": \"Shinarium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Shina Inu\",\n \"symbol\": \"SHI\",\n \"decimals\": 18\n },\n \"networkId\": 214,\n \"rpc\": [\"https://shinarium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://214.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.shinarium.org\"],\n \"shortName\": \"shinarium\",\n \"slug\": \"shinarium\",\n \"testnet\": false\n};\n\nvar c217 = {\n \"chain\": \"SIN2\",\n \"chainId\": 217,\n \"explorers\": [{\n \"name\": \"siriusnet explorer\",\n \"url\": \"https://scan.siriusnet.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeicxuxdzrzpwsil4owqmn7wpwka2rqsohpfqmukg57pifzyxr5om2q\",\n \"width\": 100,\n \"height\": 100,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://siriusnet.io\",\n \"name\": \"SiriusNet V2\",\n \"nativeCurrency\": {\n \"name\": \"MCD\",\n \"symbol\": \"MCD\",\n \"decimals\": 18\n },\n \"networkId\": 217,\n \"rpc\": [\"https://siriusnet-v2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://217.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc2.siriusnet.io\"],\n \"shortName\": \"SIN2\",\n \"slug\": \"siriusnet-v2\",\n \"testnet\": false\n};\n\nvar c218 = {\n \"chain\": \"SOTER\",\n \"chainId\": 218,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.soterone.com\",\n \"name\": \"SoterOne Mainnet old\",\n \"nativeCurrency\": {\n \"name\": \"SoterOne Mainnet Ether\",\n \"symbol\": \"SOTER\",\n \"decimals\": 18\n },\n \"networkId\": 218,\n \"rpc\": [\"https://soterone-old.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://218.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.soter.one\"],\n \"shortName\": \"SO1-old\",\n \"slug\": \"soterone-old\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c222 = {\n \"chain\": \"ASK\",\n \"chainId\": 222,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://permission.io/\",\n \"name\": \"Permission\",\n \"nativeCurrency\": {\n \"name\": \"ASK\",\n \"symbol\": \"ASK\",\n \"decimals\": 18\n },\n \"networkId\": 2221,\n \"rpc\": [\"https://permission.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://222.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://blockchain-api-mainnet.permission.io/rpc\"],\n \"shortName\": \"ASK\",\n \"slip44\": 2221,\n \"slug\": \"permission\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c225 = {\n \"chain\": \"LA\",\n \"chainId\": 225,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.lachain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQxGA6rhuCQDXUueVcNvFRhMEWisyTmnF57TqL7h6k6cZ\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lachain.io\",\n \"name\": \"LACHAIN Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LA\",\n \"symbol\": \"LA\",\n \"decimals\": 18\n },\n \"networkId\": 225,\n \"rpc\": [\"https://lachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://225.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.lachain.io\"],\n \"shortName\": \"LA\",\n \"slug\": \"lachain\",\n \"testnet\": false\n};\n\nvar c226 = {\n \"chain\": \"TLA\",\n \"chainId\": 226,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan-test.lachain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQxGA6rhuCQDXUueVcNvFRhMEWisyTmnF57TqL7h6k6cZ\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lachain.io\",\n \"name\": \"LACHAIN Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TLA\",\n \"symbol\": \"TLA\",\n \"decimals\": 18\n },\n \"networkId\": 226,\n \"rpc\": [\"https://lachain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://226.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.lachain.io\"],\n \"shortName\": \"TLA\",\n \"slug\": \"lachain-testnet\",\n \"testnet\": true\n};\n\nvar c230 = {\n \"chain\": \"SDX\",\n \"chainId\": 230,\n \"explorers\": [{\n \"name\": \"SwapDEX\",\n \"url\": \"https://evm.swapdex.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://swapdex.network/\",\n \"name\": \"SwapDEX\",\n \"nativeCurrency\": {\n \"name\": \"SwapDEX\",\n \"symbol\": \"SDX\",\n \"decimals\": 18\n },\n \"networkId\": 230,\n \"rpc\": [\"https://swapdex.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://230.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.swapdex.network\", \"wss://ss.swapdex.network\"],\n \"shortName\": \"SDX\",\n \"slug\": \"swapdex\",\n \"testnet\": false\n};\n\nvar c236 = {\n \"chain\": \"Deamchain\",\n \"chainId\": 236,\n \"explorers\": [{\n \"name\": \"Deamchain Testnet Explorer\",\n \"url\": \"https://testnet-scan.deamchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXvHWmjfXKdZMSz7x82NR4SjEqigKdJELVHbnzUPkj17F\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://faucet.deamchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmXvHWmjfXKdZMSz7x82NR4SjEqigKdJELVHbnzUPkj17F\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://deamchain.com\",\n \"name\": \"Deamchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Deamchain Native Token\",\n \"symbol\": \"DEAM\",\n \"decimals\": 18\n },\n \"networkId\": 236,\n \"rpc\": [\"https://deamchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://236.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.deamchain.com\"],\n \"shortName\": \"deamtest\",\n \"slug\": \"deamchain-testnet\",\n \"testnet\": true\n};\n\nvar c242 = {\n \"chain\": \"Plinga\",\n \"chainId\": 242,\n \"explorers\": [{\n \"name\": \"plgscan\",\n \"url\": \"https://www.plgscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeibpvlod5nyev6wyuvp6pbestmgvru3ovbadsul32odpno26xwld6y\",\n \"width\": 1039,\n \"height\": 1022,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.plinga.technology/\",\n \"name\": \"Plinga Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Plinga\",\n \"symbol\": \"PLINGA\",\n \"decimals\": 18\n },\n \"networkId\": 242,\n \"rpc\": [\"https://plinga.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://242.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpcurl.mainnet.plgchain.com\", \"https://rpcurl.plgchain.blockchain.evmnode.online\", \"https://rpcurl.mainnet.plgchain.plinga.technology\"],\n \"shortName\": \"plgchain\",\n \"slug\": \"plinga\",\n \"testnet\": false\n};\n\nvar c246 = {\n \"chain\": \"Energy Web Chain\",\n \"chainId\": 246,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.energyweb.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://energyweb.org\",\n \"name\": \"Energy Web Chain\",\n \"nativeCurrency\": {\n \"name\": \"Energy Web Token\",\n \"symbol\": \"EWT\",\n \"decimals\": 18\n },\n \"networkId\": 246,\n \"rpc\": [\"https://energy-web-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://246.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.energyweb.org\", \"wss://rpc.energyweb.org/ws\"],\n \"shortName\": \"ewt\",\n \"slip44\": 246,\n \"slug\": \"energy-web-chain\",\n \"testnet\": false\n};\n\nvar c248 = {\n \"chain\": \"Oasys\",\n \"chainId\": 248,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.oasys.games\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYcGHTPheBwLv9zoJfQAJ7NB6MCtXe2zV7XqPyiTJg3WP/Oasys_Large%20Logo%20Black.png\",\n \"width\": 1250,\n \"height\": 1250,\n \"format\": \".png\"\n },\n \"infoURL\": \"https://oasys.games\",\n \"name\": \"Oasys Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 248,\n \"redFlags\": [],\n \"rpc\": [\"https://oasys.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://248.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mainnet.oasys.games\"],\n \"shortName\": \"OAS\",\n \"slug\": \"oasys\",\n \"testnet\": false\n};\n\nvar c250 = {\n \"chain\": \"FTM\",\n \"chainId\": 250,\n \"explorers\": [{\n \"name\": \"ftmscan\",\n \"url\": \"https://ftmscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRqbK449Fo9sJ3xMpkPbg6uV1weQj4yVV1xNMP9cdPmjf\",\n \"width\": 73,\n \"height\": 73,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://fantom.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/fantom/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fantom.foundation\",\n \"name\": \"Fantom Opera\",\n \"nativeCurrency\": {\n \"name\": \"Fantom\",\n \"symbol\": \"FTM\",\n \"decimals\": 18\n },\n \"networkId\": 250,\n \"redFlags\": [],\n \"rpc\": [\"https://fantom.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://250.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ftm.tools\", \"https://fantom.publicnode.com\", \"wss://fantom.publicnode.com\"],\n \"shortName\": \"ftm\",\n \"slug\": \"fantom\",\n \"testnet\": false\n};\n\nvar c252 = {\n \"chain\": \"FRAX\",\n \"chainId\": 252,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQLJk5G7zF8ZDxSxkRcpHqEqcifrJEhGmEKC6zwyPXWAw/fraxchain.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"PNG\"\n },\n \"infoURL\": \"https://mainnet.frax.com\",\n \"name\": \"Fraxchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Frax Ether\",\n \"symbol\": \"frxETH\",\n \"decimals\": 18\n },\n \"networkId\": 252,\n \"redFlags\": [],\n \"rpc\": [],\n \"shortName\": \"fraxchain\",\n \"slug\": \"fraxchain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c255 = {\n \"chain\": \"ETH\",\n \"chainId\": 255,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.kroma.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"etherscan\",\n \"url\": \"https://kromascan.com/\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho\",\n \"width\": 320,\n \"height\": 320,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://kroma.network\",\n \"name\": \"Kroma\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 255,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://kroma.network/bridge\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://kroma.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://255.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.kroma.network\"],\n \"shortName\": \"kroma\",\n \"slug\": \"kroma\",\n \"testnet\": false\n};\n\nvar c256 = {\n \"chain\": \"Heco\",\n \"chainId\": 256,\n \"explorers\": [],\n \"faucets\": [\"https://scan-testnet.hecochain.com/faucet\"],\n \"infoURL\": \"https://testnet.hecoinfo.com\",\n \"name\": \"Huobi ECO Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Huobi ECO Chain Test Native Token\",\n \"symbol\": \"htt\",\n \"decimals\": 18\n },\n \"networkId\": 256,\n \"rpc\": [\"https://huobi-eco-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://256.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-testnet.hecochain.com\", \"wss://ws-testnet.hecochain.com\"],\n \"shortName\": \"hecot\",\n \"slug\": \"huobi-eco-chain-testnet\",\n \"testnet\": true\n};\n\nvar c258 = {\n \"chain\": \"Setheum\",\n \"chainId\": 258,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://setheum.xyz\",\n \"name\": \"Setheum\",\n \"nativeCurrency\": {\n \"name\": \"Setheum\",\n \"symbol\": \"SETM\",\n \"decimals\": 18\n },\n \"networkId\": 258,\n \"rpc\": [],\n \"shortName\": \"setm\",\n \"slug\": \"setheum\",\n \"testnet\": false\n};\n\nvar c259 = {\n \"chain\": \"Neonlink\",\n \"chainId\": 259,\n \"explorers\": [{\n \"name\": \"Neon Blockchain Explorer\",\n \"url\": \"https://scan.neonlink.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmX3hBv8WyvVfYjh1gmgDfJCpJBvKk4TYG9wFX9sC8WAjz\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmX3hBv8WyvVfYjh1gmgDfJCpJBvKk4TYG9wFX9sC8WAjz\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://neonlink.io\",\n \"name\": \"Neonlink Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Neonlink Native Token\",\n \"symbol\": \"NEON\",\n \"decimals\": 18\n },\n \"networkId\": 259,\n \"rpc\": [\"https://neonlink.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://259.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.neonlink.io\"],\n \"shortName\": \"neon\",\n \"slug\": \"neonlink\",\n \"testnet\": false\n};\n\nvar c262 = {\n \"chain\": \"SUR\",\n \"chainId\": 262,\n \"explorers\": [{\n \"name\": \"Surnet Explorer\",\n \"url\": \"https://explorer.surnet.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmbUcDQHCvheYQrWk9WFJRMW5fTJQmtZqkoGUed4bhCM7T\",\n \"width\": 3000,\n \"height\": 3000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbUcDQHCvheYQrWk9WFJRMW5fTJQmtZqkoGUed4bhCM7T\",\n \"width\": 3000,\n \"height\": 3000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://surnet.org\",\n \"name\": \"SUR Blockchain Network\",\n \"nativeCurrency\": {\n \"name\": \"Suren\",\n \"symbol\": \"SRN\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://sur-blockchain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://262.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sur.nilin.org\"],\n \"shortName\": \"SUR\",\n \"slug\": \"sur-blockchain-network\",\n \"testnet\": false\n};\n\nvar c269 = {\n \"chain\": \"HPB\",\n \"chainId\": 269,\n \"explorers\": [{\n \"name\": \"hscan\",\n \"url\": \"https://hscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://myhpbwallet.com/\"],\n \"infoURL\": \"https://hpb.io\",\n \"name\": \"High Performance Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"High Performance Blockchain Ether\",\n \"symbol\": \"HPB\",\n \"decimals\": 18\n },\n \"networkId\": 269,\n \"rpc\": [\"https://high-performance-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://269.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://hpbnode.com\", \"wss://ws.hpbnode.com\"],\n \"shortName\": \"hpb\",\n \"slip44\": 269,\n \"slug\": \"high-performance-blockchain\",\n \"testnet\": false\n};\n\nvar c271 = {\n \"chain\": \"EGON\",\n \"chainId\": 271,\n \"explorers\": [{\n \"name\": \"EgonCoin Mainnet\",\n \"url\": \"https://egonscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.egonscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmNZiMmzMQYjyGtNSghtzLg4UooYhDgMQsa677DAP5KsBg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://egonscan.com\",\n \"name\": \"EgonCoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EgonCoin\",\n \"symbol\": \"EGON\",\n \"decimals\": 18\n },\n \"networkId\": 271,\n \"rpc\": [\"https://egoncoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://271.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.egonscan.com\"],\n \"shortName\": \"EGONm\",\n \"slug\": \"egoncoin\",\n \"testnet\": false\n};\n\nvar c274 = {\n \"chain\": \"LaChain\",\n \"chainId\": 274,\n \"explorers\": [{\n \"name\": \"LaChain Explorer\",\n \"url\": \"https://explorer.lachain.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQxGA6rhuCQDXUueVcNvFRhMEWisyTmnF57TqL7h6k6cZ\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"name\": \"LaChain\",\n \"nativeCurrency\": {\n \"name\": \"LaCoin\",\n \"symbol\": \"LAC\",\n \"decimals\": 18\n },\n \"networkId\": 274,\n \"rpc\": [\"https://lachain-lachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://274.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.mainnet.lachain.network\", \"https://rpc2.mainnet.lachain.network\", \"https://lachain.rpc-nodes.cedalio.dev\"],\n \"shortName\": \"lachain\",\n \"slug\": \"lachain-lachain\",\n \"testnet\": false\n};\n\nvar c280 = {\n \"chain\": \"ETH\",\n \"chainId\": 280,\n \"explorers\": [{\n \"name\": \"zkSync Era Block Explorer\",\n \"url\": \"https://goerli.explorer.zksync.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://zksync.io/\",\n \"name\": \"zkSync Era Goerli Testnet (deprecated)\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 280,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.zksync.io/\"\n }]\n },\n \"rpc\": [\"https://zksync-era-goerli-testnet-deprecated.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://280.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.era.zksync.dev\"],\n \"shortName\": \"zksync-goerli\",\n \"slug\": \"zksync-era-goerli-testnet-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c288 = {\n \"chain\": \"ETH\",\n \"chainId\": 288,\n \"explorers\": [{\n \"name\": \"Bobascan\",\n \"url\": \"https://bobascan.com\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Blockscout\",\n \"url\": \"https://blockexplorer.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba Network\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 288,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://gateway.boba.network\"\n }]\n },\n \"rpc\": [\"https://boba-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://288.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.boba.network\", \"https://replica.boba.network\", \"https://boba-ethereum.gateway.tenderly.co\", \"https://gateway.tenderly.co/public/boba-ethereum\", \"wss://boba-ethereum.gateway.tenderly.co/\", \"wss://gateway.tenderly.co/public/boba-ethereum\"],\n \"shortName\": \"Boba\",\n \"slug\": \"boba-network\",\n \"testnet\": false\n};\n\nvar c291 = {\n \"chain\": \"ETH\",\n \"chainId\": 291,\n \"explorers\": [{\n \"name\": \"orderlyscout\",\n \"url\": \"https://explorer.orderly.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSpwp3RAVhZsErAQrCQxEmjnGqJQMigarzZbfqr9Ktakb\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"name\": \"Orderly Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 291,\n \"rpc\": [\"https://orderly.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://291.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.orderly.network\", \"https://l2-orderly-mainnet-0.t.conduit.xyz\"],\n \"shortName\": \"orderly\",\n \"slug\": \"orderly\",\n \"testnet\": false\n};\n\nvar c295 = {\n \"chain\": \"Hedera\",\n \"chainId\": 295,\n \"explorers\": [{\n \"name\": \"HashScan\",\n \"url\": \"https://hashscan.io/mainnet\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Arkhia Explorer\",\n \"url\": \"https://explorer.arkhia.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"DragonGlass\",\n \"url\": \"https://app.dragonglass.me\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Hedera Explorer\",\n \"url\": \"https://hederaexplorer.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Ledger Works Explore\",\n \"url\": \"https://explore.lworks.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQikzhvZKyMmbZJd7BVLZb2YTBDMgNDnaMCAErsVjsfuz\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hedera.com\",\n \"name\": \"Hedera Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"hbar\",\n \"symbol\": \"HBAR\",\n \"decimals\": 18\n },\n \"networkId\": 295,\n \"rpc\": [\"https://hedera.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://295.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.hashio.io/api\"],\n \"shortName\": \"hedera-mainnet\",\n \"slip44\": 3030,\n \"slug\": \"hedera\",\n \"testnet\": false\n};\n\nvar c296 = {\n \"chain\": \"Hedera\",\n \"chainId\": 296,\n \"explorers\": [{\n \"name\": \"HashScan\",\n \"url\": \"https://hashscan.io/testnet\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Arkhia Explorer\",\n \"url\": \"https://explorer.arkhia.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"DragonGlass\",\n \"url\": \"https://app.dragonglass.me\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Hedera Explorer\",\n \"url\": \"https://hederaexplorer.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Ledger Works Explore\",\n \"url\": \"https://explore.lworks.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://portal.hedera.com\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQikzhvZKyMmbZJd7BVLZb2YTBDMgNDnaMCAErsVjsfuz\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hedera.com\",\n \"name\": \"Hedera Testnet\",\n \"nativeCurrency\": {\n \"name\": \"hbar\",\n \"symbol\": \"HBAR\",\n \"decimals\": 18\n },\n \"networkId\": 296,\n \"rpc\": [\"https://hedera-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://296.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.hashio.io/api\"],\n \"shortName\": \"hedera-testnet\",\n \"slip44\": 3030,\n \"slug\": \"hedera-testnet\",\n \"testnet\": true\n};\n\nvar c297 = {\n \"chain\": \"Hedera\",\n \"chainId\": 297,\n \"explorers\": [{\n \"name\": \"HashScan\",\n \"url\": \"https://hashscan.io/previewnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://portal.hedera.com\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQikzhvZKyMmbZJd7BVLZb2YTBDMgNDnaMCAErsVjsfuz\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hedera.com\",\n \"name\": \"Hedera Previewnet\",\n \"nativeCurrency\": {\n \"name\": \"hbar\",\n \"symbol\": \"HBAR\",\n \"decimals\": 18\n },\n \"networkId\": 297,\n \"rpc\": [\"https://hedera-previewnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://297.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://previewnet.hashio.io/api\"],\n \"shortName\": \"hedera-previewnet\",\n \"slip44\": 3030,\n \"slug\": \"hedera-previewnet\",\n \"testnet\": false\n};\n\nvar c298 = {\n \"chain\": \"Hedera\",\n \"chainId\": 298,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQikzhvZKyMmbZJd7BVLZb2YTBDMgNDnaMCAErsVjsfuz\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hedera.com\",\n \"name\": \"Hedera Localnet\",\n \"nativeCurrency\": {\n \"name\": \"hbar\",\n \"symbol\": \"HBAR\",\n \"decimals\": 18\n },\n \"networkId\": 298,\n \"rpc\": [],\n \"shortName\": \"hedera-localnet\",\n \"slip44\": 3030,\n \"slug\": \"hedera-localnet\",\n \"testnet\": false\n};\n\nvar c300 = {\n \"chain\": \"ETH\",\n \"chainId\": 300,\n \"explorers\": [{\n \"name\": \"zkSync Block Explorer\",\n \"url\": \"https://sepolia.explorer.zksync.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://zksync.io/\",\n \"name\": \"zkSync Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 300,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.zksync.io/\"\n }]\n },\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://zksync-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://300.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.era.zksync.dev\"],\n \"shortName\": \"zksync-sepolia\",\n \"slug\": \"zksync-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c301 = {\n \"chain\": \"Bobaopera\",\n \"chainId\": 301,\n \"explorers\": [{\n \"name\": \"Bobaopera block explorer\",\n \"url\": \"https://blockexplorer.bobaopera.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Bobaopera\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 301,\n \"rpc\": [\"https://bobaopera.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://301.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bobaopera.boba.network\", \"wss://wss.bobaopera.boba.network\", \"https://replica.bobaopera.boba.network\", \"wss://replica-wss.bobaopera.boba.network\"],\n \"shortName\": \"Bobaopera\",\n \"slug\": \"bobaopera\",\n \"testnet\": false\n};\n\nvar c303 = {\n \"chain\": \"NCN\",\n \"chainId\": 303,\n \"explorers\": [{\n \"name\": \"neuroscan\",\n \"url\": \"https://testnet.ncnscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.neurochain.ai\",\n \"name\": \"Neurochain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Neurochain\",\n \"symbol\": \"tNCN\",\n \"decimals\": 18\n },\n \"networkId\": 303,\n \"rpc\": [\"https://neurochain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://303.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nc-rpc-test1.neurochain.io\"],\n \"shortName\": \"ncnt\",\n \"slug\": \"neurochain-testnet\",\n \"testnet\": true\n};\n\nvar c309 = {\n \"chain\": \"WYZ\",\n \"chainId\": 309,\n \"explorers\": [{\n \"name\": \"wyzth\",\n \"url\": \"http://24.199.108.65:4000\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmT5UMzAftM4mHCtk4pWX4sqyJCki88APbqECywrhJp91Q\",\n \"width\": 324,\n \"height\": 82,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmeDfLgA5heAAXsU8kf5J23Y8up4uHN27uRBEAJFPMJEu7\",\n \"width\": 48,\n \"height\": 48,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://wyzth.org/\",\n \"name\": \"Wyzth Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Wyzth\",\n \"symbol\": \"WYZ\",\n \"decimals\": 18\n },\n \"networkId\": 309,\n \"rpc\": [\"https://wyzth-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://309.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet3.wyzthchain.org/\"],\n \"shortName\": \"wyz\",\n \"slug\": \"wyzth-testnet\",\n \"testnet\": true\n};\n\nvar c311 = {\n \"chain\": \"OMAX Chain\",\n \"chainId\": 311,\n \"explorers\": [{\n \"name\": \"Omax Chain Explorer\",\n \"url\": \"https://omaxray.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmd7omPxrehSuxHHPMYd5Nr7nfrtjKdRJQEhDLfTb87w8G\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.omaxray.com/\"],\n \"icon\": {\n \"url\": \"ipfs://Qmd7omPxrehSuxHHPMYd5Nr7nfrtjKdRJQEhDLfTb87w8G\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.omaxcoin.com/\",\n \"name\": \"Omax Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OMAX COIN\",\n \"symbol\": \"OMAX\",\n \"decimals\": 18\n },\n \"networkId\": 311,\n \"rpc\": [\"https://omax.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://311.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainapi.omaxray.com\"],\n \"shortName\": \"omax\",\n \"slug\": \"omax\",\n \"testnet\": false\n};\n\nvar c313 = {\n \"chain\": \"NCN\",\n \"chainId\": 313,\n \"explorers\": [{\n \"name\": \"neuroscan\",\n \"url\": \"https://ncnscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.neurochain.ai\",\n \"name\": \"Neurochain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Neurochain\",\n \"symbol\": \"NCN\",\n \"decimals\": 18\n },\n \"networkId\": 313,\n \"rpc\": [\"https://neurochain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://313.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nc-rpc-prd1.neurochain.io\", \"https://nc-rpc-prd2.neurochain.io\"],\n \"shortName\": \"ncn\",\n \"slug\": \"neurochain\",\n \"testnet\": false\n};\n\nvar c314 = {\n \"chain\": \"FIL\",\n \"chainId\": 314,\n \"explorers\": [{\n \"name\": \"Filfox\",\n \"url\": \"https://filfox.info/en\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Beryx\",\n \"url\": \"https://beryx.zondax.ch\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Glif Explorer\",\n \"url\": \"https://explorer.glif.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Dev.storage\",\n \"url\": \"https://dev.storage\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Filscan\",\n \"url\": \"https://filscan.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Filscout\",\n \"url\": \"https://filscout.io/en\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"filecoin\",\n \"symbol\": \"FIL\",\n \"decimals\": 18\n },\n \"networkId\": 314,\n \"rpc\": [\"https://filecoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://314.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.node.glif.io/\", \"https://rpc.ankr.com/filecoin\", \"https://filecoin-mainnet.chainstacklabs.com/rpc/v1\", \"https://filfox.info/rpc/v1\"],\n \"shortName\": \"filecoin\",\n \"slip44\": 461,\n \"slug\": \"filecoin\",\n \"testnet\": false\n};\n\nvar c321 = {\n \"chain\": \"KCC\",\n \"chainId\": 321,\n \"explorers\": [{\n \"name\": \"KCC Explorer\",\n \"url\": \"https://explorer.kcc.io/en\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://kcc.io\",\n \"name\": \"KCC Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"KuCoin Token\",\n \"symbol\": \"KCS\",\n \"decimals\": 18\n },\n \"networkId\": 321,\n \"rpc\": [\"https://kcc.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://321.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.kcc.network\", \"https://kcc.mytokenpocket.vip\", \"https://public-rpc.blockpi.io/http/kcc\"],\n \"shortName\": \"kcs\",\n \"slip44\": 641,\n \"slug\": \"kcc\",\n \"testnet\": false\n};\n\nvar c322 = {\n \"chain\": \"KCC\",\n \"chainId\": 322,\n \"explorers\": [{\n \"name\": \"kcc-scan-testnet\",\n \"url\": \"https://scan-testnet.kcc.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-testnet.kcc.network\"],\n \"infoURL\": \"https://scan-testnet.kcc.network\",\n \"name\": \"KCC Testnet\",\n \"nativeCurrency\": {\n \"name\": \"KuCoin Testnet Token\",\n \"symbol\": \"tKCS\",\n \"decimals\": 18\n },\n \"networkId\": 322,\n \"rpc\": [\"https://kcc-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://322.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.kcc.network\"],\n \"shortName\": \"kcst\",\n \"slug\": \"kcc-testnet\",\n \"testnet\": true\n};\n\nvar c324 = {\n \"chain\": \"ETH\",\n \"chainId\": 324,\n \"explorers\": [{\n \"name\": \"zkSync Era Block Explorer\",\n \"url\": \"https://explorer.zksync.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://zksync.io/\",\n \"name\": \"zkSync Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 324,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.zksync.io/\"\n }]\n },\n \"rpc\": [\"https://zksync.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://324.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.era.zksync.io\"],\n \"shortName\": \"zksync\",\n \"slug\": \"zksync\",\n \"testnet\": false\n};\n\nvar c333 = {\n \"chain\": \"Web3Q\",\n \"chainId\": 333,\n \"explorers\": [{\n \"name\": \"w3q-mainnet\",\n \"url\": \"https://explorer.mainnet.web3q.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://web3q.io/home.w3q/\",\n \"name\": \"Web3Q Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Web3Q\",\n \"symbol\": \"W3Q\",\n \"decimals\": 18\n },\n \"networkId\": 333,\n \"rpc\": [\"https://web3q.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.web3q.io:8545\"],\n \"shortName\": \"w3q\",\n \"slug\": \"web3q\",\n \"testnet\": false\n};\n\nvar c335 = {\n \"chain\": \"DFK\",\n \"chainId\": 335,\n \"explorers\": [{\n \"name\": \"ethernal\",\n \"url\": \"https://explorer-test.dfkchain.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQB48m15TzhUFrmu56QCRQjkrkgUaKfgCmKE8o3RzmuPJ\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://defikingdoms.com\",\n \"name\": \"DFK Chain Test\",\n \"nativeCurrency\": {\n \"name\": \"Jewel\",\n \"symbol\": \"JEWEL\",\n \"decimals\": 18\n },\n \"networkId\": 335,\n \"rpc\": [\"https://dfk-chain-test.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://335.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain-testnet/rpc\"],\n \"shortName\": \"DFKTEST\",\n \"slug\": \"dfk-chain-test\",\n \"testnet\": true\n};\n\nvar c336 = {\n \"chain\": \"SDN\",\n \"chainId\": 336,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/shiden\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"subscan\",\n \"url\": \"https://shiden.subscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://Qma2GfW5nQHuA7nGqdEfwaXPL63G9oTwRTQKaGTfjNtM2W\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQySjAoWHgk3ou1yvBi2TrTcgH6KhfGiU7GcrLzrAeRkE\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shiden.astar.network/\",\n \"name\": \"Shiden\",\n \"nativeCurrency\": {\n \"name\": \"Shiden\",\n \"symbol\": \"SDN\",\n \"decimals\": 18\n },\n \"networkId\": 336,\n \"rpc\": [\"https://shiden.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://336.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://shiden.api.onfinality.io/public\", \"https://shiden-rpc.dwellir.com\", \"https://shiden.public.blastapi.io\", \"wss://shiden.api.onfinality.io/public-ws\", \"wss://shiden.public.blastapi.io\", \"wss://shiden-rpc.dwellir.com\"],\n \"shortName\": \"sdn\",\n \"slug\": \"shiden\",\n \"testnet\": false\n};\n\nvar c338 = {\n \"chain\": \"CRO\",\n \"chainId\": 338,\n \"explorers\": [{\n \"name\": \"Cronos Testnet Explorer\",\n \"url\": \"https://explorer.cronos.org/testnet\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://cronos.org/faucet\"],\n \"infoURL\": \"https://cronos.org\",\n \"name\": \"Cronos Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Cronos Test Coin\",\n \"symbol\": \"TCRO\",\n \"decimals\": 18\n },\n \"networkId\": 338,\n \"rpc\": [\"https://cronos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://338.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-t3.cronos.org\"],\n \"shortName\": \"tcro\",\n \"slug\": \"cronos-testnet\",\n \"testnet\": true\n};\n\nvar c345 = {\n \"chain\": \"Yooldo Verse\",\n \"chainId\": 345,\n \"explorers\": [{\n \"name\": \"Yooldo Verse Explorer\",\n \"url\": \"https://explorer.yooldo-verse.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWvfA2usnYp1ktzLcqFS8eTLgdp4ifrxjiify46KyG9NZ\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://yooldo.gg/\",\n \"name\": \"Yooldo Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 345,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://yooldo-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://345.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.yooldo-verse.xyz/\"],\n \"shortName\": \"YVM\",\n \"slug\": \"yooldo-verse\",\n \"testnet\": false\n};\n\nvar c361 = {\n \"chain\": \"Theta\",\n \"chainId\": 361,\n \"explorers\": [{\n \"name\": \"Theta Mainnet Explorer\",\n \"url\": \"https://explorer.thetatoken.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thetatoken.org/\",\n \"name\": \"Theta Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Theta Fuel\",\n \"symbol\": \"TFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 361,\n \"rpc\": [\"https://theta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://361.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-api.thetatoken.org/rpc\"],\n \"shortName\": \"theta-mainnet\",\n \"slug\": \"theta\",\n \"testnet\": false\n};\n\nvar c363 = {\n \"chain\": \"Theta\",\n \"chainId\": 363,\n \"explorers\": [{\n \"name\": \"Theta Sapphire Testnet Explorer\",\n \"url\": \"https://guardian-testnet-sapphire-explorer.thetatoken.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thetatoken.org/\",\n \"name\": \"Theta Sapphire Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Theta Fuel\",\n \"symbol\": \"TFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 363,\n \"rpc\": [\"https://theta-sapphire-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://363.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-api-sapphire.thetatoken.org/rpc\"],\n \"shortName\": \"theta-sapphire\",\n \"slug\": \"theta-sapphire-testnet\",\n \"testnet\": true\n};\n\nvar c364 = {\n \"chain\": \"Theta\",\n \"chainId\": 364,\n \"explorers\": [{\n \"name\": \"Theta Amber Testnet Explorer\",\n \"url\": \"https://guardian-testnet-amber-explorer.thetatoken.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thetatoken.org/\",\n \"name\": \"Theta Amber Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Theta Fuel\",\n \"symbol\": \"TFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 364,\n \"rpc\": [\"https://theta-amber-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://364.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-api-amber.thetatoken.org/rpc\"],\n \"shortName\": \"theta-amber\",\n \"slug\": \"theta-amber-testnet\",\n \"testnet\": true\n};\n\nvar c365 = {\n \"chain\": \"Theta\",\n \"chainId\": 365,\n \"explorers\": [{\n \"name\": \"Theta Testnet Explorer\",\n \"url\": \"https://testnet-explorer.thetatoken.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thetatoken.org/\",\n \"name\": \"Theta Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Theta Fuel\",\n \"symbol\": \"TFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 365,\n \"rpc\": [\"https://theta-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://365.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-api-testnet.thetatoken.org/rpc\"],\n \"shortName\": \"theta-testnet\",\n \"slug\": \"theta-testnet\",\n \"testnet\": true\n};\n\nvar c369 = {\n \"chain\": \"PLS\",\n \"chainId\": 369,\n \"ens\": {\n \"registry\": \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n },\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.pulsechain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"otterscan\",\n \"url\": \"https://otter.pulsechain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://pulsechain.com/\",\n \"name\": \"PulseChain\",\n \"nativeCurrency\": {\n \"name\": \"Pulse\",\n \"symbol\": \"PLS\",\n \"decimals\": 18\n },\n \"networkId\": 369,\n \"rpc\": [\"https://pulsechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://369.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.pulsechain.com\", \"wss://rpc.pulsechain.com\", \"https://pulsechain.publicnode.com\", \"wss://pulsechain.publicnode.com\", \"https://rpc-pulsechain.g4mm4.io\", \"wss://rpc-pulsechain.g4mm4.io\"],\n \"shortName\": \"pls\",\n \"slip44\": 60,\n \"slug\": \"pulsechain\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c371 = {\n \"chain\": \"tCNT\",\n \"chainId\": 371,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer-testnet.theconsta.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfQ1yae6uvXgBSwnwJM4Mtp8ctH66tM6mB1Hsgu4XvsC9\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"http://theconsta.com\",\n \"name\": \"Consta Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tCNT\",\n \"symbol\": \"tCNT\",\n \"decimals\": 18\n },\n \"networkId\": 371,\n \"rpc\": [\"https://consta-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://371.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.theconsta.com\"],\n \"shortName\": \"tCNT\",\n \"slug\": \"consta-testnet\",\n \"testnet\": true\n};\n\nvar c385 = {\n \"chain\": \"CRO\",\n \"chainId\": 385,\n \"explorers\": [],\n \"faucets\": [\"https://pipa.lisinski.online\"],\n \"infoURL\": \"https://lisinski.online\",\n \"name\": \"Lisinski\",\n \"nativeCurrency\": {\n \"name\": \"Lisinski Ether\",\n \"symbol\": \"LISINS\",\n \"decimals\": 18\n },\n \"networkId\": 385,\n \"rpc\": [\"https://lisinski.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://385.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-bitfalls1.lisinski.online\"],\n \"shortName\": \"lisinski\",\n \"slug\": \"lisinski\",\n \"testnet\": false\n};\n\nvar c399 = {\n \"chain\": \"Nativ3\",\n \"chainId\": 399,\n \"explorers\": [{\n \"name\": \"N3scan\",\n \"url\": \"https://scan.nativ3.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVzJDndPui6qBSeJWe5kMLA56C3KpVhqqqk9xvVKE1DGb\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nativ3.network\",\n \"name\": \"Nativ3 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"USNT\",\n \"symbol\": \"USNT\",\n \"decimals\": 18\n },\n \"networkId\": 399,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-42161\",\n \"bridges\": [{\n \"url\": \"https://bridge.nativ3.network\"\n }]\n },\n \"rpc\": [\"https://nativ3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://399.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.nativ3.network\", \"wss://ws.nativ3.network\"],\n \"shortName\": \"N3\",\n \"slug\": \"nativ3\",\n \"testnet\": false\n};\n\nvar c400 = {\n \"chain\": \"HPN\",\n \"chainId\": 400,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet.hyperonchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmWxhyxXTEsWH98v7M3ck4ZL1qQoUaHG4HgtgxzD2KJQ5m\",\n \"width\": 540,\n \"height\": 541,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.hyperonchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmWxhyxXTEsWH98v7M3ck4ZL1qQoUaHG4HgtgxzD2KJQ5m\",\n \"width\": 540,\n \"height\": 541,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.hyperonchain.com\",\n \"name\": \"HyperonChain TestNet\",\n \"nativeCurrency\": {\n \"name\": \"HyperonChain\",\n \"symbol\": \"HPN\",\n \"decimals\": 18\n },\n \"networkId\": 400,\n \"rpc\": [\"https://hyperonchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://400.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.hyperonchain.com\"],\n \"shortName\": \"hpn\",\n \"slug\": \"hyperonchain-testnet\",\n \"testnet\": true\n};\n\nvar c401 = {\n \"chain\": \"OZONE\",\n \"chainId\": 401,\n \"explorers\": [{\n \"name\": \"OZONE Scan\",\n \"url\": \"https://testnet.ozonescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbM4weV8Bk6c9yNhosYntkVw39SNZtCHYGgWyXTxkevZ8\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ozonechain.io\",\n \"name\": \"Ozone Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OZONE\",\n \"symbol\": \"OZO\",\n \"decimals\": 18\n },\n \"networkId\": 401,\n \"rpc\": [\"https://ozone-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://401.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.testnet.ozonechain.io\"],\n \"shortName\": \"ozo_tst\",\n \"slug\": \"ozone-chain-testnet\",\n \"testnet\": true\n};\n\nvar c408 = {\n \"chain\": \"OmegaNetwork\",\n \"chainId\": 408,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreig676zxfhwhcx5bvvvjxedx6ftr2wq4iiznrwm3c6ozrprbc4oxwm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"name\": \"Omega Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Omega Network Coin\",\n \"symbol\": \"OMN\",\n \"decimals\": 18\n },\n \"networkId\": 408,\n \"redFlags\": [],\n \"rpc\": [\"https://omega.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://408.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.omtch.com\"],\n \"shortName\": \"OmegaNetwork\",\n \"slug\": \"omega\",\n \"testnet\": false\n};\n\nvar c411 = {\n \"chain\": \"PC\",\n \"chainId\": 411,\n \"explorers\": [{\n \"name\": \"pepechain explorer\",\n \"url\": \"https://explorer.pepe-chain.vip\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibjsc3gww3moti27za2hpyq552aevux3yv5y2ntdklksyr4v4uavy\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://pepe-chain.vip\",\n \"name\": \"Pepe Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Pepe\",\n \"symbol\": \"PEPE\",\n \"decimals\": 18\n },\n \"networkId\": 411,\n \"rpc\": [\"https://pepe-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://411.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.pepe-chain.vip\"],\n \"shortName\": \"pepe\",\n \"slug\": \"pepe-chain\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c416 = {\n \"chain\": \"SX\",\n \"chainId\": 416,\n \"explorers\": [{\n \"name\": \"SX Network Explorer\",\n \"url\": \"https://explorer.sx.technology\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSXLXqyr2H6Ja5XrmznXbWTEvF2gFaL8RXNXgyLmDHjAF\",\n \"width\": 896,\n \"height\": 690,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.sx.technology\",\n \"name\": \"SX Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SX Network\",\n \"symbol\": \"SX\",\n \"decimals\": 18\n },\n \"networkId\": 416,\n \"rpc\": [\"https://sx-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://416.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.sx.technology\"],\n \"shortName\": \"SX\",\n \"slug\": \"sx-network\",\n \"testnet\": false\n};\n\nvar c418 = {\n \"chain\": \"LaTestnet\",\n \"chainId\": 418,\n \"explorers\": [{\n \"name\": \"LaTestnet Explorer\",\n \"url\": \"https://testexplorer.lachain.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.lachain.network\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQxGA6rhuCQDXUueVcNvFRhMEWisyTmnF57TqL7h6k6cZ\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"name\": \"LaTestnet\",\n \"nativeCurrency\": {\n \"name\": \"Test LaCoin\",\n \"symbol\": \"TLA\",\n \"decimals\": 18\n },\n \"networkId\": 418,\n \"rpc\": [\"https://latestnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://418.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.lachain.network\", \"https://lachain-testnet.rpc-nodes.cedalio.dev\"],\n \"shortName\": \"latestnet\",\n \"slug\": \"latestnet\",\n \"testnet\": true\n};\n\nvar c420 = {\n \"chain\": \"ETH\",\n \"chainId\": 420,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://optimism-goerli.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/optimism/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://optimism.io\",\n \"name\": \"Optimism Goerli Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 420,\n \"redFlags\": [],\n \"rpc\": [\"https://optimism-goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://420.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli.optimism.io\", \"https://optimism-goerli.publicnode.com\", \"wss://optimism-goerli.publicnode.com\", \"https://optimism-goerli.gateway.tenderly.co\", \"wss://optimism-goerli.gateway.tenderly.co\"],\n \"shortName\": \"ogor\",\n \"slug\": \"optimism-goerli\",\n \"testnet\": true\n};\n\nvar c424 = {\n \"chain\": \"ETH\",\n \"chainId\": 424,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.publicgoods.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmUVJ7MLCEAfq3pHVPFLscqRMiyAY5biVgTkeDQCmAhHNS\",\n \"width\": 574,\n \"height\": 574,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://publicgoods.network/\",\n \"name\": \"PGN (Public Goods Network)\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 424,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.publicgoods.network\"\n }]\n },\n \"rpc\": [\"https://pgn-public-goods-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://424.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.publicgoods.network\"],\n \"shortName\": \"PGN\",\n \"slug\": \"pgn-public-goods-network\",\n \"testnet\": false\n};\n\nvar c427 = {\n \"chain\": \"ZeethChain\",\n \"chainId\": 427,\n \"explorers\": [{\n \"name\": \"Zeeth Explorer\",\n \"url\": \"https://explorer.zeeth.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"name\": \"Zeeth Chain\",\n \"nativeCurrency\": {\n \"name\": \"Zeeth Token\",\n \"symbol\": \"ZTH\",\n \"decimals\": 18\n },\n \"networkId\": 427,\n \"rpc\": [\"https://zeeth-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://427.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zeeth.io\"],\n \"shortName\": \"zeeth\",\n \"slug\": \"zeeth-chain\",\n \"testnet\": false\n};\n\nvar c428 = {\n \"chain\": \"Geso Verse\",\n \"chainId\": 428,\n \"explorers\": [{\n \"name\": \"Geso Verse Explorer\",\n \"url\": \"https://explorer.verse.gesoten.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmb7oJY9zd9sTzxNNQNTVZQz2hkd1aA94mWm4cvXfJ9QxV\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gesoten.com/\",\n \"name\": \"Geso Verse\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 428,\n \"rpc\": [\"https://geso-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://428.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.verse.gesoten.com/\"],\n \"shortName\": \"GSV\",\n \"slug\": \"geso-verse\",\n \"testnet\": false\n};\n\nvar c443 = {\n \"chain\": \"ETH\",\n \"chainId\": 443,\n \"explorers\": [{\n \"name\": \"Obscuro Sepolia Rollup Explorer\",\n \"url\": \"https://testnet.obscuroscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://obscu.ro\",\n \"name\": \"Obscuro Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 443,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://bridge.obscu.ro\"\n }]\n },\n \"rpc\": [\"https://obscuro-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://443.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.obscu.ro\"],\n \"shortName\": \"obs-testnet\",\n \"slug\": \"obscuro-testnet\",\n \"testnet\": true,\n \"title\": \"Obscuro Sepolia Rollup Testnet\"\n};\n\nvar c444 = {\n \"chain\": \"ETH\",\n \"chainId\": 444,\n \"explorers\": [{\n \"name\": \"Synapse Chain Sepolia\",\n \"url\": \"https://sepolia.synapsescan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmX2Z71QszaZvpMppdNWeCLqmeWk8NA6KMDLMqAt5VRyVi/synapse.webp\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"webp\"\n },\n \"infoURL\": \"https://synapseprotocol.com\",\n \"name\": \"Synapse Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia ETH\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 444,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://docs.synapseprotocol.com/synapse-chain/using-synapse-chain/bridging-to-synapse-chain\"\n }]\n },\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://synapse-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://444.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.synapseprotocol.com\"],\n \"shortName\": \"synapse-sepolia\",\n \"slug\": \"synapse-chain-testnet\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c456 = {\n \"chain\": \"ARZIO\",\n \"chainId\": 456,\n \"explorers\": [{\n \"name\": \"ARZIO Scan\",\n \"url\": \"https://scan.arzio.co\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUwqGWGjjQweTprn5LBirAwRjYnteTiFLCVpSNHrfMmSL\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://chain.arzio.co\",\n \"name\": \"ARZIO Chain\",\n \"nativeCurrency\": {\n \"name\": \"ARZIO\",\n \"symbol\": \"AZO\",\n \"decimals\": 18\n },\n \"networkId\": 456,\n \"rpc\": [\"https://arzio-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://456.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://chain-rpc.arzio.co\"],\n \"shortName\": \"arzio\",\n \"slug\": \"arzio-chain\",\n \"testnet\": false\n};\n\nvar c462 = {\n \"chain\": \"Areon\",\n \"chainId\": 462,\n \"explorers\": [{\n \"name\": \"AreonScan\",\n \"url\": \"https://areonscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihs2nrnizpcuzjmuu2yi7wrtwd7qlqje46qnil5bnntfbfkb2roea\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://areon.network\",\n \"name\": \"Areon Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Areon\",\n \"symbol\": \"TAREA\",\n \"decimals\": 18\n },\n \"networkId\": 462,\n \"rpc\": [\"https://areon-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://462.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.areon.network\"],\n \"shortName\": \"tarea\",\n \"slug\": \"areon-network-testnet\",\n \"testnet\": true\n};\n\nvar c463 = {\n \"chain\": \"Areon\",\n \"chainId\": 463,\n \"explorers\": [{\n \"name\": \"AreonScan\",\n \"url\": \"https://areonscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihs2nrnizpcuzjmuu2yi7wrtwd7qlqje46qnil5bnntfbfkb2roea\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://areon.network\",\n \"name\": \"Areon Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Areon\",\n \"symbol\": \"AREA\",\n \"decimals\": 18\n },\n \"networkId\": 463,\n \"rpc\": [\"https://areon-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://463.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.areon.network\"],\n \"shortName\": \"area\",\n \"slug\": \"areon-network\",\n \"testnet\": false\n};\n\nvar c499 = {\n \"chain\": \"RUPX\",\n \"chainId\": 499,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.rupx.io\",\n \"name\": \"Rupaya\",\n \"nativeCurrency\": {\n \"name\": \"Rupaya\",\n \"symbol\": \"RUPX\",\n \"decimals\": 18\n },\n \"networkId\": 499,\n \"rpc\": [],\n \"shortName\": \"rupx\",\n \"slip44\": 499,\n \"slug\": \"rupaya\",\n \"testnet\": false\n};\n\nvar c500 = {\n \"chain\": \"CAM\",\n \"chainId\": 500,\n \"explorers\": [{\n \"name\": \"blockexplorer\",\n \"url\": \"https://suite.camino.network/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSEoUonisawfCvT3osysuZzbqUEHugtgNraePKWL8PKYa\",\n \"width\": 768,\n \"height\": 768,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://camino.network/\",\n \"name\": \"Camino C-Chain\",\n \"nativeCurrency\": {\n \"name\": \"Camino\",\n \"symbol\": \"CAM\",\n \"decimals\": 18\n },\n \"networkId\": 1000,\n \"rpc\": [\"https://camino-c-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://500.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.camino.network/ext/bc/C/rpc\"],\n \"shortName\": \"Camino\",\n \"slug\": \"camino-c-chain\",\n \"testnet\": false\n};\n\nvar c501 = {\n \"chain\": \"CAM\",\n \"chainId\": 501,\n \"explorers\": [{\n \"name\": \"blockexplorer\",\n \"url\": \"https://suite.camino.network/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSEoUonisawfCvT3osysuZzbqUEHugtgNraePKWL8PKYa\",\n \"width\": 768,\n \"height\": 768,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://camino.network/\",\n \"name\": \"Columbus Test Network\",\n \"nativeCurrency\": {\n \"name\": \"Camino\",\n \"symbol\": \"CAM\",\n \"decimals\": 18\n },\n \"networkId\": 1001,\n \"rpc\": [\"https://columbus-test-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://501.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://columbus.camino.network/ext/bc/C/rpc\"],\n \"shortName\": \"Columbus\",\n \"slug\": \"columbus-test-network\",\n \"testnet\": true\n};\n\nvar c512 = {\n \"chain\": \"AAC\",\n \"chainId\": 512,\n \"explorers\": [{\n \"name\": \"aacscan\",\n \"url\": \"https://scan.acuteangle.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRUrz4dULaoaMpnqd8qXT7ehwz3aaqnYKY4ePsy7isGaF\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.acuteangle.com/\",\n \"name\": \"Double-A Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Acuteangle Native Token\",\n \"symbol\": \"AAC\",\n \"decimals\": 18\n },\n \"networkId\": 512,\n \"rpc\": [\"https://double-a-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://512.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.acuteangle.com\"],\n \"shortName\": \"aac\",\n \"slip44\": 1512,\n \"slug\": \"double-a-chain\",\n \"testnet\": false\n};\n\nvar c513 = {\n \"chain\": \"AAC\",\n \"chainId\": 513,\n \"explorers\": [{\n \"name\": \"aacscan-testnet\",\n \"url\": \"https://scan-testnet.acuteangle.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://scan-testnet.acuteangle.com/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmRUrz4dULaoaMpnqd8qXT7ehwz3aaqnYKY4ePsy7isGaF\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.acuteangle.com/\",\n \"name\": \"Double-A Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Acuteangle Native Token\",\n \"symbol\": \"AAC\",\n \"decimals\": 18\n },\n \"networkId\": 513,\n \"rpc\": [\"https://double-a-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://513.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.acuteangle.com\"],\n \"shortName\": \"aact\",\n \"slug\": \"double-a-chain-testnet\",\n \"testnet\": true\n};\n\nvar c516 = {\n \"chain\": \"GearZero\",\n \"chainId\": 516,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://token.gearzero.ca/mainnet\",\n \"name\": \"Gear Zero Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Gear Zero Network Native Token\",\n \"symbol\": \"GZN\",\n \"decimals\": 18\n },\n \"networkId\": 516,\n \"rpc\": [\"https://gear-zero-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://516.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gzn.linksme.info\"],\n \"shortName\": \"gz-mainnet\",\n \"slip44\": 516,\n \"slug\": \"gear-zero-network\",\n \"testnet\": false\n};\n\nvar c520 = {\n \"chain\": \"XSC\",\n \"chainId\": 520,\n \"explorers\": [{\n \"name\": \"xscscan\",\n \"url\": \"https://xscscan.pub\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://xsc.pub/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmNmAFgQKkjofaBR5mhB5ygE1Gna36YBVsGkgZQxrwW85s\",\n \"width\": 98,\n \"height\": 96,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xsc.pub/\",\n \"name\": \"XT Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"XT Smart Chain Native Token\",\n \"symbol\": \"XT\",\n \"decimals\": 18\n },\n \"networkId\": 1024,\n \"rpc\": [\"https://xt-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://520.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://datarpc1.xsc.pub\", \"https://datarpc2.xsc.pub\", \"https://datarpc3.xsc.pub\"],\n \"shortName\": \"xt\",\n \"slug\": \"xt-smart-chain\",\n \"testnet\": false\n};\n\nvar c529 = {\n \"chain\": \"FIRE\",\n \"chainId\": 529,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYjuztyURb3Fc6ZTLgCbwQa64CcVoigF5j9cafzuSbqgf\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thefirechain.com\",\n \"name\": \"Firechain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Firechain\",\n \"symbol\": \"FIRE\",\n \"decimals\": 18\n },\n \"networkId\": 529,\n \"rpc\": [\"https://firechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://529.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.rpc1.thefirechain.com\"],\n \"shortName\": \"fire\",\n \"slug\": \"firechain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c530 = {\n \"chain\": \"Fxcore\",\n \"chainId\": 530,\n \"explorers\": [{\n \"name\": \"FunctionX Explorer\",\n \"url\": \"https://fx-evm.functionx.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifrf2iq3k3dqfbvp3pacwuxu33up3usmrhojt5ielyfty7xkixu3i\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://functionx.io/\",\n \"name\": \"F(x)Core Mainnet Network\",\n \"nativeCurrency\": {\n \"name\": \"Function X\",\n \"symbol\": \"FX\",\n \"decimals\": 18\n },\n \"networkId\": 530,\n \"rpc\": [\"https://f-x-core-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://530.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fx-json-web3.functionx.io:8545\"],\n \"shortName\": \"FxCore\",\n \"slug\": \"f-x-core-network\",\n \"testnet\": false\n};\n\nvar c534 = {\n \"chain\": \"Candle\",\n \"chainId\": 534,\n \"explorers\": [{\n \"name\": \"candleexplorer\",\n \"url\": \"https://candleexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://candlelabs.org/\",\n \"name\": \"Candle\",\n \"nativeCurrency\": {\n \"name\": \"CANDLE\",\n \"symbol\": \"CNDL\",\n \"decimals\": 18\n },\n \"networkId\": 534,\n \"rpc\": [\"https://candle.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://534.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://candle-rpc.com/\", \"https://rpc.cndlchain.com\"],\n \"shortName\": \"CNDL\",\n \"slip44\": 674,\n \"slug\": \"candle\",\n \"testnet\": false\n};\n\nvar c542 = {\n \"chain\": \"PAW\",\n \"chainId\": 542,\n \"explorers\": [{\n \"name\": \"PAWCHAIN Testnet\",\n \"url\": \"https://pawscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://pawchainx.com/\",\n \"name\": \"PAWCHAIN Testnet\",\n \"nativeCurrency\": {\n \"name\": \"PAW\",\n \"symbol\": \"PAW\",\n \"decimals\": 18\n },\n \"networkId\": 542,\n \"rpc\": [\"https://pawchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://542.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pawchainx.com/\"],\n \"shortName\": \"PAW\",\n \"slug\": \"pawchain-testnet\",\n \"testnet\": true\n};\n\nvar c555 = {\n \"chain\": \"VELA1\",\n \"chainId\": 555,\n \"explorers\": [{\n \"name\": \"Vela1 Chain Mainnet Explorer\",\n \"url\": \"https://exp.velaverse.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://velaverse.io\",\n \"name\": \"Vela1 Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CLASS COIN\",\n \"symbol\": \"CLASS\",\n \"decimals\": 18\n },\n \"networkId\": 555,\n \"rpc\": [\"https://vela1-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.velaverse.io\"],\n \"shortName\": \"CLASS\",\n \"slug\": \"vela1-chain\",\n \"testnet\": false\n};\n\nvar c558 = {\n \"chain\": \"TAO\",\n \"chainId\": 558,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://tao.network\",\n \"name\": \"Tao Network\",\n \"nativeCurrency\": {\n \"name\": \"Tao\",\n \"symbol\": \"TAO\",\n \"decimals\": 18\n },\n \"networkId\": 558,\n \"rpc\": [\"https://tao-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://558.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.tao.network\", \"http://rpc.testnet.tao.network:8545\", \"https://rpc.tao.network\", \"wss://rpc.tao.network\"],\n \"shortName\": \"tao\",\n \"slug\": \"tao-network\",\n \"testnet\": true\n};\n\nvar c568 = {\n \"chain\": \"DC\",\n \"chainId\": 568,\n \"explorers\": [{\n \"name\": \"dogechain testnet explorer\",\n \"url\": \"https://explorer-testnet.dogechain.dog\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dogechain.dog\"],\n \"icon\": {\n \"url\": \"ipfs://QmNS6B6L8FfgGSMTEi2SxD3bK5cdmKPNtQKcYaJeRWrkHs\",\n \"width\": 732,\n \"height\": 732,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dogechain.dog\",\n \"name\": \"Dogechain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Dogecoin\",\n \"symbol\": \"DOGE\",\n \"decimals\": 18\n },\n \"networkId\": 568,\n \"rpc\": [\"https://dogechain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://568.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.dogechain.dog\"],\n \"shortName\": \"dct\",\n \"slug\": \"dogechain-testnet\",\n \"testnet\": true\n};\n\nvar c570 = {\n \"chain\": \"SYS\",\n \"chainId\": 570,\n \"explorers\": [{\n \"name\": \"Rollux Explorer\",\n \"url\": \"https://explorer.rollux.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://rollux.id/faucetapp\"],\n \"infoURL\": \"https://rollux.com\",\n \"name\": \"Rollux Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Syscoin\",\n \"symbol\": \"SYS\",\n \"decimals\": 18\n },\n \"networkId\": 570,\n \"rpc\": [\"https://rollux.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://570.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.rollux.com\", \"wss://rpc.rollux.com/wss\"],\n \"shortName\": \"sys-rollux\",\n \"slug\": \"rollux\",\n \"testnet\": false\n};\n\nvar c588 = {\n \"chain\": \"ETH\",\n \"chainId\": 588,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://stardust-explorer.metis.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.metis.io\",\n \"name\": \"Metis Stardust Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tMetis\",\n \"symbol\": \"METIS\",\n \"decimals\": 18\n },\n \"networkId\": 588,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-4\",\n \"bridges\": [{\n \"url\": \"https://bridge.metis.io\"\n }]\n },\n \"rpc\": [\"https://metis-stardust-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://588.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://stardust.metis.io/?owner=588\"],\n \"shortName\": \"metis-stardust\",\n \"slug\": \"metis-stardust-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c592 = {\n \"chain\": \"ASTR\",\n \"chainId\": 592,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/astar\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"subscan\",\n \"url\": \"https://astar.subscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://Qma2GfW5nQHuA7nGqdEfwaXPL63G9oTwRTQKaGTfjNtM2W\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmdvmx3p6gXBCLUMU1qivscaTNkT6h3URdhUTZCHLwKudg\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://astar.network/\",\n \"name\": \"Astar\",\n \"nativeCurrency\": {\n \"name\": \"Astar\",\n \"symbol\": \"ASTR\",\n \"decimals\": 18\n },\n \"networkId\": 592,\n \"redFlags\": [],\n \"rpc\": [\"https://astar.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://592.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.astar.network\", \"https://rpc.astar.network:8545\"],\n \"shortName\": \"astr\",\n \"slug\": \"astar\",\n \"testnet\": false\n};\n\nvar c595 = {\n \"chain\": \"mACA\",\n \"chainId\": 595,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.mandala.aca-staging.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://acala.network\",\n \"name\": \"Acala Mandala Testnet TC9\",\n \"nativeCurrency\": {\n \"name\": \"Acala Mandala Token\",\n \"symbol\": \"mACA\",\n \"decimals\": 18\n },\n \"networkId\": 595,\n \"rpc\": [\"https://acala-mandala-testnet-tc9.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://595.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-tc9.aca-staging.network\", \"wss://eth-rpc-tc9.aca-staging.network\"],\n \"shortName\": \"maca\",\n \"slip44\": 595,\n \"slug\": \"acala-mandala-testnet-tc9\",\n \"testnet\": true\n};\n\nvar c596 = {\n \"chain\": \"KAR\",\n \"chainId\": 596,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.karura-testnet.aca-staging.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://karura.network\",\n \"name\": \"Karura Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Karura Token\",\n \"symbol\": \"KAR\",\n \"decimals\": 18\n },\n \"networkId\": 596,\n \"rpc\": [\"https://karura-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://596.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-karura-testnet.aca-staging.network\", \"wss://eth-rpc-karura-testnet.aca-staging.network\"],\n \"shortName\": \"tkar\",\n \"slip44\": 596,\n \"slug\": \"karura-network-testnet\",\n \"testnet\": true\n};\n\nvar c597 = {\n \"chain\": \"ACA\",\n \"chainId\": 597,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.acala-dev.aca-dev.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://acala.network\",\n \"name\": \"Acala Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Acala Token\",\n \"symbol\": \"ACA\",\n \"decimals\": 18\n },\n \"networkId\": 597,\n \"rpc\": [\"https://acala-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://597.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-acala-testnet.aca-staging.network\", \"wss://eth-rpc-acala-testnet.aca-staging.network\"],\n \"shortName\": \"taca\",\n \"slip44\": 597,\n \"slug\": \"acala-network-testnet\",\n \"testnet\": true\n};\n\nvar c599 = {\n \"chain\": \"ETH\",\n \"chainId\": 599,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://goerli.explorer.metisdevops.link\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://goerli.faucet.metisdevops.link\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbWKNucbMtrMPPkHG5ZmVmvNUo8CzqHHcrpk1C2BVQsEG/2022_H-Brand_Stacked_WhiteGreen.svg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.metis.io\",\n \"name\": \"Metis Goerli Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Metis\",\n \"symbol\": \"METIS\",\n \"decimals\": 18\n },\n \"networkId\": 599,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-4\",\n \"bridges\": [{\n \"url\": \"https://testnet-bridge.metis.io\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://metis-goerli-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://599.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli.gateway.metisdevops.link\"],\n \"shortName\": \"metis-goerli\",\n \"slug\": \"metis-goerli-testnet\",\n \"testnet\": true\n};\n\nvar c600 = {\n \"chain\": \"MeshTestChain\",\n \"chainId\": 600,\n \"explorers\": [],\n \"faucets\": [],\n \"name\": \"Meshnyan testnet\",\n \"nativeCurrency\": {\n \"name\": \"Meshnyan Testnet Native Token\",\n \"symbol\": \"MESHT\",\n \"decimals\": 18\n },\n \"networkId\": 600,\n \"rpc\": [],\n \"shortName\": \"mesh-chain-testnet\",\n \"slug\": \"meshnyan-testnet\",\n \"testnet\": true\n};\n\nvar c601 = {\n \"chain\": \"PEER\",\n \"chainId\": 601,\n \"explorers\": [{\n \"name\": \"PEER Explorer\",\n \"url\": \"https://testnet.peer.inc\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPKKCdjEhP6CHekLD8YnhR2VsdjzprHapapDj7Wzqm52b\",\n \"width\": 1363,\n \"height\": 760,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://testnet.peer.inc\"],\n \"icon\": {\n \"url\": \"ipfs://QmPKKCdjEhP6CHekLD8YnhR2VsdjzprHapapDj7Wzqm52b\",\n \"width\": 1363,\n \"height\": 760,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://peer.inc\",\n \"name\": \"PEER Testnet\",\n \"nativeCurrency\": {\n \"name\": \"PEER Token\",\n \"symbol\": \"PEER\",\n \"decimals\": 18\n },\n \"networkId\": 601,\n \"rpc\": [\"https://peer-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://601.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet-polka-host-232813573.us-west-1.elb.amazonaws.com\"],\n \"shortName\": \"PEER\",\n \"slug\": \"peer-testnet\",\n \"testnet\": true\n};\n\nvar c614 = {\n \"chain\": \"GLQ Blockchain\",\n \"chainId\": 614,\n \"explorers\": [{\n \"name\": \"GLQ Explorer\",\n \"url\": \"https://explorer.graphlinq.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://graphlinq.io\",\n \"name\": \"Graphlinq Blockchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GLQ\",\n \"symbol\": \"GLQ\",\n \"decimals\": 18\n },\n \"networkId\": 614,\n \"rpc\": [\"https://graphlinq-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://614.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://glq-dataseed.graphlinq.io\"],\n \"shortName\": \"glq\",\n \"slug\": \"graphlinq-blockchain\",\n \"testnet\": false\n};\n\nvar c634 = {\n \"chain\": \"Avocado\",\n \"chainId\": 634,\n \"explorers\": [{\n \"name\": \"avoscan\",\n \"url\": \"https://avoscan.co\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://Qma9rJSgy32UL1iXtXKFZQJA6FjkcUcDU4HR6y13Wu1vjn\",\n \"width\": 600,\n \"height\": 600,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qma9rJSgy32UL1iXtXKFZQJA6FjkcUcDU4HR6y13Wu1vjn\",\n \"width\": 600,\n \"height\": 600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://avocado.instadapp.io\",\n \"name\": \"Avocado\",\n \"nativeCurrency\": {\n \"name\": \"USDC\",\n \"symbol\": \"USDC\",\n \"decimals\": 18\n },\n \"networkId\": 634,\n \"rpc\": [\"https://avocado.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://634.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.avocado.instadapp.io\"],\n \"shortName\": \"avocado\",\n \"slug\": \"avocado\",\n \"testnet\": false\n};\n\nvar c647 = {\n \"chain\": \"SX\",\n \"chainId\": 647,\n \"explorers\": [{\n \"name\": \"SX Network Toronto Explorer\",\n \"url\": \"https://explorer.toronto.sx.technology\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.toronto.sx.technology\"],\n \"icon\": {\n \"url\": \"ipfs://QmSXLXqyr2H6Ja5XrmznXbWTEvF2gFaL8RXNXgyLmDHjAF\",\n \"width\": 896,\n \"height\": 690,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.sx.technology\",\n \"name\": \"SX Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SX Network\",\n \"symbol\": \"SX\",\n \"decimals\": 18\n },\n \"networkId\": 647,\n \"rpc\": [\"https://sx-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://647.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.toronto.sx.technology\"],\n \"shortName\": \"SX-Testnet\",\n \"slug\": \"sx-network-testnet\",\n \"testnet\": true\n};\n\nvar c648 = {\n \"chain\": \"ACE\",\n \"chainId\": 648,\n \"explorers\": [{\n \"name\": \"Endurance Scan\",\n \"url\": \"https://explorer.endurance.fusionist.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ace.fusionist.io/\",\n \"name\": \"Endurance Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Endurance Chain Native Token\",\n \"symbol\": \"ACE\",\n \"decimals\": 18\n },\n \"networkId\": 648,\n \"rpc\": [\"https://endurance-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://648.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-endurance.fusionist.io/\"],\n \"shortName\": \"ace\",\n \"slug\": \"endurance-smart-chain\",\n \"testnet\": false\n};\n\nvar c653 = {\n \"chain\": \"Kalichain\",\n \"chainId\": 653,\n \"explorers\": [{\n \"name\": \"kalichain explorer\",\n \"url\": \"https://explorer.kalichain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://kalichain.com\",\n \"name\": \"Kalichain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"kalis\",\n \"symbol\": \"KALIS\",\n \"decimals\": 18\n },\n \"networkId\": 653,\n \"rpc\": [\"https://kalichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://653.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.kalichain.com\"],\n \"shortName\": \"kalichain\",\n \"slug\": \"kalichain\",\n \"testnet\": false\n};\n\nvar c666 = {\n \"chain\": \"PixieChain\",\n \"chainId\": 666,\n \"explorers\": [],\n \"faucets\": [\"https://chain.pixie.xyz/faucet\"],\n \"infoURL\": \"https://scan-testnet.chain.pixie.xyz\",\n \"name\": \"Pixie Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Pixie Chain Testnet Native Token\",\n \"symbol\": \"PCTT\",\n \"decimals\": 18\n },\n \"networkId\": 666,\n \"rpc\": [\"https://pixie-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-testnet.chain.pixie.xyz\", \"wss://ws-testnet.chain.pixie.xyz\"],\n \"shortName\": \"pixie-chain-testnet\",\n \"slug\": \"pixie-chain-testnet\",\n \"testnet\": true\n};\n\nvar c667 = {\n \"chain\": \"LAOS\",\n \"chainId\": 667,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://arrakis.gorengine.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZ4YYcvhcaeotMPaGXC5Vab7JFaVkka37V8TiTJpT7Mak\",\n \"width\": 586,\n \"height\": 558,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZ4YYcvhcaeotMPaGXC5Vab7JFaVkka37V8TiTJpT7Mak\",\n \"width\": 586,\n \"height\": 558,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.laosfoundation.io/\",\n \"name\": \"LAOS Arrakis\",\n \"nativeCurrency\": {\n \"name\": \"LAOS\",\n \"symbol\": \"LAOS\",\n \"decimals\": 18\n },\n \"networkId\": 667,\n \"rpc\": [\"https://laos-arrakis.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://667.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://arrakis.gorengine.com/own\", \"wss://arrakis.gorengine.com/own\"],\n \"shortName\": \"laos\",\n \"slug\": \"laos-arrakis\",\n \"testnet\": true,\n \"title\": \"LAOS Testnet Arrakis\"\n};\n\nvar c668 = {\n \"chain\": \"JuncaChain\",\n \"chainId\": 668,\n \"explorers\": [{\n \"name\": \"JuncaScan\",\n \"url\": \"https://scan.juncachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://junca-cash.world\",\n \"name\": \"JuncaChain\",\n \"nativeCurrency\": {\n \"name\": \"JuncaChain Native Token\",\n \"symbol\": \"JGC\",\n \"decimals\": 18\n },\n \"networkId\": 668,\n \"rpc\": [\"https://juncachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://668.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.juncachain.com\"],\n \"shortName\": \"junca\",\n \"slug\": \"juncachain\",\n \"testnet\": false\n};\n\nvar c669 = {\n \"chain\": \"JuncaChain testnet\",\n \"chainId\": 669,\n \"explorers\": [{\n \"name\": \"JuncaScan\",\n \"url\": \"https://scan-testnet.juncachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-testnet.juncachain.com\"],\n \"infoURL\": \"https://junca-cash.world\",\n \"name\": \"JuncaChain testnet\",\n \"nativeCurrency\": {\n \"name\": \"JuncaChain Testnet Native Token\",\n \"symbol\": \"JGCT\",\n \"decimals\": 18\n },\n \"networkId\": 669,\n \"rpc\": [\"https://juncachain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://669.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.juncachain.com\", \"wss://ws-testnet.juncachain.com\"],\n \"shortName\": \"juncat\",\n \"slug\": \"juncachain-testnet\",\n \"testnet\": true\n};\n\nvar c686 = {\n \"chain\": \"KAR\",\n \"chainId\": 686,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.karura.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://acala.network/karura\",\n \"name\": \"Karura Network\",\n \"nativeCurrency\": {\n \"name\": \"Karura Token\",\n \"symbol\": \"KAR\",\n \"decimals\": 18\n },\n \"networkId\": 686,\n \"rpc\": [\"https://karura-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://686.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-karura.aca-api.network\", \"wss://eth-rpc-karura.aca-api.network\"],\n \"shortName\": \"kar\",\n \"slip44\": 686,\n \"slug\": \"karura-network\",\n \"testnet\": false\n};\n\nvar c700 = {\n \"chain\": \"SNS\",\n \"chainId\": 700,\n \"explorers\": [{\n \"name\": \"starscan\",\n \"url\": \"https://avastar.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://info.avastar.cc\",\n \"name\": \"Star Social Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Social\",\n \"symbol\": \"SNS\",\n \"decimals\": 18\n },\n \"networkId\": 700,\n \"rpc\": [\"https://star-social-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://700.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://avastar.cc/ext/bc/C/rpc\"],\n \"shortName\": \"SNS\",\n \"slug\": \"star-social-testnet\",\n \"testnet\": true\n};\n\nvar c707 = {\n \"chain\": \"BCS\",\n \"chainId\": 707,\n \"explorers\": [{\n \"name\": \"BlockChain Station Explorer\",\n \"url\": \"https://explorer.bcsdev.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://blockchainstation.io\",\n \"name\": \"BlockChain Station Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BCS Token\",\n \"symbol\": \"BCS\",\n \"decimals\": 18\n },\n \"networkId\": 707,\n \"rpc\": [\"https://blockchain-station.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://707.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.bcsdev.io\", \"wss://rpc-ws-mainnet.bcsdev.io\"],\n \"shortName\": \"bcs\",\n \"slug\": \"blockchain-station\",\n \"testnet\": false\n};\n\nvar c708 = {\n \"chain\": \"BCS\",\n \"chainId\": 708,\n \"explorers\": [{\n \"name\": \"BlockChain Station Explorer\",\n \"url\": \"https://testnet.bcsdev.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bcsdev.io\"],\n \"infoURL\": \"https://blockchainstation.io\",\n \"name\": \"BlockChain Station Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BCS Testnet Token\",\n \"symbol\": \"tBCS\",\n \"decimals\": 18\n },\n \"networkId\": 708,\n \"rpc\": [\"https://blockchain-station-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://708.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.bcsdev.io\", \"wss://rpc-ws-testnet.bcsdev.io\"],\n \"shortName\": \"tbcs\",\n \"slug\": \"blockchain-station-testnet\",\n \"testnet\": true\n};\n\nvar c710 = {\n \"chain\": \"HIGHBURY\",\n \"chainId\": 710,\n \"explorers\": [{\n \"name\": \"Furya EVM Explorer\",\n \"url\": \"https://explorer.furya.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiby27m6esbsjthmknckq5ktsaaj2z6hylzljbsmvx4fgezdra3q4m\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiby27m6esbsjthmknckq5ktsaaj2z6hylzljbsmvx4fgezdra3q4m\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.fury.black\",\n \"name\": \"Highbury\",\n \"nativeCurrency\": {\n \"name\": \"Fury\",\n \"symbol\": \"FURY\",\n \"decimals\": 18\n },\n \"networkId\": 710,\n \"rpc\": [\"https://highbury.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://710.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://highbury.furya.io\", \"https://rest.furya.io\"],\n \"shortName\": \"fury\",\n \"slug\": \"highbury\",\n \"testnet\": false\n};\n\nvar c719 = {\n \"chain\": \"Shibarium\",\n \"chainId\": 719,\n \"explorers\": [{\n \"name\": \"shibscan\",\n \"url\": \"https://puppyscan.shib.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYNVkoZgRjDBQzJz6kog9mA2yPzQFW2oSKvhnkwuBhLQE\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://beta.shibariumtech.com\",\n \"name\": \"Shibarium Beta\",\n \"nativeCurrency\": {\n \"name\": \"BONE\",\n \"symbol\": \"BONE\",\n \"decimals\": 18\n },\n \"networkId\": 719,\n \"rpc\": [\"https://shibarium-beta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://719.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://puppynet.shibrpc.com\"],\n \"shortName\": \"shibarium\",\n \"slug\": \"shibarium-beta\",\n \"testnet\": false\n};\n\nvar c721 = {\n \"chain\": \"LYC\",\n \"chainId\": 721,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.lycanchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc8hsCbUUjnJDnXrDhFh4V1xk1gJwZbUyNJ39p72javji\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lycanchain.com\",\n \"name\": \"Lycan Chain\",\n \"nativeCurrency\": {\n \"name\": \"Lycan\",\n \"symbol\": \"LYC\",\n \"decimals\": 18\n },\n \"networkId\": 721,\n \"rpc\": [\"https://lycan-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://721.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.lycanchain.com/\"],\n \"shortName\": \"LYC\",\n \"slug\": \"lycan-chain\",\n \"testnet\": false\n};\n\nvar c727 = {\n \"chain\": \"BLU\",\n \"chainId\": 727,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.blucrates.com\",\n \"name\": \"Blucrates\",\n \"nativeCurrency\": {\n \"name\": \"Blucrates\",\n \"symbol\": \"BLU\",\n \"decimals\": 18\n },\n \"networkId\": 727,\n \"rpc\": [\"https://blucrates.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://727.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data.bluchain.pro\"],\n \"shortName\": \"blu\",\n \"slip44\": 727,\n \"slug\": \"blucrates\",\n \"testnet\": false\n};\n\nvar c740 = {\n \"chain\": \"Canto Tesnet\",\n \"chainId\": 740,\n \"explorers\": [{\n \"name\": \"Canto Tesnet Explorer (Neobase)\",\n \"url\": \"https://testnet-explorer.canto.neobase.one\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://canto.io\",\n \"name\": \"Canto Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Canto\",\n \"symbol\": \"CANTO\",\n \"decimals\": 18\n },\n \"networkId\": 740,\n \"rpc\": [\"https://canto-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://740.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth.plexnode.wtf/\"],\n \"shortName\": \"tcanto\",\n \"slug\": \"canto-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c741 = {\n \"chain\": \"VSCT\",\n \"chainId\": 741,\n \"explorers\": [{\n \"name\": \"ventionscan\",\n \"url\": \"https://testnet.ventionscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.vention.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmcNepHmbmHW1BZYM3MFqJW4awwhmDqhUPRXXmRnXwg1U4\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://testnet.ventionscan.io\",\n \"name\": \"Vention Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"VNT\",\n \"symbol\": \"VNT\",\n \"decimals\": 18\n },\n \"networkId\": 741,\n \"rpc\": [\"https://vention-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://741.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node-testnet.vention.network\"],\n \"shortName\": \"vsct\",\n \"slug\": \"vention-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c742 = {\n \"chain\": \"SPAY\",\n \"chainId\": 742,\n \"explorers\": [{\n \"name\": \"Script Explorer\",\n \"url\": \"https://explorer.script.tv\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://token.script.tv\",\n \"name\": \"Script Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Script\",\n \"symbol\": \"SPAY\",\n \"decimals\": 18\n },\n \"networkId\": 742,\n \"rpc\": [\"https://script-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://742.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testeth-rpc-api.script.tv/rpc\"],\n \"shortName\": \"SPAY\",\n \"slug\": \"script-testnet\",\n \"testnet\": true\n};\n\nvar c766 = {\n \"chain\": \"QOM\",\n \"chainId\": 766,\n \"explorers\": [{\n \"name\": \"QL1 Mainnet Explorer\",\n \"url\": \"https://mainnet.qom.one\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRc1kJ7AgcDL1BSoMYudatWHTrz27K6WNTwGifQb5V17D\",\n \"width\": 518,\n \"height\": 518,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRc1kJ7AgcDL1BSoMYudatWHTrz27K6WNTwGifQb5V17D\",\n \"width\": 518,\n \"height\": 518,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://qom.one\",\n \"name\": \"QL1\",\n \"nativeCurrency\": {\n \"name\": \"Shiba Predator\",\n \"symbol\": \"QOM\",\n \"decimals\": 18\n },\n \"networkId\": 766,\n \"rpc\": [\"https://ql1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://766.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.qom.one\"],\n \"shortName\": \"qom\",\n \"slug\": \"ql1\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c776 = {\n \"chain\": \"OpenChain Testnet\",\n \"chainId\": 776,\n \"explorers\": [{\n \"name\": \"OPEN CHAIN TESTNET\",\n \"url\": \"https://testnet.openchain.info\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.openchain.info/\"],\n \"infoURL\": \"https://testnet.openchain.info/\",\n \"name\": \"OpenChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Openchain Testnet\",\n \"symbol\": \"TOPC\",\n \"decimals\": 18\n },\n \"networkId\": 776,\n \"rpc\": [],\n \"shortName\": \"opc\",\n \"slug\": \"openchain-testnet\",\n \"testnet\": true\n};\n\nvar c777 = {\n \"chain\": \"cheapETH\",\n \"chainId\": 777,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://cheapeth.org/\",\n \"name\": \"cheapETH\",\n \"nativeCurrency\": {\n \"name\": \"cTH\",\n \"symbol\": \"cTH\",\n \"decimals\": 18\n },\n \"networkId\": 777,\n \"rpc\": [\"https://cheapeth.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.cheapeth.org/rpc\"],\n \"shortName\": \"cth\",\n \"slug\": \"cheapeth\",\n \"testnet\": false\n};\n\nvar c786 = {\n \"chain\": \"MAAL\",\n \"chainId\": 786,\n \"explorers\": [{\n \"name\": \"maalscan\",\n \"url\": \"https://maalscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiexfqfe2x4impvwhra3xxa5eb25gv25zi3kkaoatdnld7wbxdzf2a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.maalchain.com/\",\n \"name\": \"MAAL Chain\",\n \"nativeCurrency\": {\n \"name\": \"MAAL\",\n \"symbol\": \"MAAL\",\n \"decimals\": 18\n },\n \"networkId\": 786,\n \"rpc\": [\"https://maal-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://786.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1-mainnet.maalscan.io/\", \"https://node2-mainnet.maalscan.io/\", \"https://node3-mainnet.maalscan.io/\"],\n \"shortName\": \"maal\",\n \"slug\": \"maal-chain\",\n \"testnet\": false\n};\n\nvar c787 = {\n \"chain\": \"ACA\",\n \"chainId\": 787,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.acala.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://acala.network\",\n \"name\": \"Acala Network\",\n \"nativeCurrency\": {\n \"name\": \"Acala Token\",\n \"symbol\": \"ACA\",\n \"decimals\": 18\n },\n \"networkId\": 787,\n \"rpc\": [\"https://acala-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://787.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-acala.aca-api.network\", \"wss://eth-rpc-acala.aca-api.network\"],\n \"shortName\": \"aca\",\n \"slip44\": 787,\n \"slug\": \"acala-network\",\n \"testnet\": false\n};\n\nvar c788 = {\n \"chain\": \"Aerochain\",\n \"chainId\": 788,\n \"explorers\": [{\n \"name\": \"aeroscan\",\n \"url\": \"https://testnet.aeroscan.id\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.aerochain.id/\"],\n \"infoURL\": \"https://aerochaincoin.org/\",\n \"name\": \"Aerochain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Aerochain Testnet\",\n \"symbol\": \"TAero\",\n \"decimals\": 18\n },\n \"networkId\": 788,\n \"rpc\": [\"https://aerochain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://788.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.aerochain.id/\"],\n \"shortName\": \"taero\",\n \"slug\": \"aerochain-testnet\",\n \"testnet\": true\n};\n\nvar c789 = {\n \"chain\": \"ETH\",\n \"chainId\": 789,\n \"explorers\": [{\n \"name\": \"patexscan\",\n \"url\": \"https://patexscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmTNTSNn3t5WpSEzQmUYbkxYkBKaH6QahyVdVrRKyPHChr\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTNTSNn3t5WpSEzQmUYbkxYkBKaH6QahyVdVrRKyPHChr\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://patex.io/\",\n \"name\": \"Patex\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 789,\n \"rpc\": [\"https://patex.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://789.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.patex.io/\"],\n \"shortName\": \"peth\",\n \"slug\": \"patex\",\n \"testnet\": false\n};\n\nvar c800 = {\n \"chain\": \"Lucid\",\n \"chainId\": 800,\n \"explorers\": [{\n \"name\": \"Lucid Explorer\",\n \"url\": \"https://explorer.lucidcoin.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.lucidcoin.io\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeigxiyyxll4vst5cjjh732mr6zhsnligxubaldyiul2xdvvi6ibktu\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lucidcoin.io\",\n \"name\": \"Lucid Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"LUCID\",\n \"symbol\": \"LUCID\",\n \"decimals\": 18\n },\n \"networkId\": 800,\n \"rpc\": [\"https://lucid-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://800.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.lucidcoin.io\"],\n \"shortName\": \"LUCID\",\n \"slug\": \"lucid-blockchain\",\n \"testnet\": false\n};\n\nvar c803 = {\n \"chain\": \"Haic\",\n \"chainId\": 803,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.haichain.io/\",\n \"name\": \"Haic\",\n \"nativeCurrency\": {\n \"name\": \"Haicoin\",\n \"symbol\": \"HAIC\",\n \"decimals\": 18\n },\n \"networkId\": 803,\n \"rpc\": [\"https://haic.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://803.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://orig.haichain.io/\"],\n \"shortName\": \"haic\",\n \"slug\": \"haic\",\n \"testnet\": false\n};\n\nvar c808 = {\n \"chain\": \"PF\",\n \"chainId\": 808,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeMa6aw3ebUKJdGgbzDgcVtggzp7cQdfSrmzMYmnt5ywc\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://portalfantasy.io\",\n \"name\": \"Portal Fantasy Chain Test\",\n \"nativeCurrency\": {\n \"name\": \"Portal Fantasy Token\",\n \"symbol\": \"PFT\",\n \"decimals\": 18\n },\n \"networkId\": 808,\n \"rpc\": [\"https://portal-fantasy-chain-test.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://808.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/portal-fantasy/testnet/rpc\"],\n \"shortName\": \"PFTEST\",\n \"slug\": \"portal-fantasy-chain-test\",\n \"testnet\": true\n};\n\nvar c813 = {\n \"chain\": \"MEER\",\n \"chainId\": 813,\n \"explorers\": [{\n \"name\": \"meerscan\",\n \"url\": \"https://qng.meerscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Qitmeer\",\n \"nativeCurrency\": {\n \"name\": \"Qitmeer\",\n \"symbol\": \"MEER\",\n \"decimals\": 18\n },\n \"networkId\": 813,\n \"rpc\": [\"https://qitmeer.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://813.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-dataseed1.meerscan.io\", \"https://evm-dataseed2.meerscan.io\", \"https://evm-dataseed3.meerscan.io\", \"https://evm-dataseed.meerscan.com\", \"https://evm-dataseed1.meerscan.com\", \"https://evm-dataseed2.meerscan.com\", \"https://qng.rpc.qitmeer.io\", \"https://mainnet.meerlabs.com\", \"https://rpc.dimai.ai\", \"https://rpc.woowow.io\"],\n \"shortName\": \"meer\",\n \"slip44\": 813,\n \"slug\": \"qitmeer\",\n \"testnet\": false\n};\n\nvar c814 = {\n \"chain\": \"Firechain\",\n \"chainId\": 814,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYjuztyURb3Fc6ZTLgCbwQa64CcVoigF5j9cafzuSbqgf\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.thefirechain.com/\",\n \"name\": \"Firechain zkEVM\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 814,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://zkevm.bridge.rpc.thefirechain.com\"\n }]\n },\n \"rpc\": [\"https://firechain-zkevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://814.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zkevm.thefirechain.com\"],\n \"shortName\": \"firechan-zkEVM\",\n \"slug\": \"firechain-zkevm\",\n \"testnet\": false,\n \"title\": \"Firechain zkEVM\"\n};\n\nvar c818 = {\n \"chain\": \"BOC\",\n \"chainId\": 818,\n \"explorers\": [{\n \"name\": \"BeOne Chain Mainnet\",\n \"url\": \"https://beonescan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbVLQnaMDu86bPyKgCvTGhFBeYwjr15hQnrCcsp1EkAGL\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://beonechain.com\",\n \"name\": \"BeOne Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BeOne Chain Mainnet\",\n \"symbol\": \"BOC\",\n \"decimals\": 18\n },\n \"networkId\": 818,\n \"rpc\": [\"https://beone-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://818.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed1.beonechain.com\", \"https://dataseed2.beonechain.com\", \"https://dataseed-us1.beonechain.com\", \"https://dataseed-us2.beonechain.com\", \"https://dataseed-uk1.beonechain.com\", \"https://dataseed-uk2.beonechain.com\"],\n \"shortName\": \"BOC\",\n \"slip44\": 8181,\n \"slug\": \"beone-chain\",\n \"testnet\": false\n};\n\nvar c820 = {\n \"chain\": \"CLO\",\n \"chainId\": 820,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://callisto.network\",\n \"name\": \"Callisto Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Callisto\",\n \"symbol\": \"CLO\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://callisto.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://820.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.callisto.network/\"],\n \"shortName\": \"clo\",\n \"slip44\": 820,\n \"slug\": \"callisto\",\n \"testnet\": false\n};\n\nvar c821 = {\n \"chain\": \"CLO\",\n \"chainId\": 821,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://callisto.network\",\n \"name\": \"Callisto Testnet Deprecated\",\n \"nativeCurrency\": {\n \"name\": \"Callisto Testnet Ether\",\n \"symbol\": \"TCLO\",\n \"decimals\": 18\n },\n \"networkId\": 2,\n \"rpc\": [],\n \"shortName\": \"tclo\",\n \"slug\": \"callisto-testnet-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c841 = {\n \"chain\": \"Tara\",\n \"chainId\": 841,\n \"explorers\": [{\n \"name\": \"Taraxa Explorer\",\n \"url\": \"https://explorer.mainnet.taraxa.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQhdktNyBeXmCaVuQpi1B4yXheSUKrJA17L4wpECKzG5D\",\n \"width\": 310,\n \"height\": 310,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taraxa.io\",\n \"name\": \"Taraxa Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Tara\",\n \"symbol\": \"TARA\",\n \"decimals\": 18\n },\n \"networkId\": 841,\n \"rpc\": [\"https://taraxa.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://841.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mainnet.taraxa.io/\"],\n \"shortName\": \"tara\",\n \"slug\": \"taraxa\",\n \"testnet\": false\n};\n\nvar c842 = {\n \"chain\": \"Tara\",\n \"chainId\": 842,\n \"explorers\": [{\n \"name\": \"Taraxa Explorer\",\n \"url\": \"https://explorer.testnet.taraxa.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQhdktNyBeXmCaVuQpi1B4yXheSUKrJA17L4wpECKzG5D\",\n \"width\": 310,\n \"height\": 310,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taraxa.io\",\n \"name\": \"Taraxa Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Tara\",\n \"symbol\": \"TARA\",\n \"decimals\": 18\n },\n \"networkId\": 842,\n \"rpc\": [\"https://taraxa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://842.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.taraxa.io/\"],\n \"shortName\": \"taratest\",\n \"slug\": \"taraxa-testnet\",\n \"testnet\": true\n};\n\nvar c859 = {\n \"chain\": \"ZeethChainDev\",\n \"chainId\": 859,\n \"explorers\": [{\n \"name\": \"Zeeth Explorer Dev\",\n \"url\": \"https://explorer.dev.zeeth.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"name\": \"Zeeth Chain Dev\",\n \"nativeCurrency\": {\n \"name\": \"Zeeth Token\",\n \"symbol\": \"ZTH\",\n \"decimals\": 18\n },\n \"networkId\": 859,\n \"rpc\": [\"https://zeeth-chain-dev.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://859.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dev.zeeth.io\"],\n \"shortName\": \"zeethdev\",\n \"slug\": \"zeeth-chain-dev\",\n \"testnet\": false\n};\n\nvar c868 = {\n \"chain\": \"FSC\",\n \"chainId\": 868,\n \"explorers\": [{\n \"name\": \"FSCScan\",\n \"url\": \"https://explorer.fantasiachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://fantasiachain.com/\",\n \"name\": \"Fantasia Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"FST\",\n \"symbol\": \"FST\",\n \"decimals\": 18\n },\n \"networkId\": 868,\n \"rpc\": [\"https://fantasia-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://868.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-data1.fantasiachain.com/\", \"https://mainnet-data2.fantasiachain.com/\", \"https://mainnet-data3.fantasiachain.com/\"],\n \"shortName\": \"FSCMainnet\",\n \"slug\": \"fantasia-chain\",\n \"testnet\": false\n};\n\nvar c876 = {\n \"chain\": \"Bandai Namco Research Verse\",\n \"chainId\": 876,\n \"explorers\": [{\n \"name\": \"Bandai Namco Research Verse Explorer\",\n \"url\": \"https://explorer.main.oasvrs.bnken.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifhetalm3vpvjrg5u5d2momkcgvkz6rhltur5co3rslltbxzpr6yq\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bandainamco-mirai.com/en/\",\n \"name\": \"Bandai Namco Research Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 876,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://bandai-namco-research-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://876.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.main.oasvrs.bnken.net\"],\n \"shortName\": \"BNKEN\",\n \"slug\": \"bandai-namco-research-verse\",\n \"testnet\": false\n};\n\nvar c877 = {\n \"chain\": \"DXT\",\n \"chainId\": 877,\n \"explorers\": [{\n \"name\": \"dxtscan\",\n \"url\": \"https://dxtscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dexit.network\"],\n \"infoURL\": \"https://dexit.network\",\n \"name\": \"Dexit Network\",\n \"nativeCurrency\": {\n \"name\": \"Dexit network\",\n \"symbol\": \"DXT\",\n \"decimals\": 18\n },\n \"networkId\": 877,\n \"rpc\": [\"https://dexit-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://877.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dxt.dexit.network\"],\n \"shortName\": \"DXT\",\n \"slug\": \"dexit-network\",\n \"testnet\": false\n};\n\nvar c880 = {\n \"chain\": \"ambroschain\",\n \"chainId\": 880,\n \"explorers\": [{\n \"name\": \"Ambros Chain Explorer\",\n \"url\": \"https://ambrosscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ambros.network\",\n \"name\": \"Ambros Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"AMBROS\",\n \"symbol\": \"AMBROS\",\n \"decimals\": 18\n },\n \"networkId\": 880,\n \"rpc\": [\"https://ambros-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://880.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.ambros.network\"],\n \"shortName\": \"ambros\",\n \"slug\": \"ambros-chain\",\n \"testnet\": false\n};\n\nvar c888 = {\n \"chain\": \"WAN\",\n \"chainId\": 888,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.wanscan.org\",\n \"name\": \"Wanchain\",\n \"nativeCurrency\": {\n \"name\": \"Wancoin\",\n \"symbol\": \"WAN\",\n \"decimals\": 18\n },\n \"networkId\": 888,\n \"rpc\": [\"https://wanchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gwan-ssl.wandevs.org:56891/\"],\n \"shortName\": \"wan\",\n \"slip44\": 5718350,\n \"slug\": \"wanchain\",\n \"testnet\": false\n};\n\nvar c900 = {\n \"chain\": \"GAR\",\n \"chainId\": 900,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer-testnet.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.garizon.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Testnet Stage0\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 900,\n \"rpc\": [\"https://garizon-testnet-stage0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://900.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s0-testnet.garizon.net/rpc\"],\n \"shortName\": \"gar-test-s0\",\n \"slug\": \"garizon-testnet-stage0\",\n \"testnet\": true\n};\n\nvar c901 = {\n \"chain\": \"GAR\",\n \"chainId\": 901,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer-testnet.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.garizon.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Testnet Stage1\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 901,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-900\"\n },\n \"rpc\": [\"https://garizon-testnet-stage1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://901.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s1-testnet.garizon.net/rpc\"],\n \"shortName\": \"gar-test-s1\",\n \"slug\": \"garizon-testnet-stage1\",\n \"testnet\": true\n};\n\nvar c902 = {\n \"chain\": \"GAR\",\n \"chainId\": 902,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer-testnet.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.garizon.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Testnet Stage2\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 902,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-900\"\n },\n \"rpc\": [\"https://garizon-testnet-stage2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://902.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s2-testnet.garizon.net/rpc\"],\n \"shortName\": \"gar-test-s2\",\n \"slug\": \"garizon-testnet-stage2\",\n \"testnet\": true\n};\n\nvar c903 = {\n \"chain\": \"GAR\",\n \"chainId\": 903,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer-testnet.garizon.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.garizon.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmW3WRyuLZ95K8hvV2QN6rP5yWY98sSzWyVUxD2eUjXGrc\",\n \"width\": 1024,\n \"height\": 613,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://garizon.com\",\n \"name\": \"Garizon Testnet Stage3\",\n \"nativeCurrency\": {\n \"name\": \"Garizon\",\n \"symbol\": \"GAR\",\n \"decimals\": 18\n },\n \"networkId\": 903,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-900\"\n },\n \"rpc\": [\"https://garizon-testnet-stage3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://903.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s3-testnet.garizon.net/rpc\"],\n \"shortName\": \"gar-test-s3\",\n \"slug\": \"garizon-testnet-stage3\",\n \"testnet\": true\n};\n\nvar c909 = {\n \"chain\": \"PF\",\n \"chainId\": 909,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeMa6aw3ebUKJdGgbzDgcVtggzp7cQdfSrmzMYmnt5ywc\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://portalfantasy.io\",\n \"name\": \"Portal Fantasy Chain\",\n \"nativeCurrency\": {\n \"name\": \"Portal Fantasy Token\",\n \"symbol\": \"PFT\",\n \"decimals\": 18\n },\n \"networkId\": 909,\n \"rpc\": [],\n \"shortName\": \"PF\",\n \"slug\": \"portal-fantasy-chain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c910 = {\n \"chain\": \"DBONE\",\n \"chainId\": 910,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://decentrabone.com\",\n \"name\": \"DecentraBone Layer1 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DecentraBone\",\n \"symbol\": \"DBONE\",\n \"decimals\": 18\n },\n \"networkId\": 910,\n \"rpc\": [\"https://decentrabone-layer1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://910.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://layer1test.decentrabone.com\"],\n \"shortName\": \"DBONE\",\n \"slug\": \"decentrabone-layer1-testnet\",\n \"testnet\": true\n};\n\nvar c917 = {\n \"chain\": \"FIRE\",\n \"chainId\": 917,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.thefirechain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmRnnw2gtbU9TWJMLJ6tks7SN6HQV5rRugeoyN6csTYHt1\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thefirechain.com\",\n \"name\": \"Rinia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Firechain\",\n \"symbol\": \"FIRE\",\n \"decimals\": 18\n },\n \"networkId\": 917,\n \"rpc\": [\"https://rinia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://917.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rinia.rpc1.thefirechain.com\"],\n \"shortName\": \"tfire\",\n \"slug\": \"rinia-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c919 = {\n \"chain\": \"ETH\",\n \"chainId\": 919,\n \"explorers\": [{\n \"name\": \"modescout\",\n \"url\": \"https://sepolia.explorer.mode.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://sepoliafaucet.com/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreidi5y7afj5z4xrz7uz5rkg2mcsv2p2n4ui4g7q4k4ecdz65i2agou\",\n \"width\": 2160,\n \"height\": 2160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.mode.network/\",\n \"name\": \"Mode Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 919,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://bridge.mode.network/\"\n }]\n },\n \"rpc\": [\"https://mode-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://919.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.mode.network\"],\n \"shortName\": \"modesep\",\n \"slug\": \"mode-testnet\",\n \"testnet\": true\n};\n\nvar c927 = {\n \"chain\": \"Yidark\",\n \"chainId\": 927,\n \"explorers\": [{\n \"name\": \"Yidarkscan\",\n \"url\": \"https://yidarkscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdbFGqrpiLQGtAeUAyeS2NBvACfgrchEF466ni5q36fuZ\",\n \"width\": 401,\n \"height\": 401,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://yidarkscan.com\",\n \"name\": \"Yidark Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Yidark\",\n \"symbol\": \"YDK\",\n \"decimals\": 18\n },\n \"networkId\": 927,\n \"rpc\": [\"https://yidark-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://927.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.yidark.io\"],\n \"shortName\": \"ydk\",\n \"slug\": \"yidark-chain\",\n \"testnet\": false\n};\n\nvar c940 = {\n \"chain\": \"tPLS\",\n \"chainId\": 940,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.v2.testnet.pulsechain.com/\"],\n \"infoURL\": \"https://pulsechain.com/\",\n \"name\": \"PulseChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Test Pulse\",\n \"symbol\": \"tPLS\",\n \"decimals\": 18\n },\n \"networkId\": 940,\n \"rpc\": [\"https://pulsechain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://940.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.v2.testnet.pulsechain.com/\", \"wss://rpc.v2.testnet.pulsechain.com/\"],\n \"shortName\": \"tpls\",\n \"slug\": \"pulsechain-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c941 = {\n \"chain\": \"t2bPLS\",\n \"chainId\": 941,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.v2b.testnet.pulsechain.com/\"],\n \"infoURL\": \"https://pulsechain.com/\",\n \"name\": \"PulseChain Testnet v2b\",\n \"nativeCurrency\": {\n \"name\": \"Test Pulse\",\n \"symbol\": \"tPLS\",\n \"decimals\": 18\n },\n \"networkId\": 941,\n \"rpc\": [\"https://pulsechain-testnet-v2b.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://941.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.v2b.testnet.pulsechain.com/\", \"wss://rpc.v2b.testnet.pulsechain.com/\"],\n \"shortName\": \"t2bpls\",\n \"slug\": \"pulsechain-testnet-v2b\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c942 = {\n \"chain\": \"t3PLS\",\n \"chainId\": 942,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.v3.testnet.pulsechain.com/\"],\n \"infoURL\": \"https://pulsechain.com/\",\n \"name\": \"PulseChain Testnet v3\",\n \"nativeCurrency\": {\n \"name\": \"Test Pulse\",\n \"symbol\": \"tPLS\",\n \"decimals\": 18\n },\n \"networkId\": 942,\n \"rpc\": [\"https://pulsechain-testnet-v3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://942.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.v3.testnet.pulsechain.com/\", \"wss://rpc.v3.testnet.pulsechain.com/\"],\n \"shortName\": \"t3pls\",\n \"slug\": \"pulsechain-testnet-v3\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c943 = {\n \"chain\": \"t4PLS\",\n \"chainId\": 943,\n \"ens\": {\n \"registry\": \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n },\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://otter-testnet-pulsechain.g4mm4.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.v4.testnet.pulsechain.com/\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qmckj9B9F3jWDk9bv9HwoPmfjrx2Ju8J2BQSNoPFdYGduj\",\n \"width\": 433,\n \"height\": 402,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://pulsechain.com\",\n \"name\": \"PulseChain Testnet v4\",\n \"nativeCurrency\": {\n \"name\": \"Test Pulse\",\n \"symbol\": \"tPLS\",\n \"decimals\": 18\n },\n \"networkId\": 943,\n \"rpc\": [\"https://pulsechain-testnet-v4.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://943.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.v4.testnet.pulsechain.com\", \"wss://rpc.v4.testnet.pulsechain.com\", \"https://pulsechain-testnet.publicnode.com\", \"wss://pulsechain-testnet.publicnode.com\", \"https://rpc-testnet-pulsechain.g4mm4.io\", \"wss://rpc-testnet-pulsechain.g4mm4.io\"],\n \"shortName\": \"t4pls\",\n \"slip44\": 60,\n \"slug\": \"pulsechain-testnet-v4\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c956 = {\n \"chain\": \"munode\",\n \"chainId\": 956,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://munode.dev/\",\n \"name\": \"muNode Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 956,\n \"rpc\": [],\n \"shortName\": \"munode\",\n \"slug\": \"munode-testnet\",\n \"testnet\": true\n};\n\nvar c963 = {\n \"chain\": \"BTC20\",\n \"chainId\": 963,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.bitcoincode.technology\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmRUzDpn3xqPYnjLuZvFs2Attio9VxGRUprXEjcNQDcpe5\",\n \"width\": 375,\n \"height\": 456,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitcoincode.technology\",\n \"name\": \"BTC20 Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"BTCC\",\n \"symbol\": \"BTCC\",\n \"decimals\": 18\n },\n \"networkId\": 963,\n \"rpc\": [\"https://btc20-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://963.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bitcoincode.technology/\"],\n \"shortName\": \"btc20\",\n \"slug\": \"btc20-smart-chain\",\n \"testnet\": false\n};\n\nvar c970 = {\n \"chain\": \"Oort Mainnet\",\n \"chainId\": 970,\n \"explorers\": [{\n \"name\": \"Oort Mainnet Explorer\",\n \"url\": \"https://mainnet-scan.oortech.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oortech.com\",\n \"name\": \"Oort Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Oort\",\n \"symbol\": \"CCN\",\n \"decimals\": 18\n },\n \"networkId\": 970,\n \"rpc\": [\"https://oort.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://970.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.oortech.com\"],\n \"shortName\": \"ccn\",\n \"slug\": \"oort\",\n \"testnet\": false\n};\n\nvar c971 = {\n \"chain\": \"Huygens\",\n \"chainId\": 971,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZ1jbxFZcuotj3eZ6iKFrg9ZXnaV8AK6sGRa7ELrceWyD\",\n \"width\": 1043,\n \"height\": 1079,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oortech.com\",\n \"name\": \"Oort Huygens\",\n \"nativeCurrency\": {\n \"name\": \"Oort\",\n \"symbol\": \"CCN\",\n \"decimals\": 18\n },\n \"networkId\": 971,\n \"rpc\": [],\n \"shortName\": \"Huygens\",\n \"slug\": \"oort-huygens\",\n \"testnet\": false\n};\n\nvar c972 = {\n \"chain\": \"Ascraeus\",\n \"chainId\": 972,\n \"explorers\": [{\n \"name\": \"Oort Ascraeus Explorer\",\n \"url\": \"https://ascraeus-scan.oortech.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oortech.com\",\n \"name\": \"Oort Ascraeus\",\n \"nativeCurrency\": {\n \"name\": \"Oort\",\n \"symbol\": \"CCNA\",\n \"decimals\": 18\n },\n \"networkId\": 972,\n \"rpc\": [\"https://oort-ascraeus.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://972.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ascraeus-rpc.oortech.com\"],\n \"shortName\": \"Ascraeus\",\n \"slug\": \"oort-ascraeus\",\n \"testnet\": false,\n \"title\": \"Oort Ascraeus\"\n};\n\nvar c977 = {\n \"chain\": \"YETI\",\n \"chainId\": 977,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.nepalblockchain.network\"],\n \"infoURL\": \"https://nepalblockchain.network\",\n \"name\": \"Nepal Blockchain Network\",\n \"nativeCurrency\": {\n \"name\": \"Nepal Blockchain Network Ether\",\n \"symbol\": \"YETI\",\n \"decimals\": 18\n },\n \"networkId\": 977,\n \"rpc\": [\"https://nepal-blockchain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://977.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.nepalblockchain.dev\", \"https://api.nepalblockchain.network\"],\n \"shortName\": \"yeti\",\n \"slug\": \"nepal-blockchain-network\",\n \"testnet\": false\n};\n\nvar c980 = {\n \"chain\": \"TOP\",\n \"chainId\": 980,\n \"explorers\": [{\n \"name\": \"topscan.dev\",\n \"url\": \"https://www.topscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYikaM849eZrL8pGNeVhEHVTKWpxdGMvCY5oFBfZ2ndhd\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.topnetwork.org/\",\n \"name\": \"TOP Mainnet EVM\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 0,\n \"rpc\": [\"https://top-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://980.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ethapi.topnetwork.org\"],\n \"shortName\": \"top_evm\",\n \"slug\": \"top-evm\",\n \"testnet\": false\n};\n\nvar c985 = {\n \"chain\": \"MEMO\",\n \"chainId\": 985,\n \"explorers\": [{\n \"name\": \"Memo Mainnet Explorer\",\n \"url\": \"https://scan.metamemo.one:8080\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreig52paynhccs4o5ew6f7mk3xoqu2bqtitmfvlgnwarh2pm33gbdrq\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.metamemo.one/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreig52paynhccs4o5ew6f7mk3xoqu2bqtitmfvlgnwarh2pm33gbdrq\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"name\": \"Memo Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Memo\",\n \"symbol\": \"CMEMO\",\n \"decimals\": 18\n },\n \"networkId\": 985,\n \"rpc\": [\"https://memo-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://985.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://chain.metamemo.one:8501\", \"wss://chain.metamemo.one:16801\"],\n \"shortName\": \"memochain\",\n \"slug\": \"memo-smart-chain\",\n \"testnet\": false\n};\n\nvar c989 = {\n \"chain\": \"TOP\",\n \"chainId\": 989,\n \"explorers\": [{\n \"name\": \"topscan.dev\",\n \"url\": \"https://www.topscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYikaM849eZrL8pGNeVhEHVTKWpxdGMvCY5oFBfZ2ndhd\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.topnetwork.org/\",\n \"name\": \"TOP Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TOP\",\n \"symbol\": \"TOP\",\n \"decimals\": 6\n },\n \"networkId\": 0,\n \"rpc\": [],\n \"shortName\": \"top\",\n \"slug\": \"top\",\n \"testnet\": false\n};\n\nvar c990 = {\n \"chain\": \"$EL\",\n \"chainId\": 990,\n \"explorers\": [{\n \"name\": \"eLiberty Mainnet\",\n \"url\": \"https://explorer.eliberty.ngo\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.eliberty.ngo\"],\n \"icon\": {\n \"url\": \"ipfs://Qmcr8US1DZcK3ooiMtE8tEQPgep12abXzxPw1jCkgZhji9\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eliberty.ngo\",\n \"name\": \"eLiberty Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"eLiberty\",\n \"symbol\": \"$EL\",\n \"decimals\": 18\n },\n \"networkId\": 990,\n \"rpc\": [\"https://eliberty.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://990.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.eliberty.ngo\"],\n \"shortName\": \"ELm\",\n \"slug\": \"eliberty\",\n \"testnet\": false\n};\n\nvar c997 = {\n \"chain\": \"5ireChain\",\n \"chainId\": 997,\n \"explorers\": [{\n \"name\": \"5ireChain Explorer\",\n \"url\": \"https://explorer.5ire.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaZDNDFLWESH4i3XqwEWfWBb1HPnQSNbDAr74nr2x8QAk\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://explorer.5ire.network/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmaZDNDFLWESH4i3XqwEWfWBb1HPnQSNbDAr74nr2x8QAk\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://5ire.org\",\n \"name\": \"5ireChain Thunder\",\n \"nativeCurrency\": {\n \"name\": \"5ire Token\",\n \"symbol\": \"5ire\",\n \"decimals\": 18\n },\n \"networkId\": 997,\n \"rpc\": [\"https://5irechain-thunder.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://997.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.5ire.network\"],\n \"shortName\": \"5ire\",\n \"slug\": \"5irechain-thunder\",\n \"testnet\": true\n};\n\nvar c998 = {\n \"chain\": \"LN\",\n \"chainId\": 998,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.luckynetwork.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"expedition\",\n \"url\": \"https://lnscan.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidmvcd5i7touug55hj45mf2pgabxamy5fziva7mtx5n664s3yap6m\",\n \"width\": 205,\n \"height\": 28,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://luckynetwork.org\",\n \"name\": \"Lucky Network\",\n \"nativeCurrency\": {\n \"name\": \"Lucky\",\n \"symbol\": \"L99\",\n \"decimals\": 18\n },\n \"networkId\": 998,\n \"rpc\": [\"https://lucky-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://998.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.luckynetwork.org\", \"wss://ws.lnscan.org\", \"https://rpc.lnscan.org\"],\n \"shortName\": \"ln\",\n \"slug\": \"lucky-network\",\n \"testnet\": false\n};\n\nvar c999 = {\n \"chain\": \"ETH\",\n \"chainId\": 999,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZ6qaRwTPFEZUspwMUjaxC6KhmzcELdRQcQzS3P72Dzts/Vector.svg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"name\": \"Zora Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"GETH\",\n \"decimals\": 18\n },\n \"networkId\": 999,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://zora-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.rpc.zora.co/\"],\n \"shortName\": \"zora-testnet\",\n \"slug\": \"zora-testnet\",\n \"testnet\": true\n};\n\nvar c1000 = {\n \"chain\": \"GTON\",\n \"chainId\": 1000,\n \"explorers\": [{\n \"name\": \"GTON Network Explorer\",\n \"url\": \"https://explorer.gton.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://gton.capital\",\n \"name\": \"GTON Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GCD\",\n \"symbol\": \"GCD\",\n \"decimals\": 18\n },\n \"networkId\": 1000,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\"\n },\n \"rpc\": [\"https://gton.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.gton.network/\"],\n \"shortName\": \"gton\",\n \"slug\": \"gton\",\n \"testnet\": false\n};\n\nvar c1001 = {\n \"chain\": \"KLAY\",\n \"chainId\": 1001,\n \"explorers\": [{\n \"name\": \"klaytnscope\",\n \"url\": \"https://scope.klaytn.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://baobab.wallet.klaytn.com/access?next=faucet\"],\n \"infoURL\": \"https://www.klaytn.com/\",\n \"name\": \"Klaytn Testnet Baobab\",\n \"nativeCurrency\": {\n \"name\": \"KLAY\",\n \"symbol\": \"KLAY\",\n \"decimals\": 18\n },\n \"networkId\": 1001,\n \"rpc\": [\"https://klaytn-testnet-baobab.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.baobab.klaytn.net:8651\"],\n \"shortName\": \"Baobab\",\n \"slug\": \"klaytn-testnet-baobab\",\n \"testnet\": true\n};\n\nvar c1003 = {\n \"chain\": \"TET\",\n \"chainId\": 1003,\n \"explorers\": [{\n \"name\": \"Tectum explorer\",\n \"url\": \"https://explorer.tectum.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYvFVprVdAGJH4iHUCXGEmy7pq8MMfxEjM64SuXutz9qx\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://softnote.com\",\n \"name\": \"Tectum Emission Token\",\n \"nativeCurrency\": {\n \"name\": \"Tectum\",\n \"symbol\": \"TET\",\n \"decimals\": 8\n },\n \"networkId\": 1003,\n \"rpc\": [\"https://tectum-emission-token.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.softnote.com/\"],\n \"shortName\": \"tet\",\n \"slug\": \"tectum-emission-token\",\n \"testnet\": false\n};\n\nvar c1004 = {\n \"chain\": \"T-EKTA\",\n \"chainId\": 1004,\n \"explorers\": [{\n \"name\": \"test-ektascan\",\n \"url\": \"https://test.ektascan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmfMd564KUPK8eKZDwGCT71ZC2jMnUZqP6LCtLpup3rHH1\",\n \"width\": 2100,\n \"height\": 2100,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfMd564KUPK8eKZDwGCT71ZC2jMnUZqP6LCtLpup3rHH1\",\n \"width\": 2100,\n \"height\": 2100,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.ekta.io\",\n \"name\": \"T-EKTA\",\n \"nativeCurrency\": {\n \"name\": \"T-EKTA\",\n \"symbol\": \"T-EKTA\",\n \"decimals\": 18\n },\n \"networkId\": 1004,\n \"rpc\": [\"https://t-ekta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1004.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test.ekta.io:8545\"],\n \"shortName\": \"t-ekta\",\n \"slug\": \"t-ekta\",\n \"testnet\": true,\n \"title\": \"EKTA Testnet T-EKTA\"\n};\n\nvar c1007 = {\n \"chain\": \"NEW\",\n \"chainId\": 1007,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.newtonproject.org/\",\n \"name\": \"Newton Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Newton\",\n \"symbol\": \"NEW\",\n \"decimals\": 18\n },\n \"networkId\": 1007,\n \"rpc\": [\"https://newton-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1007.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.newchain.newtonproject.org\"],\n \"shortName\": \"tnew\",\n \"slug\": \"newton-testnet\",\n \"testnet\": true\n};\n\nvar c1008 = {\n \"chain\": \"EUN\",\n \"chainId\": 1008,\n \"explorers\": [{\n \"name\": \"eurusexplorer\",\n \"url\": \"https://explorer.eurus.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaGd5L9jGPbfyGXBFhu9gjinWJ66YtNrXq8x6Q98Eep9e\",\n \"width\": 471,\n \"height\": 471,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaGd5L9jGPbfyGXBFhu9gjinWJ66YtNrXq8x6Q98Eep9e\",\n \"width\": 471,\n \"height\": 471,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://eurus.network\",\n \"name\": \"Eurus Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Eurus\",\n \"symbol\": \"EUN\",\n \"decimals\": 18\n },\n \"networkId\": 1008,\n \"rpc\": [\"https://eurus.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1008.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.eurus.network/\"],\n \"shortName\": \"eun\",\n \"slug\": \"eurus\",\n \"testnet\": false\n};\n\nvar c1010 = {\n \"chain\": \"EVC\",\n \"chainId\": 1010,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://evrice.com\",\n \"name\": \"Evrice Network\",\n \"nativeCurrency\": {\n \"name\": \"Evrice\",\n \"symbol\": \"EVC\",\n \"decimals\": 18\n },\n \"networkId\": 1010,\n \"rpc\": [\"https://evrice-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1010.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://meta.evrice.com\"],\n \"shortName\": \"EVC\",\n \"slip44\": 1020,\n \"slug\": \"evrice-network\",\n \"testnet\": false\n};\n\nvar c1012 = {\n \"chain\": \"NEW\",\n \"chainId\": 1012,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.newtonproject.org/\",\n \"name\": \"Newton\",\n \"nativeCurrency\": {\n \"name\": \"Newton\",\n \"symbol\": \"NEW\",\n \"decimals\": 18\n },\n \"networkId\": 1012,\n \"rpc\": [\"https://newton.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1012.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://global.rpc.mainnet.newtonproject.org\"],\n \"shortName\": \"new\",\n \"slug\": \"newton\",\n \"testnet\": false\n};\n\nvar c1022 = {\n \"chain\": \"Sakura\",\n \"chainId\": 1022,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://clover.finance/sakura\",\n \"name\": \"Sakura\",\n \"nativeCurrency\": {\n \"name\": \"Sakura\",\n \"symbol\": \"SKU\",\n \"decimals\": 18\n },\n \"networkId\": 1022,\n \"rpc\": [],\n \"shortName\": \"sku\",\n \"slug\": \"sakura\",\n \"testnet\": false\n};\n\nvar c1023 = {\n \"chain\": \"Clover\",\n \"chainId\": 1023,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://clover.finance\",\n \"name\": \"Clover Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Clover\",\n \"symbol\": \"CLV\",\n \"decimals\": 18\n },\n \"networkId\": 1023,\n \"rpc\": [],\n \"shortName\": \"tclv\",\n \"slug\": \"clover-testnet\",\n \"testnet\": true\n};\n\nvar c1024 = {\n \"chain\": \"CLV\",\n \"chainId\": 1024,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://clv.org\",\n \"name\": \"CLV Parachain\",\n \"nativeCurrency\": {\n \"name\": \"CLV\",\n \"symbol\": \"CLV\",\n \"decimals\": 18\n },\n \"networkId\": 1024,\n \"rpc\": [\"https://clv-parachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1024.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api-para.clover.finance\"],\n \"shortName\": \"clv\",\n \"slug\": \"clv-parachain\",\n \"testnet\": false\n};\n\nvar c1028 = {\n \"chain\": \"BTTC\",\n \"chainId\": 1028,\n \"explorers\": [{\n \"name\": \"testbttcscan\",\n \"url\": \"https://testscan.bittorrentchain.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bittorrentchain.io/\",\n \"name\": \"BitTorrent Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BitTorrent\",\n \"symbol\": \"BTT\",\n \"decimals\": 18\n },\n \"networkId\": 1028,\n \"rpc\": [\"https://bittorrent-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1028.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testrpc.bittorrentchain.io/\"],\n \"shortName\": \"tbtt\",\n \"slug\": \"bittorrent-chain-testnet\",\n \"testnet\": true\n};\n\nvar c1030 = {\n \"chain\": \"Conflux\",\n \"chainId\": 1030,\n \"explorers\": [{\n \"name\": \"Conflux Scan\",\n \"url\": \"https://evm.confluxscan.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifj7n24u2dslfijfihwqvpdeigt5aj3k3sxv6s35lv75sxsfr3ojy\",\n \"width\": 460,\n \"height\": 576,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://confluxnetwork.org\",\n \"name\": \"Conflux eSpace\",\n \"nativeCurrency\": {\n \"name\": \"CFX\",\n \"symbol\": \"CFX\",\n \"decimals\": 18\n },\n \"networkId\": 1030,\n \"rpc\": [\"https://conflux-espace.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1030.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.confluxrpc.com\"],\n \"shortName\": \"cfx\",\n \"slug\": \"conflux-espace\",\n \"testnet\": false\n};\n\nvar c1031 = {\n \"chain\": \"Proxy Network\",\n \"chainId\": 1031,\n \"explorers\": [{\n \"name\": \"proxy network testnet\",\n \"url\": \"http://testnet-explorer.theproxy.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://theproxy.network\",\n \"name\": \"Proxy Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"PRX\",\n \"symbol\": \"PRX\",\n \"decimals\": 18\n },\n \"networkId\": 1031,\n \"rpc\": [\"https://proxy-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1031.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://128.199.94.183:8041\"],\n \"shortName\": \"prx\",\n \"slug\": \"proxy-network-testnet\",\n \"testnet\": true\n};\n\nvar c1038 = {\n \"chain\": \"Bronos\",\n \"chainId\": 1038,\n \"explorers\": [{\n \"name\": \"Bronos Testnet Explorer\",\n \"url\": \"https://tbroscan.bronos.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.bronos.org\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bronos.org\",\n \"name\": \"Bronos Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tBRO\",\n \"symbol\": \"tBRO\",\n \"decimals\": 18\n },\n \"networkId\": 1038,\n \"rpc\": [\"https://bronos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1038.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-testnet.bronos.org\"],\n \"shortName\": \"bronos-testnet\",\n \"slug\": \"bronos-testnet\",\n \"testnet\": true\n};\n\nvar c1039 = {\n \"chain\": \"Bronos\",\n \"chainId\": 1039,\n \"explorers\": [{\n \"name\": \"Bronos Explorer\",\n \"url\": \"https://broscan.bronos.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bronos.org\",\n \"name\": \"Bronos Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BRO\",\n \"symbol\": \"BRO\",\n \"decimals\": 18\n },\n \"networkId\": 1039,\n \"rpc\": [],\n \"shortName\": \"bronos-mainnet\",\n \"slug\": \"bronos\",\n \"testnet\": false\n};\n\nvar c1071 = {\n \"chain\": \"ShimmerEVM\",\n \"chainId\": 1071,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.evm.testnet.shimmer.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://evm-toolkit.evm.testnet.shimmer.network\", \"https://evm-faucet.testnet.shimmer.network\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreibky2sy6qhi6arktayvologkrgu5kudpgdxfkx4uosbvmstz7v4di\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shimmer.network\",\n \"name\": \"ShimmerEVM Testnet Deprecated\",\n \"nativeCurrency\": {\n \"name\": \"SMR\",\n \"symbol\": \"SMR\",\n \"decimals\": 18\n },\n \"networkId\": 1071,\n \"rpc\": [],\n \"shortName\": \"shimmerevm-testnet-deprecated\",\n \"slug\": \"shimmerevm-testnet-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true,\n \"title\": \"ShimmerEVM Testnet Deprecated\"\n};\n\nvar c1072 = {\n \"chain\": \"ShimmerEVM\",\n \"chainId\": 1072,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.evm.testnet.shimmer.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://evm-toolkit.evm.testnet.shimmer.network\", \"https://evm-faucet.testnet.shimmer.network\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreibky2sy6qhi6arktayvologkrgu5kudpgdxfkx4uosbvmstz7v4di\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shimmer.network\",\n \"name\": \"ShimmerEVM Testnet Deprecated 1072\",\n \"nativeCurrency\": {\n \"name\": \"SMR\",\n \"symbol\": \"SMR\",\n \"decimals\": 6\n },\n \"networkId\": 1072,\n \"rpc\": [],\n \"shortName\": \"shimmerevm-testnet-deprecated-1072\",\n \"slug\": \"shimmerevm-testnet-deprecated-1072\",\n \"status\": \"deprecated\",\n \"testnet\": true,\n \"title\": \"ShimmerEVM Testnet Deprecated 1072\"\n};\n\nvar c1073 = {\n \"chain\": \"ShimmerEVM\",\n \"chainId\": 1073,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.evm.testnet.shimmer.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://evm-toolkit.evm.testnet.shimmer.network\", \"https://evm-faucet.testnet.shimmer.network\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreibky2sy6qhi6arktayvologkrgu5kudpgdxfkx4uosbvmstz7v4di\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shimmer.network\",\n \"name\": \"ShimmerEVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SMR\",\n \"symbol\": \"SMR\",\n \"decimals\": 6\n },\n \"networkId\": 1073,\n \"rpc\": [\"https://shimmerevm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1073.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://json-rpc.evm.testnet.shimmer.network\"],\n \"shortName\": \"shimmerevm-testnet\",\n \"slug\": \"shimmerevm-testnet\",\n \"testnet\": true,\n \"title\": \"ShimmerEVM Testnet\"\n};\n\nvar c1079 = {\n \"chain\": \"Mintara\",\n \"chainId\": 1079,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://subnets-test.avax.network/mintara\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeie7jzlzlpz7c3a3oh4x5joej23dj2qf3cexmchjyc72hv3fblcaja\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://playthink.co.jp\",\n \"name\": \"Mintara Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MINTARA\",\n \"symbol\": \"MNTR\",\n \"decimals\": 18\n },\n \"networkId\": 1079,\n \"rpc\": [\"https://mintara-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1079.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/mintara/testnet/rpc\"],\n \"shortName\": \"mintara-testnet\",\n \"slug\": \"mintara-testnet\",\n \"testnet\": true,\n \"title\": \"Mintara Testnet\"\n};\n\nvar c1080 = {\n \"chain\": \"Mintara\",\n \"chainId\": 1080,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://subnets.avax.network/mintara\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeie7jzlzlpz7c3a3oh4x5joej23dj2qf3cexmchjyc72hv3fblcaja\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://playthink.co.jp\",\n \"name\": \"Mintara Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MINTARA\",\n \"symbol\": \"MNTR\",\n \"decimals\": 18\n },\n \"networkId\": 1080,\n \"rpc\": [\"https://mintara.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1080.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/mintara/mainnet/rpc\"],\n \"shortName\": \"mintara\",\n \"slug\": \"mintara\",\n \"testnet\": false,\n \"title\": \"Mintara Mainnet\"\n};\n\nvar c1088 = {\n \"chain\": \"ETH\",\n \"chainId\": 1088,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://andromeda-explorer.metis.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbWKNucbMtrMPPkHG5ZmVmvNUo8CzqHHcrpk1C2BVQsEG/2022_H-Brand_Stacked_WhiteGreen.svg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.metis.io\",\n \"name\": \"Metis Andromeda Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Metis\",\n \"symbol\": \"METIS\",\n \"decimals\": 18\n },\n \"networkId\": 1088,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.metis.io\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://metis-andromeda.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1088.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://andromeda.metis.io/?owner=1088\"],\n \"shortName\": \"metis-andromeda\",\n \"slug\": \"metis-andromeda\",\n \"testnet\": false\n};\n\nvar c1089 = {\n \"chain\": \"Humans\",\n \"chainId\": 1089,\n \"explorers\": [{\n \"name\": \"explorer.guru\",\n \"url\": \"https://humans.explorers.guru\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmU83haX3TNifDDjBx6RP6ByqES1Kg9VqeJC87X9ipKyCS\",\n \"width\": 386,\n \"height\": 397,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmX6XuoQDTTjYqAmdNJiieLDZSwHHyUx44yQb4E3tmHmEA\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://humans.ai\",\n \"name\": \"Humans.ai Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"HEART\",\n \"symbol\": \"HEART\",\n \"decimals\": 18\n },\n \"networkId\": 1089,\n \"rpc\": [\"https://humans-ai.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1089.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc.humans.nodestake.top\", \"https://humans-mainnet-evm.itrocket.net:443\", \"https://humans-evm-rpc.staketab.org:443\", \"https://evm.humans.stakepool.dev.br\", \"https://mainnet-humans-evm.konsortech.xyz\", \"https://evm-rpc.mainnet.humans.zone\"],\n \"shortName\": \"humans\",\n \"slug\": \"humans-ai\",\n \"testnet\": false\n};\n\nvar c1099 = {\n \"chain\": \"MOAC\",\n \"chainId\": 1099,\n \"explorers\": [{\n \"name\": \"moac explorer\",\n \"url\": \"https://explorer.moac.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://moac.io\",\n \"name\": \"MOAC mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MOAC\",\n \"symbol\": \"mc\",\n \"decimals\": 18\n },\n \"networkId\": 1099,\n \"rpc\": [],\n \"shortName\": \"moac\",\n \"slip44\": 314,\n \"slug\": \"moac\",\n \"testnet\": false\n};\n\nvar c1101 = {\n \"chain\": \"Polygon\",\n \"chainId\": 1101,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://zkevm.polygonscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNmJZkQgx9RcFLS3rvxQTVYcPfyAFPr667keHTUxB9PDv\",\n \"width\": 122,\n \"height\": 135,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNmJZkQgx9RcFLS3rvxQTVYcPfyAFPr667keHTUxB9PDv\",\n \"width\": 122,\n \"height\": 135,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polygon.technology/polygon-zkevm\",\n \"name\": \"Polygon zkEVM\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1101,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.zkevm-rpc.com\"\n }]\n },\n \"rpc\": [\"https://polygon-zkevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://zkevm-rpc.com\"],\n \"shortName\": \"zkevm\",\n \"slug\": \"polygon-zkevm\",\n \"testnet\": false,\n \"title\": \"Polygon zkEVM\"\n};\n\nvar c1107 = {\n \"chain\": \"BLXQ\",\n \"chainId\": 1107,\n \"explorers\": [{\n \"name\": \"BLXq Explorer\",\n \"url\": \"https://explorer.blx.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmS9kDKr1rgcz5W55yCQVfFs1vRTCneaLHt1t9cBizpqpH\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9kDKr1rgcz5W55yCQVfFs1vRTCneaLHt1t9cBizpqpH\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://blx.org\",\n \"name\": \"BLXq Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BLXQ\",\n \"symbol\": \"BLXQ\",\n \"decimals\": 18\n },\n \"networkId\": 1107,\n \"rpc\": [\"https://blxq-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1107.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnetq1.blx.org\"],\n \"shortName\": \"tblxq\",\n \"slug\": \"blxq-testnet\",\n \"testnet\": true\n};\n\nvar c1108 = {\n \"chain\": \"BLXQ\",\n \"chainId\": 1108,\n \"explorers\": [{\n \"name\": \"BLXq Explorer\",\n \"url\": \"https://explorer.blxq.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmS9kDKr1rgcz5W55yCQVfFs1vRTCneaLHt1t9cBizpqpH\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9kDKr1rgcz5W55yCQVfFs1vRTCneaLHt1t9cBizpqpH\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://blx.org\",\n \"name\": \"BLXq Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BLXQ\",\n \"symbol\": \"BLXQ\",\n \"decimals\": 18\n },\n \"networkId\": 1108,\n \"rpc\": [\"https://blxq.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1108.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.blxq.org\"],\n \"shortName\": \"blxq\",\n \"slug\": \"blxq\",\n \"testnet\": false\n};\n\nvar c1111 = {\n \"chain\": \"WEMIX\",\n \"chainId\": 1111,\n \"explorers\": [{\n \"name\": \"WEMIX Block Explorer\",\n \"url\": \"https://explorer.wemix.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://wemix.com\",\n \"name\": \"WEMIX3.0 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"WEMIX\",\n \"symbol\": \"WEMIX\",\n \"decimals\": 18\n },\n \"networkId\": 1111,\n \"rpc\": [\"https://wemix3-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.wemix.com\", \"wss://ws.wemix.com\"],\n \"shortName\": \"wemix\",\n \"slug\": \"wemix3-0\",\n \"testnet\": false\n};\n\nvar c1112 = {\n \"chain\": \"TWEMIX\",\n \"chainId\": 1112,\n \"explorers\": [{\n \"name\": \"WEMIX Testnet Microscope\",\n \"url\": \"https://microscope.test.wemix.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://wallet.test.wemix.com/faucet\"],\n \"infoURL\": \"https://wemix.com\",\n \"name\": \"WEMIX3.0 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TestnetWEMIX\",\n \"symbol\": \"tWEMIX\",\n \"decimals\": 18\n },\n \"networkId\": 1112,\n \"rpc\": [\"https://wemix3-0-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1112.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.test.wemix.com\", \"wss://ws.test.wemix.com\"],\n \"shortName\": \"twemix\",\n \"slug\": \"wemix3-0-testnet\",\n \"testnet\": true\n};\n\nvar c1115 = {\n \"chain\": \"Core\",\n \"chainId\": 1115,\n \"explorers\": [{\n \"name\": \"Core Scan Testnet\",\n \"url\": \"https://scan.test.btcs.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeTQaBCkpbsxNNWTpoNrMsnwnAEf1wYTcn7CiiZGfUXD2\",\n \"width\": 200,\n \"height\": 217,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://scan.test.btcs.network/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmeTQaBCkpbsxNNWTpoNrMsnwnAEf1wYTcn7CiiZGfUXD2\",\n \"width\": 200,\n \"height\": 217,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.coredao.org\",\n \"name\": \"Core Blockchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Core Blockchain Testnet Native Token\",\n \"symbol\": \"tCORE\",\n \"decimals\": 18\n },\n \"networkId\": 1115,\n \"rpc\": [\"https://core-blockchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1115.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.test.btcs.network/\"],\n \"shortName\": \"tcore\",\n \"slug\": \"core-blockchain-testnet\",\n \"testnet\": true\n};\n\nvar c1116 = {\n \"chain\": \"Core\",\n \"chainId\": 1116,\n \"explorers\": [{\n \"name\": \"Core Scan\",\n \"url\": \"https://scan.coredao.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeTQaBCkpbsxNNWTpoNrMsnwnAEf1wYTcn7CiiZGfUXD2\",\n \"width\": 200,\n \"height\": 217,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeTQaBCkpbsxNNWTpoNrMsnwnAEf1wYTcn7CiiZGfUXD2\",\n \"width\": 200,\n \"height\": 217,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.coredao.org\",\n \"name\": \"Core Blockchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Core Blockchain Native Token\",\n \"symbol\": \"CORE\",\n \"decimals\": 18\n },\n \"networkId\": 1116,\n \"rpc\": [\"https://core-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1116.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.coredao.org/\", \"https://rpc-core.icecreamswap.com\"],\n \"shortName\": \"core\",\n \"slug\": \"core-blockchain\",\n \"testnet\": false\n};\n\nvar c1117 = {\n \"chain\": \"DOGS\",\n \"chainId\": 1117,\n \"explorers\": [{\n \"name\": \"Dogcoin\",\n \"url\": \"https://explorer.dogcoin.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dogcoin.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmZCadkExKThak3msvszZjo6UnAbUJKE61dAcg4TixuMC3\",\n \"width\": 160,\n \"height\": 171,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dogcoin.network\",\n \"name\": \"Dogcoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Dogcoin\",\n \"symbol\": \"DOGS\",\n \"decimals\": 18\n },\n \"networkId\": 1117,\n \"rpc\": [\"https://dogcoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1117.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.dogcoin.me\"],\n \"shortName\": \"DOGSm\",\n \"slug\": \"dogcoin\",\n \"testnet\": false\n};\n\nvar c1130 = {\n \"chain\": \"defichain-evm\",\n \"chainId\": 1130,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdR3YL9F95ajwVwfxAGoEzYwm9w7JNsPSfUPjSaQogVjK\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://meta.defichain.com/\",\n \"name\": \"DeFiChain EVM Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"DeFiChain\",\n \"symbol\": \"DFI\",\n \"decimals\": 18\n },\n \"networkId\": 1130,\n \"rpc\": [],\n \"shortName\": \"DFI\",\n \"slip44\": 1130,\n \"slug\": \"defichain-evm-network\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c1131 = {\n \"chain\": \"defichain-evm-testnet\",\n \"chainId\": 1131,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdR3YL9F95ajwVwfxAGoEzYwm9w7JNsPSfUPjSaQogVjK\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://meta.defichain.com/\",\n \"name\": \"DeFiChain EVM Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DeFiChain\",\n \"symbol\": \"DFI\",\n \"decimals\": 18\n },\n \"networkId\": 1131,\n \"rpc\": [],\n \"shortName\": \"DFI-T\",\n \"slug\": \"defichain-evm-network-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c1133 = {\n \"chain\": \"DFI\",\n \"chainId\": 1133,\n \"explorers\": [{\n \"name\": \"MetaScan\",\n \"url\": \"https://meta.defiscan.live\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://tc04.mydefichain.com/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmTFyaJFmkDQf35rVRzEf78nGThKAyUCW4BoRaKDi4nnV5\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://defichain.com\",\n \"name\": \"DeFiMetaChain\",\n \"nativeCurrency\": {\n \"name\": \"DeFiChain Token\",\n \"symbol\": \"DFI\",\n \"decimals\": 18\n },\n \"networkId\": 1133,\n \"rpc\": [\"https://defimetachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1133.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-dmc.mydefichain.com:20551\"],\n \"shortName\": \"changi\",\n \"slug\": \"defimetachain\",\n \"testnet\": true\n};\n\nvar c1138 = {\n \"chain\": \"AmStar\",\n \"chainId\": 1138,\n \"explorers\": [{\n \"name\": \"amstarscan-testnet\",\n \"url\": \"https://testnet.amstarscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmd4TMQdnYxaUZqnVddh5S37NGH72g2kkK38ccCEgdZz1C\",\n \"width\": 599,\n \"height\": 563,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://sinso.io\",\n \"name\": \"AmStar Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SINSO\",\n \"symbol\": \"SINSO\",\n \"decimals\": 18\n },\n \"networkId\": 1138,\n \"rpc\": [\"https://amstar-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1138.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.amstarscan.com\"],\n \"shortName\": \"ASARt\",\n \"slug\": \"amstar-testnet\",\n \"testnet\": true\n};\n\nvar c1139 = {\n \"chain\": \"MATH\",\n \"chainId\": 1139,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://mathchain.org\",\n \"name\": \"MathChain\",\n \"nativeCurrency\": {\n \"name\": \"MathChain\",\n \"symbol\": \"MATH\",\n \"decimals\": 18\n },\n \"networkId\": 1139,\n \"rpc\": [\"https://mathchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1139.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mathchain-asia.maiziqianbao.net/rpc\", \"https://mathchain-us.maiziqianbao.net/rpc\"],\n \"shortName\": \"MATH\",\n \"slug\": \"mathchain\",\n \"testnet\": false\n};\n\nvar c1140 = {\n \"chain\": \"MATH\",\n \"chainId\": 1140,\n \"explorers\": [],\n \"faucets\": [\"https://scan.boka.network/#/Galois/faucet\"],\n \"infoURL\": \"https://mathchain.org\",\n \"name\": \"MathChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MathChain\",\n \"symbol\": \"MATH\",\n \"decimals\": 18\n },\n \"networkId\": 1140,\n \"rpc\": [\"https://mathchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1140.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://galois-hk.maiziqianbao.net/rpc\"],\n \"shortName\": \"tMATH\",\n \"slug\": \"mathchain-testnet\",\n \"testnet\": true\n};\n\nvar c1149 = {\n \"chain\": \"Plexchain\",\n \"chainId\": 1149,\n \"explorers\": [{\n \"name\": \"Plexchain Explorer\",\n \"url\": \"https://explorer.plexfinance.us\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmcXzfMNSQ7SZzKemNquVoXyG5ergdqCGeLWjRYETGBTUM\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcXzfMNSQ7SZzKemNquVoXyG5ergdqCGeLWjRYETGBTUM\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://plexfinance.us/\",\n \"name\": \"Symplexia Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"Plex Native Token\",\n \"symbol\": \"PLEX\",\n \"decimals\": 18\n },\n \"networkId\": 1149,\n \"rpc\": [\"https://symplexia-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1149.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://plex-rpc.plexfinance.us\"],\n \"shortName\": \"Plexchain\",\n \"slug\": \"symplexia-smart-chain\",\n \"testnet\": false\n};\n\nvar c1170 = {\n \"chain\": \"Origin\",\n \"chainId\": 1170,\n \"explorers\": [{\n \"name\": \"Origin Explorer\",\n \"url\": \"https://evm-explorer.origin.uptick.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRGJ6PqYHDTWuUQ6xfnK8S82NzRXiMjTnSGat9qtLuaLP\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRGJ6PqYHDTWuUQ6xfnK8S82NzRXiMjTnSGat9qtLuaLP\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.uptick.network\",\n \"name\": \"Origin Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Origin\",\n \"symbol\": \"UOC\",\n \"decimals\": 18\n },\n \"networkId\": 1170,\n \"rpc\": [\"https://origin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1170.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://json-rpc.origin.uptick.network\"],\n \"shortName\": \"auoc\",\n \"slug\": \"origin-testnet\",\n \"testnet\": true\n};\n\nvar c1177 = {\n \"chain\": \"SHT\",\n \"chainId\": 1177,\n \"explorers\": [{\n \"name\": \"Smart Host Teknoloji TESTNET Explorer\",\n \"url\": \"https://s2.tl.web.tr:4000\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmTrLGHyQ1Le25Q7EgNSF5Qq8D2SocKvroDkLqurdBuSQQ\",\n \"width\": 1655,\n \"height\": 1029,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTrLGHyQ1Le25Q7EgNSF5Qq8D2SocKvroDkLqurdBuSQQ\",\n \"width\": 1655,\n \"height\": 1029,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://smart-host.com.tr\",\n \"name\": \"Smart Host Teknoloji TESTNET\",\n \"nativeCurrency\": {\n \"name\": \"Smart Host Teknoloji TESTNET\",\n \"symbol\": \"tSHT\",\n \"decimals\": 18\n },\n \"networkId\": 1177,\n \"rpc\": [\"https://smart-host-teknoloji-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1177.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://s2.tl.web.tr:4041\"],\n \"shortName\": \"sht\",\n \"slug\": \"smart-host-teknoloji-testnet\",\n \"testnet\": true\n};\n\nvar c1197 = {\n \"chain\": \"IORA\",\n \"chainId\": 1197,\n \"explorers\": [{\n \"name\": \"ioraexplorer\",\n \"url\": \"https://explorer.iorachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeiehps5cqdhqottu2efo4jeehwpkz5rbux3cjxd75rm6rjm4sgs2wi\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://iorachain.com\",\n \"name\": \"Iora Chain\",\n \"nativeCurrency\": {\n \"name\": \"Iora\",\n \"symbol\": \"IORA\",\n \"decimals\": 18\n },\n \"networkId\": 1197,\n \"rpc\": [\"https://iora-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1197.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed.iorachain.com\"],\n \"shortName\": \"iora\",\n \"slug\": \"iora-chain\",\n \"testnet\": false\n};\n\nvar c1201 = {\n \"chain\": \"Evanesco Testnet\",\n \"chainId\": 1201,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://evanesco.org/\",\n \"name\": \"Evanesco Testnet\",\n \"nativeCurrency\": {\n \"name\": \"AVIS\",\n \"symbol\": \"AVIS\",\n \"decimals\": 18\n },\n \"networkId\": 1201,\n \"rpc\": [\"https://evanesco-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1201.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seed5.evanesco.org:8547\"],\n \"shortName\": \"avis\",\n \"slug\": \"evanesco-testnet\",\n \"testnet\": true\n};\n\nvar c1202 = {\n \"chain\": \"WTT\",\n \"chainId\": 1202,\n \"explorers\": [{\n \"name\": \"WTTScout\",\n \"url\": \"https://explorer.cadaut.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"http://www.cadaut.com\",\n \"name\": \"World Trade Technical Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"World Trade Token\",\n \"symbol\": \"WTT\",\n \"decimals\": 18\n },\n \"networkId\": 2048,\n \"rpc\": [\"https://world-trade-technical-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1202.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.cadaut.com\", \"wss://rpc.cadaut.com/ws\"],\n \"shortName\": \"wtt\",\n \"slug\": \"world-trade-technical-chain\",\n \"testnet\": false\n};\n\nvar c1213 = {\n \"chain\": \"POPCATEUM\",\n \"chainId\": 1213,\n \"explorers\": [{\n \"name\": \"popcateum explorer\",\n \"url\": \"https://explorer.popcateum.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://popcateum.org\",\n \"name\": \"Popcateum Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Popcat\",\n \"symbol\": \"POP\",\n \"decimals\": 18\n },\n \"networkId\": 1213,\n \"rpc\": [\"https://popcateum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1213.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed.popcateum.org\"],\n \"shortName\": \"popcat\",\n \"slug\": \"popcateum\",\n \"testnet\": false\n};\n\nvar c1214 = {\n \"chain\": \"ENTER\",\n \"chainId\": 1214,\n \"explorers\": [{\n \"name\": \"Enter Explorer - Expenter\",\n \"url\": \"https://explorer.entercoin.net\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmb2UYVc1MjLPi8vhszWRxqBJYoYkWQVxDJRSmtrgk6j2E\",\n \"width\": 64,\n \"height\": 64,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmb2UYVc1MjLPi8vhszWRxqBJYoYkWQVxDJRSmtrgk6j2E\",\n \"width\": 64,\n \"height\": 64,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://entercoin.net\",\n \"name\": \"EnterChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EnterCoin\",\n \"symbol\": \"ENTER\",\n \"decimals\": 18\n },\n \"networkId\": 1214,\n \"rpc\": [\"https://enterchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1214.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://tapi.entercoin.net/\"],\n \"shortName\": \"enter\",\n \"slug\": \"enterchain\",\n \"testnet\": false\n};\n\nvar c1229 = {\n \"chain\": \"EXZO\",\n \"chainId\": 1229,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://exzoscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeYpc2JfEsHa2Bh11SKRx3sgDtMeg6T8KpXNLepBEKnbJ\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://exzo.network\",\n \"name\": \"Exzo Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Exzo\",\n \"symbol\": \"XZO\",\n \"decimals\": 18\n },\n \"networkId\": 1229,\n \"rpc\": [\"https://exzo-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1229.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.exzo.technology\"],\n \"shortName\": \"xzo\",\n \"slug\": \"exzo-network\",\n \"testnet\": false\n};\n\nvar c1230 = {\n \"chain\": \"Ultron\",\n \"chainId\": 1230,\n \"explorers\": [{\n \"name\": \"Ultron Testnet Explorer\",\n \"url\": \"https://explorer.ultron-dev.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPC6odFVyAQrXJQaZJVFpEQfRNbzZ5BjDZ7KBKmXPaYDw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPC6odFVyAQrXJQaZJVFpEQfRNbzZ5BjDZ7KBKmXPaYDw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ultron.foundation\",\n \"name\": \"Ultron Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ultron\",\n \"symbol\": \"ULX\",\n \"decimals\": 18\n },\n \"networkId\": 1230,\n \"rpc\": [\"https://ultron-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1230.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ultron-dev.io\"],\n \"shortName\": \"UltronTestnet\",\n \"slug\": \"ultron-testnet\",\n \"testnet\": true\n};\n\nvar c1231 = {\n \"chain\": \"Ultron\",\n \"chainId\": 1231,\n \"explorers\": [{\n \"name\": \"Ultron Explorer\",\n \"url\": \"https://ulxscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPC6odFVyAQrXJQaZJVFpEQfRNbzZ5BjDZ7KBKmXPaYDw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPC6odFVyAQrXJQaZJVFpEQfRNbzZ5BjDZ7KBKmXPaYDw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ultron.foundation\",\n \"name\": \"Ultron Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ultron\",\n \"symbol\": \"ULX\",\n \"decimals\": 18\n },\n \"networkId\": 1231,\n \"rpc\": [\"https://ultron.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1231.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ultron-rpc.net\"],\n \"shortName\": \"UtronMainnet\",\n \"slug\": \"ultron\",\n \"testnet\": false\n};\n\nvar c1234 = {\n \"chain\": \"STEP\",\n \"chainId\": 1234,\n \"explorers\": [{\n \"name\": \"StepScan\",\n \"url\": \"https://stepscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVp9jyb3UFW71867yVtymmiRw7dPY4BTnsp3hEjr9tn8L\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVp9jyb3UFW71867yVtymmiRw7dPY4BTnsp3hEjr9tn8L\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://step.network\",\n \"name\": \"Step Network\",\n \"nativeCurrency\": {\n \"name\": \"FITFI\",\n \"symbol\": \"FITFI\",\n \"decimals\": 18\n },\n \"networkId\": 1234,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-43114\",\n \"bridges\": [{\n \"url\": \"https://bridge.step.network\"\n }]\n },\n \"rpc\": [\"https://step-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1234.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.step.network\"],\n \"shortName\": \"step\",\n \"slug\": \"step-network\",\n \"testnet\": false,\n \"title\": \"Step Main Network\"\n};\n\nvar c1243 = {\n \"chain\": \"ARC\",\n \"chainId\": 1243,\n \"explorers\": [{\n \"name\": \"archiescan\",\n \"url\": \"https://app.archiescan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeiady63oqduls2pm4aaykzjhahblagokhnpsc5qeq5dmkxqelh7i2i\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://archiechain.io/\",\n \"name\": \"ARC Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ARC\",\n \"symbol\": \"ARC\",\n \"decimals\": 18\n },\n \"networkId\": 1243,\n \"rpc\": [\"https://arc.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1243.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-main-1.archiechain.io\"],\n \"shortName\": \"ARC\",\n \"slug\": \"arc\",\n \"testnet\": false\n};\n\nvar c1244 = {\n \"chain\": \"ARC\",\n \"chainId\": 1244,\n \"explorers\": [{\n \"name\": \"archiescan\",\n \"url\": \"https://testnet.archiescan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.archiechain.io\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeiady63oqduls2pm4aaykzjhahblagokhnpsc5qeq5dmkxqelh7i2i\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://archiechain.io/\",\n \"name\": \"ARC Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ARC\",\n \"symbol\": \"ARC\",\n \"decimals\": 18\n },\n \"networkId\": 1244,\n \"rpc\": [\"https://arc-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1244.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-test-1.archiechain.io\"],\n \"shortName\": \"TARC\",\n \"slug\": \"arc-testnet\",\n \"testnet\": true\n};\n\nvar c1246 = {\n \"chain\": \"omplatform\",\n \"chainId\": 1246,\n \"explorers\": [{\n \"name\": \"OMSCAN - Expenter\",\n \"url\": \"https://omscan.omplatform.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://omplatform.com/\",\n \"name\": \"OM Platform Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OMCOIN\",\n \"symbol\": \"OM\",\n \"decimals\": 18\n },\n \"networkId\": 1246,\n \"rpc\": [\"https://om-platform.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1246.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-cnx.omplatform.com/\"],\n \"shortName\": \"om\",\n \"slug\": \"om-platform\",\n \"testnet\": false\n};\n\nvar c1252 = {\n \"chain\": \"CICT\",\n \"chainId\": 1252,\n \"explorers\": [{\n \"name\": \"CICscan\",\n \"url\": \"https://testnet.cicscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNekc5gpyrQkeDQcmfJLBrP5fa6GMarB13iy6aHVdQJDU\",\n \"width\": 1024,\n \"height\": 768,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://cicfaucet.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmNekc5gpyrQkeDQcmfJLBrP5fa6GMarB13iy6aHVdQJDU\",\n \"width\": 1024,\n \"height\": 768,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cicchain.net\",\n \"name\": \"CIC Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Crazy Internet Coin\",\n \"symbol\": \"CICT\",\n \"decimals\": 18\n },\n \"networkId\": 1252,\n \"rpc\": [\"https://cic-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1252.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testapi.cicscan.com\"],\n \"shortName\": \"CICT\",\n \"slug\": \"cic-chain-testnet\",\n \"testnet\": true\n};\n\nvar c1280 = {\n \"chain\": \"HALO\",\n \"chainId\": 1280,\n \"explorers\": [{\n \"name\": \"HALOexplorer\",\n \"url\": \"https://browser.halo.land\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://halo.land/#/\",\n \"name\": \"HALO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"HALO\",\n \"symbol\": \"HO\",\n \"decimals\": 18\n },\n \"networkId\": 1280,\n \"rpc\": [\"https://halo.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1280.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nodes.halo.land\"],\n \"shortName\": \"HO\",\n \"slug\": \"halo\",\n \"testnet\": false\n};\n\nvar c1284 = {\n \"chain\": \"MOON\",\n \"chainId\": 1284,\n \"explorers\": [{\n \"name\": \"moonscan\",\n \"url\": \"https://moonbeam.moonscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://moonbeam.network/networks/moonbeam/\",\n \"name\": \"Moonbeam\",\n \"nativeCurrency\": {\n \"name\": \"Glimmer\",\n \"symbol\": \"GLMR\",\n \"decimals\": 18\n },\n \"networkId\": 1284,\n \"rpc\": [\"https://moonbeam.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1284.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.api.moonbeam.network\", \"wss://wss.api.moonbeam.network\", \"https://moonbeam.publicnode.com\", \"wss://moonbeam.publicnode.com\"],\n \"shortName\": \"mbeam\",\n \"slug\": \"moonbeam\",\n \"testnet\": false\n};\n\nvar c1285 = {\n \"chain\": \"MOON\",\n \"chainId\": 1285,\n \"explorers\": [{\n \"name\": \"moonscan\",\n \"url\": \"https://moonriver.moonscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://moonbeam.network/networks/moonriver/\",\n \"name\": \"Moonriver\",\n \"nativeCurrency\": {\n \"name\": \"Moonriver\",\n \"symbol\": \"MOVR\",\n \"decimals\": 18\n },\n \"networkId\": 1285,\n \"rpc\": [\"https://moonriver.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1285.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.api.moonriver.moonbeam.network\", \"wss://wss.api.moonriver.moonbeam.network\", \"https://moonriver.publicnode.com\", \"wss://moonriver.publicnode.com\"],\n \"shortName\": \"mriver\",\n \"slug\": \"moonriver\",\n \"testnet\": false\n};\n\nvar c1286 = {\n \"chain\": \"MOON\",\n \"chainId\": 1286,\n \"explorers\": [],\n \"faucets\": [],\n \"name\": \"Moonrock old\",\n \"nativeCurrency\": {\n \"name\": \"Rocs\",\n \"symbol\": \"ROC\",\n \"decimals\": 18\n },\n \"networkId\": 1286,\n \"rpc\": [],\n \"shortName\": \"mrock-old\",\n \"slug\": \"moonrock-old\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c1287 = {\n \"chain\": \"MOON\",\n \"chainId\": 1287,\n \"explorers\": [{\n \"name\": \"moonscan\",\n \"url\": \"https://moonbase.moonscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.moonbeam.network/networks/testnet/\",\n \"name\": \"Moonbase Alpha\",\n \"nativeCurrency\": {\n \"name\": \"Dev\",\n \"symbol\": \"DEV\",\n \"decimals\": 18\n },\n \"networkId\": 1287,\n \"rpc\": [\"https://moonbase-alpha.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1287.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.api.moonbase.moonbeam.network\", \"wss://wss.api.moonbase.moonbeam.network\"],\n \"shortName\": \"mbase\",\n \"slug\": \"moonbase-alpha\",\n \"testnet\": true\n};\n\nvar c1288 = {\n \"chain\": \"MOON\",\n \"chainId\": 1288,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://docs.moonbeam.network/learn/platform/networks/overview/\",\n \"name\": \"Moonrock\",\n \"nativeCurrency\": {\n \"name\": \"Rocs\",\n \"symbol\": \"ROC\",\n \"decimals\": 18\n },\n \"networkId\": 1288,\n \"rpc\": [\"https://moonrock.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1288.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.api.moonrock.moonbeam.network\", \"wss://wss.api.moonrock.moonbeam.network\"],\n \"shortName\": \"mrock\",\n \"slug\": \"moonrock\",\n \"testnet\": false\n};\n\nvar c1291 = {\n \"chain\": \"SWTR\",\n \"chainId\": 1291,\n \"explorers\": [{\n \"name\": \"Swisstronik Scout\",\n \"url\": \"https://explorer-evm.testnet.swisstronik.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.testnet.swisstronik.com\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafybeihuintkoipxalwans23vhxajbwjnozpy34ww7ia7ds7nay3rpylzi\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.swisstronik.com\",\n \"name\": \"Swisstronik Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Swisstronik\",\n \"symbol\": \"SWTR\",\n \"decimals\": 18\n },\n \"networkId\": 1291,\n \"rpc\": [\"https://swisstronik-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1291.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://json-rpc.testnet.swisstronik.com\"],\n \"shortName\": \"swtr\",\n \"slug\": \"swisstronik-testnet\",\n \"testnet\": true\n};\n\nvar c1294 = {\n \"chain\": \"Bobabeam\",\n \"chainId\": 1294,\n \"explorers\": [{\n \"name\": \"Bobabeam block explorer\",\n \"url\": \"https://blockexplorer.bobabeam.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Bobabeam\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 1294,\n \"rpc\": [\"https://bobabeam.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1294.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bobabeam.boba.network\", \"wss://wss.bobabeam.boba.network\", \"https://replica.bobabeam.boba.network\", \"wss://replica-wss.bobabeam.boba.network\"],\n \"shortName\": \"Bobabeam\",\n \"slug\": \"bobabeam\",\n \"testnet\": false\n};\n\nvar c1297 = {\n \"chain\": \"Bobabase Testnet\",\n \"chainId\": 1297,\n \"explorers\": [{\n \"name\": \"Bobabase block explorer\",\n \"url\": \"https://blockexplorer.bobabase.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Bobabase Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 1297,\n \"rpc\": [\"https://bobabase-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1297.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bobabase.boba.network\", \"wss://wss.bobabase.boba.network\", \"https://replica.bobabase.boba.network\", \"wss://replica-wss.bobabase.boba.network\"],\n \"shortName\": \"Bobabase\",\n \"slug\": \"bobabase-testnet\",\n \"testnet\": true\n};\n\nvar c1311 = {\n \"chain\": \"DOS\",\n \"chainId\": 1311,\n \"explorers\": [{\n \"name\": \"dos-testnet\",\n \"url\": \"https://test.doscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"http://doschain.io/\",\n \"name\": \"Dos Fuji Subnet\",\n \"nativeCurrency\": {\n \"name\": \"Dos Native Token\",\n \"symbol\": \"DOS\",\n \"decimals\": 18\n },\n \"networkId\": 1311,\n \"rpc\": [\"https://dos-fuji-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1311.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test.doschain.com/jsonrpc\"],\n \"shortName\": \"TDOS\",\n \"slug\": \"dos-fuji-subnet\",\n \"testnet\": true\n};\n\nvar c1314 = {\n \"chain\": \"ALYX\",\n \"chainId\": 1314,\n \"explorers\": [{\n \"name\": \"alyxscan\",\n \"url\": \"https://www.alyxscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifd43fcvh77mdcwjrpzpnlhthounc6b4u645kukqpqhduaveatf6i\",\n \"width\": 2481,\n \"height\": 2481,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.alyxchain.com\",\n \"name\": \"Alyx Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Alyx Chain Native Token\",\n \"symbol\": \"ALYX\",\n \"decimals\": 18\n },\n \"networkId\": 1314,\n \"rpc\": [\"https://alyx.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1314.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.alyxchain.com\"],\n \"shortName\": \"alyx\",\n \"slug\": \"alyx\",\n \"testnet\": false\n};\n\nvar c1319 = {\n \"chain\": \"AIA\",\n \"chainId\": 1319,\n \"explorers\": [{\n \"name\": \"AIA Chain Explorer Mainnet\",\n \"url\": \"https://aiascan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXbBMMhjTTGAGjmqMpJm3ufFrtdkfEXCFyXYgz7nnZzsy\",\n \"width\": 160,\n \"height\": 160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://aiachain.org/\",\n \"name\": \"AIA Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"AIA Mainnet\",\n \"symbol\": \"AIA\",\n \"decimals\": 18\n },\n \"networkId\": 1319,\n \"rpc\": [\"https://aia.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1319.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://aia-dataseed1.aiachain.org\", \"https://aia-dataseed2.aiachain.org\", \"https://aia-dataseed3.aiachain.org\", \"https://aia-dataseed4.aiachain.org\"],\n \"shortName\": \"aia\",\n \"slug\": \"aia\",\n \"testnet\": false\n};\n\nvar c1320 = {\n \"chain\": \"AIA\",\n \"chainId\": 1320,\n \"explorers\": [{\n \"name\": \"AIA Chain Explorer Testnet\",\n \"url\": \"https://testnet.aiascan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://aia-faucet-testnet.aiachain.org\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmXbBMMhjTTGAGjmqMpJm3ufFrtdkfEXCFyXYgz7nnZzsy\",\n \"width\": 160,\n \"height\": 160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://aiachain.org\",\n \"name\": \"AIA Testnet\",\n \"nativeCurrency\": {\n \"name\": \"AIA Testnet\",\n \"symbol\": \"AIA\",\n \"decimals\": 18\n },\n \"networkId\": 1320,\n \"rpc\": [\"https://aia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1320.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://aia-dataseed1-testnet.aiachain.org\"],\n \"shortName\": \"aiatestnet\",\n \"slug\": \"aia-testnet\",\n \"testnet\": true\n};\n\nvar c1337 = {\n \"chain\": \"ETH\",\n \"chainId\": 1337,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"name\": \"Localhost\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1337,\n \"redFlags\": [],\n \"rpc\": [\"http://localhost:8545\"],\n \"shortName\": \"local\",\n \"slug\": \"localhost\",\n \"testnet\": true\n};\n\nvar c1338 = {\n \"chain\": \"Elysium\",\n \"chainId\": 1338,\n \"explorers\": [{\n \"name\": \"Elysium testnet explorer\",\n \"url\": \"https://elysium-explorer.vulcanforged.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://elysiumscan.vulcanforged.com\",\n \"name\": \"Elysium Testnet\",\n \"nativeCurrency\": {\n \"name\": \"LAVA\",\n \"symbol\": \"LAVA\",\n \"decimals\": 18\n },\n \"networkId\": 1338,\n \"rpc\": [\"https://elysium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1338.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://elysium-test-rpc.vulcanforged.com\"],\n \"shortName\": \"ELST\",\n \"slug\": \"elysium-testnet\",\n \"testnet\": true,\n \"title\": \"An L1, carbon-neutral, tree-planting, metaverse dedicated blockchain created by VulcanForged\"\n};\n\nvar c1339 = {\n \"chain\": \"Elysium\",\n \"chainId\": 1339,\n \"explorers\": [{\n \"name\": \"Elysium mainnet explorer\",\n \"url\": \"https://explorer.elysiumchain.tech\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://elysiumscan.vulcanforged.com\",\n \"name\": \"Elysium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LAVA\",\n \"symbol\": \"LAVA\",\n \"decimals\": 18\n },\n \"networkId\": 1339,\n \"rpc\": [\"https://elysium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1339.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.elysiumchain.tech/\"],\n \"shortName\": \"ELSM\",\n \"slug\": \"elysium\",\n \"testnet\": false,\n \"title\": \"An L1, carbon-neutral, tree-planting, metaverse dedicated blockchain created by VulcanForged\"\n};\n\nvar c1343 = {\n \"chain\": \"BLITZ\",\n \"chainId\": 1343,\n \"explorers\": [{\n \"name\": \"BLITZ Explorer\",\n \"url\": \"https://subnets-test.avax.network/blitz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://blitz.gg\",\n \"name\": \"Blitz Subnet\",\n \"nativeCurrency\": {\n \"name\": \"BLITZ GAS\",\n \"symbol\": \"BGAS\",\n \"decimals\": 18\n },\n \"networkId\": 1343,\n \"rpc\": [\"https://blitz-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1343.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/blitz/testnet/rpc\"],\n \"shortName\": \"blitz\",\n \"slug\": \"blitz-subnet\",\n \"testnet\": true\n};\n\nvar c1353 = {\n \"chain\": \"CIC\",\n \"chainId\": 1353,\n \"explorers\": [{\n \"name\": \"CICscan\",\n \"url\": \"https://cicscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNekc5gpyrQkeDQcmfJLBrP5fa6GMarB13iy6aHVdQJDU\",\n \"width\": 1024,\n \"height\": 768,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNekc5gpyrQkeDQcmfJLBrP5fa6GMarB13iy6aHVdQJDU\",\n \"width\": 1024,\n \"height\": 768,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cicchain.net\",\n \"name\": \"CIC Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Crazy Internet Coin\",\n \"symbol\": \"CIC\",\n \"decimals\": 18\n },\n \"networkId\": 1353,\n \"rpc\": [\"https://cic-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1353.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://xapi.cicscan.com\"],\n \"shortName\": \"CIC\",\n \"slug\": \"cic-chain\",\n \"testnet\": false\n};\n\nvar c1369 = {\n \"chain\": \"ZAFIC\",\n \"chainId\": 1369,\n \"explorers\": [{\n \"name\": \"zafirium-explorer\",\n \"url\": \"https://explorer.zakumi.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZT1Wq3P4YbgKBSUmCtgbs5ijPF5d91BzaMPh7Aub8d8t\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.zakumi.io\",\n \"name\": \"Zafirium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Zakumi Chain Native Token\",\n \"symbol\": \"ZAFIC\",\n \"decimals\": 18\n },\n \"networkId\": 1369,\n \"rpc\": [\"https://zafirium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1369.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.zakumi.io\"],\n \"shortName\": \"zafic\",\n \"slug\": \"zafirium\",\n \"testnet\": false\n};\n\nvar c1379 = {\n \"chain\": \"KLC\",\n \"chainId\": 1379,\n \"explorers\": [{\n \"name\": \"kalarscan\",\n \"url\": \"https://explorer.kalarchain.tech\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidbzzv3lrwlzquhlpl4jcmr54sifhi5ufoek6olb5kjh3h3kvktdq\",\n \"width\": 411,\n \"height\": 159,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihfoy2kgf2rebaoicso7z5h7ju46z6gtr64mskkths3qbfkrtnkjm\",\n \"width\": 190,\n \"height\": 170,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kalarchain.tech\",\n \"name\": \"Kalar Chain\",\n \"nativeCurrency\": {\n \"name\": \"Kalar\",\n \"symbol\": \"KLC\",\n \"decimals\": 18\n },\n \"networkId\": 1379,\n \"rpc\": [\"https://kalar-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1379.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-api.kalarchain.tech\"],\n \"shortName\": \"KLC\",\n \"slug\": \"kalar-chain\",\n \"testnet\": false\n};\n\nvar c1388 = {\n \"chain\": \"AmStar\",\n \"chainId\": 1388,\n \"explorers\": [{\n \"name\": \"amstarscan\",\n \"url\": \"https://mainnet.amstarscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmd4TMQdnYxaUZqnVddh5S37NGH72g2kkK38ccCEgdZz1C\",\n \"width\": 599,\n \"height\": 563,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://sinso.io\",\n \"name\": \"AmStar Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SINSO\",\n \"symbol\": \"SINSO\",\n \"decimals\": 18\n },\n \"networkId\": 1388,\n \"rpc\": [\"https://amstar.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1388.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.amstarscan.com\"],\n \"shortName\": \"ASAR\",\n \"slug\": \"amstar\",\n \"testnet\": false\n};\n\nvar c1392 = {\n \"chain\": \"Joseon\",\n \"chainId\": 1392,\n \"explorers\": [{\n \"name\": \"BlockExplorer\",\n \"url\": \"https://www.blockexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQjwcNRCLXU8JBtSkPLUnbWVrpoqbnZVffpJ9Bu8rG34e\",\n \"width\": 148,\n \"height\": 148,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.joseon.com/\",\n \"name\": \"Joseon Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Joseon Mun\",\n \"symbol\": \"JSM\",\n \"decimals\": 18\n },\n \"networkId\": 1392,\n \"rpc\": [\"https://joseon.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1392.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.modchain.net/blockchain.joseon.com/rpc\"],\n \"shortName\": \"mun\",\n \"slug\": \"joseon\",\n \"testnet\": false\n};\n\nvar c1402 = {\n \"chain\": \"Polygon\",\n \"chainId\": 1402,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.public.zkevm-test.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://polygon.technology/solutions/polygon-zkevm/\",\n \"name\": \"Polygon zkEVM Testnet old\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1402,\n \"rpc\": [],\n \"shortName\": \"zkevmtest\",\n \"slug\": \"polygon-zkevm-testnet-old\",\n \"status\": \"deprecated\",\n \"testnet\": true,\n \"title\": \"Polygon zkEVM Testnet\"\n};\n\nvar c1422 = {\n \"chain\": \"Polygon\",\n \"chainId\": 1422,\n \"explorers\": [{\n \"name\": \"Polygon zkEVM explorer\",\n \"url\": \"https://explorer.public.zkevm-test.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://polygon.technology/solutions/polygon-zkevm/\",\n \"name\": \"Polygon zkEVM Testnet Pre Audit-Upgraded\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1422,\n \"rpc\": [],\n \"shortName\": \"testnet-zkEVM-mango-pre-audit-upgraded\",\n \"slug\": \"polygon-zkevm-testnet-pre-audit-upgraded\",\n \"status\": \"deprecated\",\n \"testnet\": true,\n \"title\": \"Polygon zkEVM Testnet Pre Audit-Upgraded\"\n};\n\nvar c1433 = {\n \"chain\": \"Rikeza\",\n \"chainId\": 1433,\n \"explorers\": [{\n \"name\": \"Rikeza Blockchain explorer\",\n \"url\": \"https://rikscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfJ1Qxpzi6CSLeFeWY1Bwe435CpT5za5WfrLUE7vNzZfy\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rikeza.io\",\n \"name\": \"Rikeza Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Rikeza\",\n \"symbol\": \"RIK\",\n \"decimals\": 18\n },\n \"networkId\": 1433,\n \"rpc\": [\"https://rikeza-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1433.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.rikscan.com\"],\n \"shortName\": \"RIK\",\n \"slug\": \"rikeza-network\",\n \"testnet\": false,\n \"title\": \"Rikeza Network Mainnet\"\n};\n\nvar c1440 = {\n \"chain\": \"LAS\",\n \"chainId\": 1440,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRidubY7BVwC737BQwGEttenP1npAXN7ZNryktE416uUW\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://dev.livingassets.io/\",\n \"name\": \"Living Assets Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LAS\",\n \"symbol\": \"LAS\",\n \"decimals\": 18\n },\n \"networkId\": 1440,\n \"rpc\": [\"https://living-assets.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1440.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://beta.mainnet.livingassets.io/rpc\", \"https://gamma.mainnet.livingassets.io/rpc\"],\n \"shortName\": \"LAS\",\n \"slug\": \"living-assets\",\n \"testnet\": false\n};\n\nvar c1442 = {\n \"chain\": \"Polygon\",\n \"chainId\": 1442,\n \"explorers\": [{\n \"name\": \"Polygon zkEVM explorer\",\n \"url\": \"https://explorer.public.zkevm-test.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNmJZkQgx9RcFLS3rvxQTVYcPfyAFPr667keHTUxB9PDv\",\n \"width\": 122,\n \"height\": 135,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polygon.technology/solutions/polygon-zkevm/\",\n \"name\": \"Polygon zkEVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1442,\n \"redFlags\": [],\n \"rpc\": [\"https://polygon-zkevm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1442.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.public.zkevm-test.net\"],\n \"shortName\": \"testnet-zkEVM-mango\",\n \"slug\": \"polygon-zkevm-testnet\",\n \"testnet\": true,\n \"title\": \"Polygon zkEVM Testnet\"\n};\n\nvar c1452 = {\n \"chain\": \"GIL\",\n \"chainId\": 1452,\n \"explorers\": [{\n \"name\": \"GIL Explorer\",\n \"url\": \"https://explorer.giltestnet.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeDXUAYgQxwaSJLsqWgTqnrJVwicgEyNf9199xAMyRkqA\",\n \"width\": 243,\n \"height\": 243,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://gaussgang.com/\",\n \"name\": \"GIL Testnet\",\n \"nativeCurrency\": {\n \"name\": \"GANG\",\n \"symbol\": \"GANG\",\n \"decimals\": 18\n },\n \"networkId\": 1452,\n \"rpc\": [\"https://gil-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1452.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.giltestnet.com\"],\n \"shortName\": \"gil\",\n \"slug\": \"gil-testnet\",\n \"testnet\": true\n};\n\nvar c1455 = {\n \"chain\": \"Ctex Scan Blockchain\",\n \"chainId\": 1455,\n \"explorers\": [{\n \"name\": \"Ctex Scan Explorer\",\n \"url\": \"https://ctexscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.ctexscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreid5evn4qovxo6msuekizv5zn7va62tea7w2zpdx5sskconebuhqle\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ctextoken.io\",\n \"name\": \"Ctex Scan Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"CTEX\",\n \"symbol\": \"CTEX\",\n \"decimals\": 18\n },\n \"networkId\": 1455,\n \"rpc\": [\"https://ctex-scan-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1455.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.ctexscan.com/\"],\n \"shortName\": \"CTEX\",\n \"slug\": \"ctex-scan-blockchain\",\n \"testnet\": false\n};\n\nvar c1501 = {\n \"chain\": \"ChainX\",\n \"chainId\": 1501,\n \"explorers\": [{\n \"name\": \"bevm scan\",\n \"url\": \"https://scan.bevm.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://chainx.org\",\n \"name\": \"BEVM\",\n \"nativeCurrency\": {\n \"name\": \"BTC\",\n \"symbol\": \"BTC\",\n \"decimals\": 18\n },\n \"networkId\": 1501,\n \"rpc\": [\"https://bevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1501.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-1.bevm.io/\", \"https://rpc-2.bevm.io/\"],\n \"shortName\": \"chainx\",\n \"slug\": \"bevm\",\n \"testnet\": false\n};\n\nvar c1506 = {\n \"chain\": \"Sherpax Mainnet\",\n \"chainId\": 1506,\n \"explorers\": [{\n \"name\": \"Sherpax Mainnet Explorer\",\n \"url\": \"https://evm.sherpax.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://sherpax.io/\",\n \"name\": \"Sherpax Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"KSX\",\n \"symbol\": \"KSX\",\n \"decimals\": 18\n },\n \"networkId\": 1506,\n \"rpc\": [\"https://sherpax.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1506.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.sherpax.io/rpc\"],\n \"shortName\": \"Sherpax\",\n \"slug\": \"sherpax\",\n \"testnet\": false\n};\n\nvar c1507 = {\n \"chain\": \"Sherpax Testnet\",\n \"chainId\": 1507,\n \"explorers\": [{\n \"name\": \"Sherpax Testnet Explorer\",\n \"url\": \"https://evm-pre.sherpax.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://sherpax.io/\",\n \"name\": \"Sherpax Testnet\",\n \"nativeCurrency\": {\n \"name\": \"KSX\",\n \"symbol\": \"KSX\",\n \"decimals\": 18\n },\n \"networkId\": 1507,\n \"rpc\": [\"https://sherpax-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1507.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sherpax-testnet.chainx.org/rpc\"],\n \"shortName\": \"SherpaxTestnet\",\n \"slug\": \"sherpax-testnet\",\n \"testnet\": true\n};\n\nvar c1515 = {\n \"chain\": \"BMC\",\n \"chainId\": 1515,\n \"explorers\": [{\n \"name\": \"Beagle Messaging Chain Explorer\",\n \"url\": \"https://eth.beagle.chat\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.beagle.chat/\"],\n \"infoURL\": \"https://beagle.chat/\",\n \"name\": \"Beagle Messaging Chain\",\n \"nativeCurrency\": {\n \"name\": \"Beagle\",\n \"symbol\": \"BG\",\n \"decimals\": 18\n },\n \"networkId\": 1515,\n \"rpc\": [\"https://beagle-messaging-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1515.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://beagle.chat/eth\"],\n \"shortName\": \"beagle\",\n \"slug\": \"beagle-messaging-chain\",\n \"testnet\": false\n};\n\nvar c1559 = {\n \"chain\": \"TENET\",\n \"chainId\": 1559,\n \"explorers\": [{\n \"name\": \"TenetScan Mainnet\",\n \"url\": \"https://tenetscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmc1gqjWTzNo4pyFSGtQuCu7kRSZZBUVybtTjHn2nNEEPA\",\n \"width\": 640,\n \"height\": 640,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc1gqjWTzNo4pyFSGtQuCu7kRSZZBUVybtTjHn2nNEEPA\",\n \"width\": 640,\n \"height\": 640,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://tenet.org/\",\n \"name\": \"Tenet\",\n \"nativeCurrency\": {\n \"name\": \"TENET\",\n \"symbol\": \"TENET\",\n \"decimals\": 18\n },\n \"networkId\": 1559,\n \"rpc\": [\"https://tenet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1559.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tenet.org\", \"https://tenet-evm.publicnode.com\", \"wss://tenet-evm.publicnode.com\"],\n \"shortName\": \"tenet\",\n \"slug\": \"tenet\",\n \"testnet\": false,\n \"title\": \"Tenet Mainnet\"\n};\n\nvar c1582 = {\n \"chain\": \"gETH\",\n \"chainId\": 1582,\n \"explorers\": [{\n \"name\": \"Bubs Testnet Explorer\",\n \"url\": \"https://explorer.bubstestnet.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://bubstestnet.com\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeibfpls2ealp4e5fdeoxessfjjkldgjnrcx2erph7524pg7alskk6a/1f9cb.svg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://bubstestnet.com\",\n \"name\": \"Bubs Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"gETH\",\n \"decimals\": 18\n },\n \"networkId\": 1582,\n \"redFlags\": [],\n \"rpc\": [\"https://bubs-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1582.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bubs.calderachain.xyz/http\"],\n \"shortName\": \"Bubs\",\n \"slug\": \"bubs-testnet\",\n \"testnet\": true\n};\n\nvar c1618 = {\n \"chain\": \"Catechain\",\n \"chainId\": 1618,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://catechain.com\",\n \"name\": \"Catecoin Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Catecoin\",\n \"symbol\": \"CATE\",\n \"decimals\": 18\n },\n \"networkId\": 1618,\n \"rpc\": [\"https://catecoin-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1618.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://send.catechain.com\"],\n \"shortName\": \"cate\",\n \"slug\": \"catecoin-chain\",\n \"testnet\": false\n};\n\nvar c1620 = {\n \"chain\": \"ATH\",\n \"chainId\": 1620,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://atheios.org\",\n \"name\": \"Atheios\",\n \"nativeCurrency\": {\n \"name\": \"Atheios Ether\",\n \"symbol\": \"ATH\",\n \"decimals\": 18\n },\n \"networkId\": 11235813,\n \"rpc\": [\"https://atheios.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1620.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.atheios.org/\"],\n \"shortName\": \"ath\",\n \"slip44\": 1620,\n \"slug\": \"atheios\",\n \"testnet\": false\n};\n\nvar c1657 = {\n \"chain\": \"btachain\",\n \"chainId\": 1657,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://bitcoinasset.io/\",\n \"name\": \"Btachain\",\n \"nativeCurrency\": {\n \"name\": \"Bitcoin Asset\",\n \"symbol\": \"BTA\",\n \"decimals\": 18\n },\n \"networkId\": 1657,\n \"rpc\": [\"https://btachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1657.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed1.btachain.com/\"],\n \"shortName\": \"bta\",\n \"slug\": \"btachain\",\n \"testnet\": false\n};\n\nvar c1662 = {\n \"chain\": \"LQC\",\n \"chainId\": 1662,\n \"explorers\": [{\n \"name\": \"Liquichain Mainnet\",\n \"url\": \"https://mainnet.liquichain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://liquichain.io/\",\n \"name\": \"Liquichain\",\n \"nativeCurrency\": {\n \"name\": \"Licoin\",\n \"symbol\": \"LCN\",\n \"decimals\": 18\n },\n \"networkId\": 1662,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [],\n \"shortName\": \"Liquichain\",\n \"slug\": \"liquichain\",\n \"testnet\": false\n};\n\nvar c1663 = {\n \"chain\": \"Gobi\",\n \"chainId\": 1663,\n \"explorers\": [{\n \"name\": \"Gobi Testnet Block Explorer\",\n \"url\": \"https://gobi-explorer.horizen.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSFMBk3rMyu45Sy9KQHjgArFj4HdywANNYrSosLMUdcti\",\n \"width\": 1213,\n \"height\": 1213,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.horizen.io\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSFMBk3rMyu45Sy9KQHjgArFj4HdywANNYrSosLMUdcti\",\n \"width\": 1213,\n \"height\": 1213,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://horizen.io/\",\n \"name\": \"Horizen Gobi Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Zen\",\n \"symbol\": \"tZEN\",\n \"decimals\": 18\n },\n \"networkId\": 1663,\n \"rpc\": [\"https://horizen-gobi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1663.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gobi-rpc.horizenlabs.io/ethv1\", \"https://rpc.ankr.com/horizen_gobi_testnet\"],\n \"shortName\": \"Gobi\",\n \"slip44\": 121,\n \"slug\": \"horizen-gobi-testnet\",\n \"testnet\": true\n};\n\nvar c1688 = {\n \"chain\": \"LUDAN\",\n \"chainId\": 1688,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigzeanzqgxrzzep45t776ovbwi242poqxbryuu2go5eedeuwwcsay\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.ludan.org/\",\n \"name\": \"LUDAN Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LUDAN\",\n \"symbol\": \"LUDAN\",\n \"decimals\": 18\n },\n \"networkId\": 1688,\n \"rpc\": [\"https://ludan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1688.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ludan.org/\"],\n \"shortName\": \"LUDAN\",\n \"slug\": \"ludan\",\n \"testnet\": false\n};\n\nvar c1701 = {\n \"chain\": \"ETH\",\n \"chainId\": 1701,\n \"explorers\": [{\n \"name\": \"Anytype Explorer\",\n \"url\": \"https://explorer.anytype.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmaARJiAQUn4Z6wG8GLEry3kTeBB3k6RfHzSZU9SPhBgcG\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://evm.anytype.io/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmaARJiAQUn4Z6wG8GLEry3kTeBB3k6RfHzSZU9SPhBgcG\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://evm.anytype.io\",\n \"name\": \"Anytype EVM Chain\",\n \"nativeCurrency\": {\n \"name\": \"ANY\",\n \"symbol\": \"ANY\",\n \"decimals\": 18\n },\n \"networkId\": 1701,\n \"rpc\": [\"https://anytype-evm-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1701.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://geth.anytype.io\"],\n \"shortName\": \"AnytypeChain\",\n \"slug\": \"anytype-evm-chain\",\n \"testnet\": false\n};\n\nvar c1707 = {\n \"chain\": \"TBSI\",\n \"chainId\": 1707,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://exp.blockchain.or.th\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://blockchain.or.th\",\n \"name\": \"TBSI Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Jinda\",\n \"symbol\": \"JINDA\",\n \"decimals\": 18\n },\n \"networkId\": 1707,\n \"rpc\": [\"https://tbsi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1707.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.blockchain.or.th\"],\n \"shortName\": \"TBSI\",\n \"slug\": \"tbsi\",\n \"testnet\": false,\n \"title\": \"Thai Blockchain Service Infrastructure Mainnet\"\n};\n\nvar c1708 = {\n \"chain\": \"TBSI\",\n \"chainId\": 1708,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://exp.testnet.blockchain.or.th\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.blockchain.or.th\"],\n \"infoURL\": \"https://blockchain.or.th\",\n \"name\": \"TBSI Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Jinda\",\n \"symbol\": \"JINDA\",\n \"decimals\": 18\n },\n \"networkId\": 1708,\n \"rpc\": [\"https://tbsi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1708.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.blockchain.or.th\"],\n \"shortName\": \"tTBSI\",\n \"slug\": \"tbsi-testnet\",\n \"testnet\": true,\n \"title\": \"Thai Blockchain Service Infrastructure Testnet\"\n};\n\nvar c1718 = {\n \"chain\": \"PLT\",\n \"chainId\": 1718,\n \"explorers\": [{\n \"name\": \"Palettescan\",\n \"url\": \"https://palettescan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPCEGZD1p1keTT2YfPp725azx1r9Ci41hejeUuGL2whFA\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPCEGZD1p1keTT2YfPp725azx1r9Ci41hejeUuGL2whFA\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hashpalette.com/\",\n \"name\": \"Palette Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Palette Token\",\n \"symbol\": \"PLT\",\n \"decimals\": 18\n },\n \"networkId\": 1718,\n \"rpc\": [\"https://palette-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1718.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://palette-rpc.com:22000\"],\n \"shortName\": \"PCM\",\n \"slug\": \"palette-chain\",\n \"testnet\": false\n};\n\nvar c1748 = {\n \"chain\": \"Roll\",\n \"chainId\": 1748,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSNKW3HsFekHrTdgt7aAukExwYeYzHZEbG49ZDLYRfkKV/roll_logo%20-%20Ellie%20Li.png\",\n \"width\": 3600,\n \"height\": 3600,\n \"format\": \".png\"\n },\n \"infoURL\": \"https://tryroll.com/\",\n \"name\": \"Form Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1748,\n \"redFlags\": [],\n \"rpc\": [],\n \"shortName\": \"Roll\",\n \"slug\": \"form-testnet\",\n \"testnet\": true,\n \"title\": \"Roll Testnet\"\n};\n\nvar c1773 = {\n \"chain\": \"mainnet\",\n \"chainId\": 1773,\n \"explorers\": [{\n \"name\": \"PartyExplorer\",\n \"url\": \"https://partyexplorer.co\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmerDBFoXvgev2xx9U71gAaAK4CtxaaQVaAPf9Qi6UF9MS\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmerDBFoXvgev2xx9U71gAaAK4CtxaaQVaAPf9Qi6UF9MS\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"jpg\"\n },\n \"name\": \"PartyChain\",\n \"nativeCurrency\": {\n \"name\": \"Grams\",\n \"symbol\": \"GRAMS\",\n \"decimals\": 18\n },\n \"networkId\": 1773,\n \"rpc\": [\"https://partychain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1773.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://tea.mining4people.com/rpc\", \"http://172.104.194.36:8545\"],\n \"shortName\": \"TeaParty\",\n \"slug\": \"partychain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c1777 = {\n \"chain\": \"Gauss\",\n \"chainId\": 1777,\n \"explorers\": [{\n \"name\": \"Gauss Explorer\",\n \"url\": \"https://explorer.gaussgang.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeDXUAYgQxwaSJLsqWgTqnrJVwicgEyNf9199xAMyRkqA\",\n \"width\": 243,\n \"height\": 243,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://gaussgang.com/\",\n \"name\": \"Gauss Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GANG\",\n \"symbol\": \"GANG\",\n \"decimals\": 18\n },\n \"networkId\": 1777,\n \"rpc\": [\"https://gauss.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.gaussgang.com\"],\n \"shortName\": \"gauss\",\n \"slug\": \"gauss\",\n \"testnet\": false\n};\n\nvar c1804 = {\n \"chain\": \"CRC\",\n \"chainId\": 1804,\n \"explorers\": [{\n \"name\": \"Lite Explorer\",\n \"url\": \"https://ethereum-pocr.github.io/explorer/kerleano\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRLwpq47tyEd3rfK4tKRhbTvyb3fc7PCutExnL1XAb37A\",\n \"width\": 334,\n \"height\": 360,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://github.com/ethereum-pocr/kerleano/blob/main/docs/faucet.md\"],\n \"icon\": {\n \"url\": \"ipfs://QmRLwpq47tyEd3rfK4tKRhbTvyb3fc7PCutExnL1XAb37A\",\n \"width\": 334,\n \"height\": 360,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/ethereum-pocr/kerleano\",\n \"name\": \"Kerleano\",\n \"nativeCurrency\": {\n \"name\": \"Climate awaReness Coin\",\n \"symbol\": \"CRC\",\n \"decimals\": 18\n },\n \"networkId\": 1804,\n \"rpc\": [\"https://kerleano.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1804.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cacib-saturn-test.francecentral.cloudapp.azure.com\", \"wss://cacib-saturn-test.francecentral.cloudapp.azure.com:9443\"],\n \"shortName\": \"kerleano\",\n \"slug\": \"kerleano\",\n \"status\": \"active\",\n \"testnet\": true,\n \"title\": \"Proof of Climate awaReness testnet\"\n};\n\nvar c1807 = {\n \"chain\": \"rAna\",\n \"chainId\": 1807,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://rabbit.analogscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://analogfaucet.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmdfbjjF3ZzN2jTkH9REgrA8jDS6A6c21n7rbWSVbSnvQc\",\n \"width\": 310,\n \"height\": 251,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://rabbit.analogscan.com\",\n \"name\": \"Rabbit Analog Testnet Chain\",\n \"nativeCurrency\": {\n \"name\": \"Rabbit Analog Test Chain Native Token \",\n \"symbol\": \"rAna\",\n \"decimals\": 18\n },\n \"networkId\": 1807,\n \"rpc\": [\"https://rabbit-analog-testnet-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1807.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rabbit.analog-rpc.com\"],\n \"shortName\": \"rAna\",\n \"slug\": \"rabbit-analog-testnet-chain\",\n \"testnet\": true\n};\n\nvar c1818 = {\n \"chain\": \"Cube\",\n \"chainId\": 1818,\n \"explorers\": [{\n \"name\": \"cube-scan\",\n \"url\": \"https://cubescan.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbENgHTymTUUArX5MZ2XXH69WGenirU3oamkRD448hYdz\",\n \"width\": 282,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cube.network\",\n \"name\": \"Cube Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Cube Chain Native Token\",\n \"symbol\": \"CUBE\",\n \"decimals\": 18\n },\n \"networkId\": 1818,\n \"rpc\": [\"https://cube-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1818.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-mainnet.cube.network\", \"wss://ws-mainnet.cube.network\", \"https://http-mainnet-sg.cube.network\", \"wss://ws-mainnet-sg.cube.network\", \"https://http-mainnet-us.cube.network\", \"wss://ws-mainnet-us.cube.network\"],\n \"shortName\": \"cube\",\n \"slip44\": 1818,\n \"slug\": \"cube-chain\",\n \"testnet\": false\n};\n\nvar c1819 = {\n \"chain\": \"Cube\",\n \"chainId\": 1819,\n \"explorers\": [{\n \"name\": \"cubetest-scan\",\n \"url\": \"https://testnet.cubescan.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.cube.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmbENgHTymTUUArX5MZ2XXH69WGenirU3oamkRD448hYdz\",\n \"width\": 282,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cube.network\",\n \"name\": \"Cube Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Cube Chain Test Native Token\",\n \"symbol\": \"CUBET\",\n \"decimals\": 18\n },\n \"networkId\": 1819,\n \"rpc\": [\"https://cube-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1819.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-testnet.cube.network\", \"wss://ws-testnet.cube.network\", \"https://http-testnet-sg.cube.network\", \"wss://ws-testnet-sg.cube.network\", \"https://http-testnet-jp.cube.network\", \"wss://ws-testnet-jp.cube.network\", \"https://http-testnet-us.cube.network\", \"wss://ws-testnet-us.cube.network\"],\n \"shortName\": \"cubet\",\n \"slip44\": 1819,\n \"slug\": \"cube-chain-testnet\",\n \"testnet\": true\n};\n\nvar c1856 = {\n \"chain\": \"TSF\",\n \"chainId\": 1856,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://teslafunds.io\",\n \"name\": \"Teslafunds\",\n \"nativeCurrency\": {\n \"name\": \"Teslafunds Ether\",\n \"symbol\": \"TSF\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://teslafunds.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1856.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://tsfapi.europool.me\"],\n \"shortName\": \"tsf\",\n \"slug\": \"teslafunds\",\n \"testnet\": false\n};\n\nvar c1875 = {\n \"chain\": \"WBT\",\n \"chainId\": 1875,\n \"explorers\": [{\n \"name\": \"wb-explorer\",\n \"url\": \"https://explorer.whitebit.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmbi6cqsQyDjkQSoxbNTTUy8WGyVEFqCtATX2aF4KLmCcZ\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://whitebit.network\",\n \"name\": \"WhiteBIT Network\",\n \"nativeCurrency\": {\n \"name\": \"WhiteBIT Coin\",\n \"symbol\": \"WBT\",\n \"decimals\": 18\n },\n \"networkId\": 1875,\n \"rpc\": [\"https://whitebit-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1875.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.whitebit.network\"],\n \"shortName\": \"wbt\",\n \"slug\": \"whitebit-network\",\n \"testnet\": false\n};\n\nvar c1881 = {\n \"chain\": \"Gitshock Cartenz\",\n \"chainId\": 1881,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.cartenz.works\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreifqpj5jkjazvh24muc7wv4r22tihzzl75cevgecxhvojm4ls6mzpq\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gitshock.com\",\n \"name\": \"Gitshock Cartenz Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Gitshock Cartenz\",\n \"symbol\": \"tGTFX\",\n \"decimals\": 18\n },\n \"networkId\": 1881,\n \"rpc\": [\"https://gitshock-cartenz-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1881.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.cartenz.works\"],\n \"shortName\": \"gitshockchain\",\n \"slug\": \"gitshock-cartenz-testnet\",\n \"testnet\": true\n};\n\nvar c1890 = {\n \"chain\": \"Lightlink Phoenix Mainnet\",\n \"chainId\": 1890,\n \"explorers\": [{\n \"name\": \"phoenix\",\n \"url\": \"https://phoenix.lightlink.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXMDj6iAFn2ducQcUU1M87PMMdT2jfyL3Tp3Lz5uUD5Lv\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmXMDj6iAFn2ducQcUU1M87PMMdT2jfyL3Tp3Lz5uUD5Lv\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lightlink.io\",\n \"name\": \"Lightlink Phoenix Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ethereum\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1890,\n \"rpc\": [\"https://lightlink-phoenix.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1890.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://replicator-01.phoenix.lightlink.io/rpc/v1\", \"https://replicator-02.phoenix.lightlink.io/rpc/v1\"],\n \"shortName\": \"lightlink_phoenix\",\n \"slug\": \"lightlink-phoenix\",\n \"testnet\": false\n};\n\nvar c1891 = {\n \"chain\": \"Lightlink Pegasus Testnet\",\n \"chainId\": 1891,\n \"explorers\": [{\n \"name\": \"pegasus\",\n \"url\": \"https://pegasus.lightlink.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXMDj6iAFn2ducQcUU1M87PMMdT2jfyL3Tp3Lz5uUD5Lv\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://pegasus-faucet-react.vercel.app\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmXMDj6iAFn2ducQcUU1M87PMMdT2jfyL3Tp3Lz5uUD5Lv\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lightlink.io\",\n \"name\": \"Lightlink Pegasus Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ethereum\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1891,\n \"rpc\": [\"https://lightlink-pegasus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1891.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://replicator-01.pegasus.lightlink.io/rpc/v1\", \"https://replicator-02.pegasus.lightlink.io/rpc/v1\"],\n \"shortName\": \"lightlink_pegasus\",\n \"slug\": \"lightlink-pegasus-testnet\",\n \"testnet\": true\n};\n\nvar c1898 = {\n \"chain\": \"BON\",\n \"chainId\": 1898,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.boyanet.org:4001\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boyanet.org\",\n \"name\": \"BON Network\",\n \"nativeCurrency\": {\n \"name\": \"BOYACoin\",\n \"symbol\": \"BOY\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://bon-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1898.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://rpc.boyanet.org:8545\", \"ws://rpc.boyanet.org:8546\"],\n \"shortName\": \"boya\",\n \"slug\": \"bon-network\",\n \"testnet\": false\n};\n\nvar c1904 = {\n \"chain\": \"SCN\",\n \"chainId\": 1904,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.sportschainnetwork.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdW7XfRgeyoaHXEvXp8MaVteonankR32CxhL3K5Yc2uQM\",\n \"width\": 345,\n \"height\": 321,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://sportschainnetwork.xyz\",\n \"name\": \"Sports Chain Network\",\n \"nativeCurrency\": {\n \"name\": \"SCN\",\n \"symbol\": \"SCN\",\n \"decimals\": 18\n },\n \"networkId\": 1904,\n \"rpc\": [\"https://sports-chain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1904.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.sportschainnetwork.xyz/\"],\n \"shortName\": \"SCN\",\n \"slug\": \"sports-chain-network\",\n \"testnet\": false\n};\n\nvar c1907 = {\n \"chain\": \"BITCI\",\n \"chainId\": 1907,\n \"explorers\": [{\n \"name\": \"Bitci Explorer\",\n \"url\": \"https://bitciexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbxmfWw5sVMASz5EbR1DCgLfk8PnqpSJGQKpYuEUpoxqn\",\n \"width\": 64,\n \"height\": 64,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.bitcichain.com\",\n \"name\": \"Bitcichain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitci\",\n \"symbol\": \"BITCI\",\n \"decimals\": 18\n },\n \"networkId\": 1907,\n \"rpc\": [\"https://bitcichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1907.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bitci.com\"],\n \"shortName\": \"bitci\",\n \"slug\": \"bitcichain\",\n \"testnet\": false\n};\n\nvar c1908 = {\n \"chain\": \"TBITCI\",\n \"chainId\": 1908,\n \"explorers\": [{\n \"name\": \"Bitci Explorer Testnet\",\n \"url\": \"https://testnet.bitciexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bitcichain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmbxmfWw5sVMASz5EbR1DCgLfk8PnqpSJGQKpYuEUpoxqn\",\n \"width\": 64,\n \"height\": 64,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.bitcichain.com\",\n \"name\": \"Bitcichain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Test Bitci\",\n \"symbol\": \"TBITCI\",\n \"decimals\": 18\n },\n \"networkId\": 1908,\n \"rpc\": [\"https://bitcichain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1908.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bitcichain.com\"],\n \"shortName\": \"tbitci\",\n \"slug\": \"bitcichain-testnet\",\n \"testnet\": true\n};\n\nvar c1909 = {\n \"chain\": \"MRK\",\n \"chainId\": 1909,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://merklescan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZocJpCSLoQqoYFkF1kn7uKDuAiFRNTK8P5PoVeiigDBU\",\n \"width\": 114,\n \"height\": 132,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://merklescan.com\",\n \"name\": \"Merkle Scan\",\n \"nativeCurrency\": {\n \"name\": \"Merkle\",\n \"symbol\": \"MRK\",\n \"decimals\": 18\n },\n \"networkId\": 1909,\n \"rpc\": [\"https://merkle-scan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1909.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://marklechain-rpc.merklescan.com\"],\n \"shortName\": \"MRK\",\n \"slug\": \"merkle-scan\",\n \"testnet\": false\n};\n\nvar c1945 = {\n \"chain\": \"onus\",\n \"chainId\": 1945,\n \"explorers\": [{\n \"name\": \"Onus explorer testnet\",\n \"url\": \"https://explorer-testnet.onuschain.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiec34ik3glrm5jrzafdytvu4kxdsrxhqmagbe27fytdcuzkhoooay\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://onuschain.io\",\n \"name\": \"ONUS Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ONUS\",\n \"symbol\": \"ONUS\",\n \"decimals\": 18\n },\n \"networkId\": 1945,\n \"rpc\": [\"https://onus-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1945.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.onuschain.io\"],\n \"shortName\": \"onus-testnet\",\n \"slug\": \"onus-chain-testnet\",\n \"testnet\": true,\n \"title\": \"ONUS Chain Testnet\"\n};\n\nvar c1951 = {\n \"chain\": \"D-Chain\",\n \"chainId\": 1951,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmV2vhTqS9UyrX9Q6BSCbK4JrKBnS8ErHvstMjfb2oVWaj\",\n \"width\": 700,\n \"height\": 495,\n \"format\": \"png\"\n },\n \"name\": \"D-Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"DOINX\",\n \"symbol\": \"DOINX\",\n \"decimals\": 18\n },\n \"networkId\": 1951,\n \"rpc\": [\"https://d-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1951.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.d-chain.network/ext/bc/2ZiR1Bro5E59siVuwdNuRFzqL95NkvkbzyLBdrsYR9BLSHV7H4/rpc\"],\n \"shortName\": \"dchain-mainnet\",\n \"slug\": \"d-chain\",\n \"testnet\": false\n};\n\nvar c1954 = {\n \"chain\": \"Dexilla\",\n \"chainId\": 1954,\n \"explorers\": [{\n \"name\": \"dos-mainnet\",\n \"url\": \"https://exp.dexilla.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUBveetVibvSEWQrjyxySgUphLuoMGSVLGmYnobt5FgEZ\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dexilla.com\",\n \"name\": \"Dexilla Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Dexilla Native Token\",\n \"symbol\": \"DXZ\",\n \"decimals\": 18\n },\n \"networkId\": 1954,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://bridge.dexilla.com\"\n }]\n },\n \"rpc\": [\"https://dexilla-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1954.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dexilla.com\"],\n \"shortName\": \"Dexilla\",\n \"slug\": \"dexilla-testnet\",\n \"testnet\": true\n};\n\nvar c1967 = {\n \"chain\": \"MTC\",\n \"chainId\": 1967,\n \"explorers\": [{\n \"name\": \"metaexplorer-eleanor\",\n \"url\": \"https://explorer.metatime.com/eleanor\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.metatime.com/eleanor\"],\n \"infoURL\": \"https://eleanor.metatime.com\",\n \"name\": \"Eleanor\",\n \"nativeCurrency\": {\n \"name\": \"Eleanor Metacoin\",\n \"symbol\": \"MTC\",\n \"decimals\": 18\n },\n \"networkId\": 1967,\n \"rpc\": [\"https://eleanor.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1967.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.metatime.com/eleanor\", \"wss://ws.metatime.com/eleanor\"],\n \"shortName\": \"mtc\",\n \"slug\": \"eleanor\",\n \"testnet\": true,\n \"title\": \"Metatime Testnet Eleanor\"\n};\n\nvar c1969 = {\n \"chain\": \"TSCS\",\n \"chainId\": 1969,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnetscan.scschain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet.scschain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmW4C4QHLMhLeH5MsdVbauMc2Skb4ehzLKU3egLKKoux4D\",\n \"width\": 130,\n \"height\": 130,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://testnet.scschain.com\",\n \"name\": \"Super Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Super Chain Native Token\",\n \"symbol\": \"TSCS\",\n \"decimals\": 18\n },\n \"networkId\": 1969,\n \"rpc\": [\"https://super-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1969.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnetrpc.scschain.com\"],\n \"shortName\": \"tscs\",\n \"slug\": \"super-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c1970 = {\n \"chain\": \"SCS\",\n \"chainId\": 1970,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.scschain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW4C4QHLMhLeH5MsdVbauMc2Skb4ehzLKU3egLKKoux4D\",\n \"width\": 130,\n \"height\": 130,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://scschain.com\",\n \"name\": \"Super Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Super Chain Native Token\",\n \"symbol\": \"SCS\",\n \"decimals\": 18\n },\n \"networkId\": 1970,\n \"rpc\": [\"https://super-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1970.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.scschain.com\"],\n \"shortName\": \"scs\",\n \"slug\": \"super-smart-chain\",\n \"testnet\": false\n};\n\nvar c1971 = {\n \"chain\": \"ALTR\",\n \"chainId\": 1971,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigcquvoalec3ll2m26v4wsx5enlxwyn6nk2mgfqwncyqrgwivla5u\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://1971.network/\",\n \"name\": \"Atelier\",\n \"nativeCurrency\": {\n \"name\": \"ATLR\",\n \"symbol\": \"ATLR\",\n \"decimals\": 18\n },\n \"networkId\": 1971,\n \"rpc\": [\"https://atelier.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1971.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1971.network/atlr\", \"wss://1971.network/atlr\"],\n \"shortName\": \"atlr\",\n \"slug\": \"atelier\",\n \"testnet\": true,\n \"title\": \"Atelier Test Network\"\n};\n\nvar c1975 = {\n \"chain\": \"onus\",\n \"chainId\": 1975,\n \"explorers\": [{\n \"name\": \"Onus explorer mainnet\",\n \"url\": \"https://explorer.onuschain.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiec34ik3glrm5jrzafdytvu4kxdsrxhqmagbe27fytdcuzkhoooay\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://onuschain.io\",\n \"name\": \"ONUS Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ONUS\",\n \"symbol\": \"ONUS\",\n \"decimals\": 18\n },\n \"networkId\": 1975,\n \"rpc\": [\"https://onus-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1975.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.onuschain.io\", \"wss://ws.onuschain.io\"],\n \"shortName\": \"onus-mainnet\",\n \"slug\": \"onus-chain\",\n \"testnet\": false,\n \"title\": \"ONUS Chain Mainnet\"\n};\n\nvar c1984 = {\n \"chain\": \"EUN\",\n \"chainId\": 1984,\n \"explorers\": [{\n \"name\": \"testnetexplorer\",\n \"url\": \"https://testnetexplorer.eurus.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaGd5L9jGPbfyGXBFhu9gjinWJ66YtNrXq8x6Q98Eep9e\",\n \"width\": 471,\n \"height\": 471,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaGd5L9jGPbfyGXBFhu9gjinWJ66YtNrXq8x6Q98Eep9e\",\n \"width\": 471,\n \"height\": 471,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://eurus.network\",\n \"name\": \"Eurus Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Eurus\",\n \"symbol\": \"EUN\",\n \"decimals\": 18\n },\n \"networkId\": 1984,\n \"rpc\": [\"https://eurus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1984.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.eurus.network\"],\n \"shortName\": \"euntest\",\n \"slug\": \"eurus-testnet\",\n \"testnet\": true\n};\n\nvar c1985 = {\n \"chain\": \"TUSHY\",\n \"chainId\": 1985,\n \"explorers\": [{\n \"name\": \"mainnetexplorer\",\n \"url\": \"http://explore.satosh.ie\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRHT4o9ihiY6nVkkRdwZjdugbEAQiXrrov3GS9a3GTuL7\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRHT4o9ihiY6nVkkRdwZjdugbEAQiXrrov3GS9a3GTuL7\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://satosh.ie\",\n \"name\": \"SatoshIE\",\n \"nativeCurrency\": {\n \"name\": \"Tushy Token\",\n \"symbol\": \"TUSHY\",\n \"decimals\": 18\n },\n \"networkId\": 1985,\n \"rpc\": [\"https://satoshie.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1985.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://rpc.satosh.ie\"],\n \"shortName\": \"satoshie\",\n \"slug\": \"satoshie\",\n \"testnet\": false\n};\n\nvar c1986 = {\n \"chain\": \"TUSHY\",\n \"chainId\": 1986,\n \"explorers\": [{\n \"name\": \"testnetexplorer\",\n \"url\": \"http://explore-testnet.satosh.ie\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRHT4o9ihiY6nVkkRdwZjdugbEAQiXrrov3GS9a3GTuL7\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRHT4o9ihiY6nVkkRdwZjdugbEAQiXrrov3GS9a3GTuL7\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://satosh.ie\",\n \"name\": \"SatoshIE Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Tushy Token\",\n \"symbol\": \"TUSHY\",\n \"decimals\": 18\n },\n \"networkId\": 1986,\n \"rpc\": [\"https://satoshie-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1986.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet.satosh.ie\"],\n \"shortName\": \"satoshie_testnet\",\n \"slug\": \"satoshie-testnet\",\n \"testnet\": true\n};\n\nvar c1987 = {\n \"chain\": \"EGEM\",\n \"chainId\": 1987,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://egem.io\",\n \"name\": \"EtherGem\",\n \"nativeCurrency\": {\n \"name\": \"EtherGem Ether\",\n \"symbol\": \"EGEM\",\n \"decimals\": 18\n },\n \"networkId\": 1987,\n \"rpc\": [\"https://ethergem.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1987.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc.egem.io/custom\"],\n \"shortName\": \"egem\",\n \"slip44\": 1987,\n \"slug\": \"ethergem\",\n \"testnet\": false\n};\n\nvar c1994 = {\n \"chain\": \"EKTA\",\n \"chainId\": 1994,\n \"explorers\": [{\n \"name\": \"ektascan\",\n \"url\": \"https://ektascan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmfMd564KUPK8eKZDwGCT71ZC2jMnUZqP6LCtLpup3rHH1\",\n \"width\": 2100,\n \"height\": 2100,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfMd564KUPK8eKZDwGCT71ZC2jMnUZqP6LCtLpup3rHH1\",\n \"width\": 2100,\n \"height\": 2100,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.ekta.io\",\n \"name\": \"Ekta\",\n \"nativeCurrency\": {\n \"name\": \"EKTA\",\n \"symbol\": \"EKTA\",\n \"decimals\": 18\n },\n \"networkId\": 1994,\n \"rpc\": [\"https://ekta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1994.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://main.ekta.io\"],\n \"shortName\": \"ekta\",\n \"slug\": \"ekta\",\n \"testnet\": false\n};\n\nvar c1995 = {\n \"chain\": \"edeXa TestNetwork\",\n \"chainId\": 1995,\n \"explorers\": [{\n \"name\": \"edexa-testnet\",\n \"url\": \"https://explorer.testnet.edexa.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.edexa.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmSgvmLpRsCiu2ySqyceA5xN4nwi7URJRNEZLffwEKXdoR\",\n \"width\": 1028,\n \"height\": 1042,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://edexa.com/\",\n \"name\": \"edeXa Testnet\",\n \"nativeCurrency\": {\n \"name\": \"EDEXA\",\n \"symbol\": \"EDX\",\n \"decimals\": 18\n },\n \"networkId\": 1995,\n \"rpc\": [\"https://edexa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1995.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.edexa.com/rpc\", \"https://io-dataseed1.testnet.edexa.io-market.com/rpc\"],\n \"shortName\": \"edx\",\n \"slug\": \"edexa-testnet\",\n \"testnet\": true\n};\n\nvar c2000 = {\n \"chain\": \"DC\",\n \"chainId\": 2000,\n \"explorers\": [{\n \"name\": \"dogechain explorer\",\n \"url\": \"https://explorer.dogechain.dog\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNS6B6L8FfgGSMTEi2SxD3bK5cdmKPNtQKcYaJeRWrkHs\",\n \"width\": 732,\n \"height\": 732,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dogechain.dog\",\n \"name\": \"Dogechain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Dogecoin\",\n \"symbol\": \"DOGE\",\n \"decimals\": 18\n },\n \"networkId\": 2000,\n \"rpc\": [\"https://dogechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dogechain.dog\", \"https://rpc01-sg.dogechain.dog\", \"https://rpc.ankr.com/dogechain\"],\n \"shortName\": \"dc\",\n \"slug\": \"dogechain\",\n \"testnet\": false\n};\n\nvar c2001 = {\n \"chain\": \"milkAda\",\n \"chainId\": 2001,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer-mainnet-cardano-evm.c1.milkomeda.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdoUtvHDybu5ppYBZT8BMRp6AqByVSoQs8nFwKbaS55jd\",\n \"width\": 367,\n \"height\": 367,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://milkomeda.com\",\n \"name\": \"Milkomeda C1 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"milkAda\",\n \"symbol\": \"mADA\",\n \"decimals\": 18\n },\n \"networkId\": 2001,\n \"rpc\": [\"https://milkomeda-c1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet-cardano-evm.c1.milkomeda.com\", \"wss://rpc-mainnet-cardano-evm.c1.milkomeda.com\"],\n \"shortName\": \"milkAda\",\n \"slug\": \"milkomeda-c1\",\n \"testnet\": false\n};\n\nvar c2002 = {\n \"chain\": \"milkALGO\",\n \"chainId\": 2002,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer-mainnet-algorand-rollup.a1.milkomeda.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdoUtvHDybu5ppYBZT8BMRp6AqByVSoQs8nFwKbaS55jd\",\n \"width\": 367,\n \"height\": 367,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://milkomeda.com\",\n \"name\": \"Milkomeda A1 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"milkALGO\",\n \"symbol\": \"mALGO\",\n \"decimals\": 18\n },\n \"networkId\": 2002,\n \"rpc\": [\"https://milkomeda-a1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet-algorand-rollup.a1.milkomeda.com\", \"wss://rpc-mainnet-algorand-rollup.a1.milkomeda.com/ws\"],\n \"shortName\": \"milkALGO\",\n \"slug\": \"milkomeda-a1\",\n \"testnet\": false\n};\n\nvar c2008 = {\n \"chain\": \"CloudWalk Testnet\",\n \"chainId\": 2008,\n \"explorers\": [{\n \"name\": \"CloudWalk Testnet Explorer\",\n \"url\": \"https://explorer.testnet.cloudwalk.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://cloudwalk.io\",\n \"name\": \"CloudWalk Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CloudWalk Native Token\",\n \"symbol\": \"CWN\",\n \"decimals\": 18\n },\n \"networkId\": 2008,\n \"rpc\": [],\n \"shortName\": \"cloudwalk_testnet\",\n \"slug\": \"cloudwalk-testnet\",\n \"testnet\": true\n};\n\nvar c2009 = {\n \"chain\": \"CloudWalk Mainnet\",\n \"chainId\": 2009,\n \"explorers\": [{\n \"name\": \"CloudWalk Mainnet Explorer\",\n \"url\": \"https://explorer.mainnet.cloudwalk.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://cloudwalk.io\",\n \"name\": \"CloudWalk Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CloudWalk Native Token\",\n \"symbol\": \"CWN\",\n \"decimals\": 18\n },\n \"networkId\": 2009,\n \"rpc\": [],\n \"shortName\": \"cloudwalk_mainnet\",\n \"slug\": \"cloudwalk\",\n \"testnet\": false\n};\n\nvar c2016 = {\n \"chain\": \"NetZ\",\n \"chainId\": 2016,\n \"explorers\": [{\n \"name\": \"MainnetZ\",\n \"url\": \"https://explorer.mainnetz.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.mainnetz.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmT5gJ5weBiLT3GoYuF5yRTRLdPLCVZ3tXznfqW7M8fxgG\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mainnetz.io\",\n \"name\": \"MainnetZ Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MainnetZ\",\n \"symbol\": \"NetZ\",\n \"decimals\": 18\n },\n \"networkId\": 2016,\n \"rpc\": [\"https://z-mainnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2016.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.mainnetz.io\", \"https://eu-rpc.mainnetz.io\"],\n \"shortName\": \"NetZm\",\n \"slug\": \"z-mainnet\",\n \"testnet\": false\n};\n\nvar c2018 = {\n \"chain\": \"PublicMint\",\n \"chainId\": 2018,\n \"explorers\": [{\n \"name\": \"PublicMint Explorer\",\n \"url\": \"https://explorer.dev.publicmint.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://publicmint.com\",\n \"name\": \"PublicMint Devnet\",\n \"nativeCurrency\": {\n \"name\": \"USD\",\n \"symbol\": \"USD\",\n \"decimals\": 18\n },\n \"networkId\": 2018,\n \"rpc\": [\"https://publicmint-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2018.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dev.publicmint.io:8545\"],\n \"shortName\": \"pmint_dev\",\n \"slip44\": 60,\n \"slug\": \"publicmint-devnet\",\n \"testnet\": false,\n \"title\": \"Public Mint Devnet\"\n};\n\nvar c2019 = {\n \"chain\": \"PublicMint\",\n \"chainId\": 2019,\n \"explorers\": [{\n \"name\": \"PublicMint Explorer\",\n \"url\": \"https://explorer.tst.publicmint.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://publicmint.com\",\n \"name\": \"PublicMint Testnet\",\n \"nativeCurrency\": {\n \"name\": \"USD\",\n \"symbol\": \"USD\",\n \"decimals\": 18\n },\n \"networkId\": 2019,\n \"rpc\": [\"https://publicmint-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2019.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tst.publicmint.io:8545\"],\n \"shortName\": \"pmint_test\",\n \"slip44\": 60,\n \"slug\": \"publicmint-testnet\",\n \"testnet\": true,\n \"title\": \"Public Mint Testnet\"\n};\n\nvar c2020 = {\n \"chain\": \"PublicMint\",\n \"chainId\": 2020,\n \"explorers\": [{\n \"name\": \"PublicMint Explorer\",\n \"url\": \"https://explorer.publicmint.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://publicmint.com\",\n \"name\": \"PublicMint Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"USD\",\n \"symbol\": \"USD\",\n \"decimals\": 18\n },\n \"networkId\": 2020,\n \"rpc\": [\"https://publicmint.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2020.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.publicmint.io:8545\"],\n \"shortName\": \"pmint\",\n \"slip44\": 60,\n \"slug\": \"publicmint\",\n \"testnet\": false,\n \"title\": \"Public Mint Mainnet\"\n};\n\nvar c2021 = {\n \"chain\": \"EDG\",\n \"chainId\": 2021,\n \"explorers\": [{\n \"name\": \"Edgscan by Bharathcoorg\",\n \"url\": \"https://edgscan.live\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Subscan\",\n \"url\": \"https://edgeware.subscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://Qma2GfW5nQHuA7nGqdEfwaXPL63G9oTwRTQKaGTfjNtM2W\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmS3ERgAKYTmV7bSWcUPSvrrCC9wHQYxtZqEQYx9Rw4RGA\",\n \"width\": 352,\n \"height\": 304,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://edgeware.io\",\n \"name\": \"Edgeware EdgeEVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Edgeware\",\n \"symbol\": \"EDG\",\n \"decimals\": 18\n },\n \"networkId\": 2021,\n \"rpc\": [\"https://edgeware-edgeevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2021.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://edgeware-evm.jelliedowl.net\", \"https://mainnet2.edgewa.re/evm\", \"https://mainnet3.edgewa.re/evm\", \"https://mainnet4.edgewa.re/evm\", \"https://mainnet5.edgewa.re/evm\", \"wss://edgeware.jelliedowl.net\", \"wss://mainnet2.edgewa.re\", \"wss://mainnet3.edgewa.re\", \"wss://mainnet4.edgewa.re\", \"wss://mainnet5.edgewa.re\"],\n \"shortName\": \"edg\",\n \"slip44\": 523,\n \"slug\": \"edgeware-edgeevm\",\n \"testnet\": false\n};\n\nvar c2022 = {\n \"chain\": \"EDG\",\n \"chainId\": 2022,\n \"explorers\": [{\n \"name\": \"Edgscan by Bharathcoorg\",\n \"url\": \"https://testnet.edgscan.live\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://edgeware.io/build\",\n \"name\": \"Beresheet BereEVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet EDG\",\n \"symbol\": \"tEDG\",\n \"decimals\": 18\n },\n \"networkId\": 2022,\n \"rpc\": [\"https://beresheet-bereevm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2022.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://beresheet-evm.jelliedowl.net\", \"wss://beresheet.jelliedowl.net\"],\n \"shortName\": \"edgt\",\n \"slug\": \"beresheet-bereevm-testnet\",\n \"testnet\": true\n};\n\nvar c2023 = {\n \"chain\": \"Taycan\",\n \"chainId\": 2023,\n \"explorers\": [{\n \"name\": \"Taycan Explorer(Blockscout)\",\n \"url\": \"https://evmscan-test.hupayx.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Taycan Cosmos Explorer\",\n \"url\": \"https://cosmoscan-test.hupayx.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://ttaycan-faucet.hupayx.io/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hupayx.io\",\n \"name\": \"Taycan Testnet\",\n \"nativeCurrency\": {\n \"name\": \"test-Shuffle\",\n \"symbol\": \"tSFL\",\n \"decimals\": 18\n },\n \"networkId\": 2023,\n \"rpc\": [\"https://taycan-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2023.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test-taycan.hupayx.io\"],\n \"shortName\": \"taycan-testnet\",\n \"slug\": \"taycan-testnet\",\n \"testnet\": true\n};\n\nvar c2025 = {\n \"chain\": \"Rangers\",\n \"chainId\": 2025,\n \"explorers\": [{\n \"name\": \"rangersscan\",\n \"url\": \"https://scan.rangersprotocol.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXR5e5SDABWfQn6XT9uMsVYAo5Bv7vUv4jVs8DFqatZWG\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rangersprotocol.com\",\n \"name\": \"Rangers Protocol Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Rangers Protocol Gas\",\n \"symbol\": \"RPG\",\n \"decimals\": 18\n },\n \"networkId\": 2025,\n \"rpc\": [\"https://rangers-protocol.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2025.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.rangersprotocol.com/api/jsonrpc\"],\n \"shortName\": \"rpg\",\n \"slip44\": 1008,\n \"slug\": \"rangers-protocol\",\n \"testnet\": false\n};\n\nvar c2031 = {\n \"chain\": \"CFG\",\n \"chainId\": 2031,\n \"explorers\": [{\n \"name\": \"subscan\",\n \"url\": \"https://centrifuge.subscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://centrifuge.io\",\n \"name\": \"Centrifuge\",\n \"nativeCurrency\": {\n \"name\": \"Centrifuge\",\n \"symbol\": \"CFG\",\n \"decimals\": 18\n },\n \"networkId\": 2031,\n \"rpc\": [\"wss://fullnode.parachain.centrifuge.io\"],\n \"shortName\": \"cfg\",\n \"slug\": \"centrifuge\",\n \"testnet\": false\n};\n\nvar c2032 = {\n \"chain\": \"CFG\",\n \"chainId\": 2032,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://centrifuge.io\",\n \"name\": \"Catalyst\",\n \"nativeCurrency\": {\n \"name\": \"Catalyst CFG\",\n \"symbol\": \"NCFG\",\n \"decimals\": 18\n },\n \"networkId\": 2032,\n \"rpc\": [\"wss://fullnode.catalyst.cntrfg.com\"],\n \"shortName\": \"ncfg\",\n \"slug\": \"catalyst\",\n \"testnet\": false\n};\n\nvar c2037 = {\n \"chain\": \"KIWI\",\n \"chainId\": 2037,\n \"explorers\": [{\n \"name\": \"KIWI Explorer\",\n \"url\": \"https://subnets-test.avax.network/kiwi\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"name\": \"Kiwi Subnet\",\n \"nativeCurrency\": {\n \"name\": \"Shrapgas\",\n \"symbol\": \"SHRAP\",\n \"decimals\": 18\n },\n \"networkId\": 2037,\n \"rpc\": [\"https://kiwi-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2037.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/kiwi/testnet/rpc\"],\n \"shortName\": \"kiwi\",\n \"slug\": \"kiwi-subnet\",\n \"testnet\": true\n};\n\nvar c2038 = {\n \"chain\": \"SHRAPNEL\",\n \"chainId\": 2038,\n \"explorers\": [{\n \"name\": \"SHRAPNEL Explorer\",\n \"url\": \"https://subnets-test.avax.network/shrapnel\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.shrapnel.com/\",\n \"name\": \"Shrapnel Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SHRAPG\",\n \"symbol\": \"SHRAPG\",\n \"decimals\": 18\n },\n \"networkId\": 2038,\n \"rpc\": [\"https://shrapnel-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2038.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/shrapnel/testnet/rpc\"],\n \"shortName\": \"shraptest\",\n \"slug\": \"shrapnel-testnet\",\n \"testnet\": true\n};\n\nvar c2043 = {\n \"chain\": \"OTP\",\n \"chainId\": 2043,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://parachain.origintrail.io\",\n \"name\": \"OriginTrail Parachain\",\n \"nativeCurrency\": {\n \"name\": \"OriginTrail Parachain Token\",\n \"symbol\": \"OTP\",\n \"decimals\": 12\n },\n \"networkId\": 2043,\n \"rpc\": [\"https://origintrail-parachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2043.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://astrosat.origintrail.network\", \"wss://parachain-rpc.origin-trail.network\"],\n \"shortName\": \"otp\",\n \"slug\": \"origintrail-parachain\",\n \"testnet\": false\n};\n\nvar c2044 = {\n \"chain\": \"shrapnel\",\n \"chainId\": 2044,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.shrapnel.com/\",\n \"name\": \"Shrapnel Subnet\",\n \"nativeCurrency\": {\n \"name\": \"Shrapnel Gas Token\",\n \"symbol\": \"SHRAPG\",\n \"decimals\": 18\n },\n \"networkId\": 2044,\n \"rpc\": [\"https://shrapnel-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2044.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/shrapnel/mainnet/rpc\"],\n \"shortName\": \"Shrapnel\",\n \"slug\": \"shrapnel-subnet\",\n \"testnet\": false\n};\n\nvar c2047 = {\n \"chain\": \"STOS\",\n \"chainId\": 2047,\n \"explorers\": [{\n \"name\": \"Stratos EVM Explorer (Blockscout)\",\n \"url\": \"https://web3-explorer-mesos.thestratos.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Stratos Cosmos Explorer (BigDipper)\",\n \"url\": \"https://big-dipper-mesos.thestratos.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thestratos.org\",\n \"name\": \"Stratos Testnet\",\n \"nativeCurrency\": {\n \"name\": \"STOS\",\n \"symbol\": \"STOS\",\n \"decimals\": 18\n },\n \"networkId\": 2047,\n \"rpc\": [\"https://stratos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2047.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://web3-rpc-mesos.thestratos.org\"],\n \"shortName\": \"stos-testnet\",\n \"slug\": \"stratos-testnet\",\n \"testnet\": true\n};\n\nvar c2048 = {\n \"chain\": \"STOS\",\n \"chainId\": 2048,\n \"explorers\": [{\n \"name\": \"Stratos EVM Explorer (Blockscout)\",\n \"url\": \"https://web3-explorer.thestratos.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Stratos Cosmos Explorer (BigDipper)\",\n \"url\": \"https://explorer.thestratos.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.thestratos.org\",\n \"name\": \"Stratos\",\n \"nativeCurrency\": {\n \"name\": \"STOS\",\n \"symbol\": \"STOS\",\n \"decimals\": 18\n },\n \"networkId\": 2048,\n \"rpc\": [\"https://stratos.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2048.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://web3-rpc.thestratos.org\"],\n \"shortName\": \"stos-mainnet\",\n \"slug\": \"stratos\",\n \"testnet\": false\n};\n\nvar c2049 = {\n \"chain\": \"MOVO\",\n \"chainId\": 2049,\n \"explorers\": [{\n \"name\": \"movoscan\",\n \"url\": \"https://movoscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdFJMdnTvu4adiMERMP7B5ZZDwgiPmU3kU1qrUFdvHmUY\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSQGKhhBpMTM7vYpGdgMTDFyzaAN3PGG5AnmWy7KQPdSn\",\n \"width\": 1200,\n \"height\": 1200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://movo.uk\",\n \"name\": \"Movo Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Movo Smart Chain\",\n \"symbol\": \"MOVO\",\n \"decimals\": 18\n },\n \"networkId\": 2049,\n \"rpc\": [\"https://movo-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2049.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://msc-rpc.movoscan.com\", \"https://msc-rpc.movochain.org\", \"https://msc-rpc.movoswap.com\"],\n \"shortName\": \"movo\",\n \"slip44\": 2050,\n \"slug\": \"movo-smart-chain\",\n \"testnet\": false\n};\n\nvar c2077 = {\n \"chain\": \"Qkacoin\",\n \"chainId\": 2077,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.qkacoin.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://qkacoin.org\",\n \"name\": \"Quokkacoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Qkacoin\",\n \"symbol\": \"QKA\",\n \"decimals\": 18\n },\n \"networkId\": 2077,\n \"rpc\": [\"https://quokkacoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2077.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.qkacoin.org\"],\n \"shortName\": \"QKA\",\n \"slug\": \"quokkacoin\",\n \"testnet\": false\n};\n\nvar c2088 = {\n \"chain\": \"AIR\",\n \"chainId\": 2088,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://centrifuge.io\",\n \"name\": \"Altair\",\n \"nativeCurrency\": {\n \"name\": \"Altair\",\n \"symbol\": \"AIR\",\n \"decimals\": 18\n },\n \"networkId\": 2088,\n \"rpc\": [\"wss://fullnode.altair.centrifuge.io\"],\n \"shortName\": \"air\",\n \"slug\": \"altair\",\n \"testnet\": false\n};\n\nvar c2089 = {\n \"chain\": \"algol\",\n \"chainId\": 2089,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://centrifuge.io\",\n \"name\": \"Algol\",\n \"nativeCurrency\": {\n \"name\": \"Algol\",\n \"symbol\": \"ALGL\",\n \"decimals\": 18\n },\n \"networkId\": 2089,\n \"rpc\": [\"wss://fullnode.algol.cntrfg.com\"],\n \"shortName\": \"algl\",\n \"slug\": \"algol\",\n \"testnet\": false\n};\n\nvar c2100 = {\n \"chain\": \"ECO\",\n \"chainId\": 2100,\n \"explorers\": [{\n \"name\": \"Ecoball Explorer\",\n \"url\": \"https://scan.ecoball.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ecoball.org\",\n \"name\": \"Ecoball Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ecoball Coin\",\n \"symbol\": \"ECO\",\n \"decimals\": 18\n },\n \"networkId\": 2100,\n \"rpc\": [\"https://ecoball.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.ecoball.org/ecoball/\"],\n \"shortName\": \"eco\",\n \"slug\": \"ecoball\",\n \"testnet\": false\n};\n\nvar c2101 = {\n \"chain\": \"ECO\",\n \"chainId\": 2101,\n \"explorers\": [{\n \"name\": \"Ecoball Testnet Explorer\",\n \"url\": \"https://espuma-scan.ecoball.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ecoball.org\",\n \"name\": \"Ecoball Testnet Espuma\",\n \"nativeCurrency\": {\n \"name\": \"Espuma Coin\",\n \"symbol\": \"ECO\",\n \"decimals\": 18\n },\n \"networkId\": 2101,\n \"rpc\": [\"https://ecoball-testnet-espuma.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.ecoball.org/espuma/\"],\n \"shortName\": \"esp\",\n \"slug\": \"ecoball-testnet-espuma\",\n \"testnet\": true\n};\n\nvar c2109 = {\n \"chain\": \"EXN\",\n \"chainId\": 2109,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.exosama.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaQxfwpXYTomUd24PMx5tKjosupXcm99z1jL1XLq9LWBS\",\n \"width\": 468,\n \"height\": 468,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://moonsama.com\",\n \"name\": \"Exosama Network\",\n \"nativeCurrency\": {\n \"name\": \"Sama Token\",\n \"symbol\": \"SAMA\",\n \"decimals\": 18\n },\n \"networkId\": 2109,\n \"rpc\": [\"https://exosama-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2109.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.exosama.com\", \"wss://rpc.exosama.com\"],\n \"shortName\": \"exn\",\n \"slip44\": 2109,\n \"slug\": \"exosama-network\",\n \"testnet\": false\n};\n\nvar c2121 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 2121,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"M TEST 1103-2\",\n \"nativeCurrency\": {\n \"name\": \"M TEST 1103-2 Token\",\n \"symbol\": \"RJI\",\n \"decimals\": 18\n },\n \"networkId\": 2121,\n \"redFlags\": [],\n \"rpc\": [\"https://m-test-1103-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2121.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/cb82eb40-2d0d-4188-905b-d50c4b09b40b\"],\n \"shortName\": \"M TEST 1103-2\",\n \"slug\": \"m-test-1103-2\",\n \"testnet\": true\n};\n\nvar c2122 = {\n \"chain\": \"METAD\",\n \"chainId\": 2122,\n \"explorers\": [{\n \"name\": \"Metad Scan\",\n \"url\": \"https://scan.metaplayer.one\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZyxS9BfRGYWWDtvrV6qtthCYV4TwdjLoH2sF6MkiTYFf\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZyxS9BfRGYWWDtvrV6qtthCYV4TwdjLoH2sF6MkiTYFf\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.metaplayer.one/\",\n \"name\": \"Metaplayerone Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"METAD\",\n \"symbol\": \"METAD\",\n \"decimals\": 18\n },\n \"networkId\": 2122,\n \"rpc\": [\"https://metaplayerone.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2122.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.metaplayer.one/\"],\n \"shortName\": \"Metad\",\n \"slug\": \"metaplayerone\",\n \"testnet\": false\n};\n\nvar c2124 = {\n \"chain\": \"MP1 Dubai-Testnet\",\n \"chainId\": 2124,\n \"explorers\": [{\n \"name\": \"MP1Scan\",\n \"url\": \"https://dubai.mp1scan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.metaplayer.one/\",\n \"name\": \"Metaplayerone Dubai Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Metaunit\",\n \"symbol\": \"MEU\",\n \"decimals\": 18\n },\n \"networkId\": 2124,\n \"rpc\": [\"https://metaplayerone-dubai-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2124.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-dubai.mp1network.com/\"],\n \"shortName\": \"MEU\",\n \"slug\": \"metaplayerone-dubai-testnet\",\n \"testnet\": true\n};\n\nvar c2137 = {\n \"chain\": \"BIGSB\",\n \"chainId\": 2137,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://bigshortbets.com/\",\n \"name\": \"BigShortBets\",\n \"nativeCurrency\": {\n \"name\": \"USD Coin\",\n \"symbol\": \"USDC\",\n \"decimals\": 18\n },\n \"networkId\": 2137,\n \"rpc\": [\"https://bigshortbets.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2137.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://market.bigsb.io\", \"wss://market.bigsb.io\"],\n \"shortName\": \"bigsb\",\n \"slug\": \"bigshortbets\",\n \"testnet\": false\n};\n\nvar c2138 = {\n \"chain\": \"dfiometatest\",\n \"chainId\": 2138,\n \"ens\": {\n \"registry\": \"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85\"\n },\n \"explorers\": [{\n \"name\": \"Quorum Explorer\",\n \"url\": \"https://public-2138.defi-oracle.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE\",\n \"width\": 1000,\n \"height\": 1043,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://defi-oracle.io/\",\n \"name\": \"Defi Oracle Meta Testnet\",\n \"nativeCurrency\": {\n \"name\": \"testEther\",\n \"symbol\": \"tETH\",\n \"decimals\": 18\n },\n \"networkId\": 21,\n \"rpc\": [\"https://defi-oracle-meta-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2138.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.public-2138.defi-oracle.io\", \"wss://rpc.public-2138.defi-oracle.io\"],\n \"shortName\": \"dfio-meta-test\",\n \"slip44\": 60,\n \"slug\": \"defi-oracle-meta-testnet\",\n \"testnet\": true\n};\n\nvar c2151 = {\n \"chain\": \"ETH\",\n \"chainId\": 2151,\n \"explorers\": [{\n \"name\": \"BOASCAN\",\n \"url\": \"https://boascan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW3CT4SHmso5dRJdsjR8GL1qmt79HkdAebCn2uNaWXFYh\",\n \"width\": 256,\n \"height\": 257,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW3CT4SHmso5dRJdsjR8GL1qmt79HkdAebCn2uNaWXFYh\",\n \"width\": 256,\n \"height\": 257,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.bosagora.org\",\n \"name\": \"BOSagora Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BOSAGORA\",\n \"symbol\": \"BOA\",\n \"decimals\": 18\n },\n \"networkId\": 2151,\n \"rpc\": [\"https://bosagora.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2151.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.bosagora.org\", \"https://rpc.bosagora.org\"],\n \"shortName\": \"boa\",\n \"slug\": \"bosagora\",\n \"testnet\": false\n};\n\nvar c2152 = {\n \"chain\": \"Findora\",\n \"chainId\": 2152,\n \"explorers\": [{\n \"name\": \"findorascan\",\n \"url\": \"https://evm.findorascan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://findora.org/\",\n \"name\": \"Findora Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"FRA\",\n \"symbol\": \"FRA\",\n \"decimals\": 18\n },\n \"networkId\": 2152,\n \"rpc\": [\"https://findora.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2152.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.findora.org\"],\n \"shortName\": \"fra\",\n \"slug\": \"findora\",\n \"testnet\": false\n};\n\nvar c2153 = {\n \"chain\": \"Testnet-anvil\",\n \"chainId\": 2153,\n \"explorers\": [{\n \"name\": \"findorascan\",\n \"url\": \"https://testnet-anvil.evm.findorascan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://findora.org/\",\n \"name\": \"Findora Testnet\",\n \"nativeCurrency\": {\n \"name\": \"FRA\",\n \"symbol\": \"FRA\",\n \"decimals\": 18\n },\n \"networkId\": 2153,\n \"rpc\": [\"https://findora-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2153.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://prod-testnet.prod.findora.org:8545/\"],\n \"shortName\": \"findora-testnet\",\n \"slug\": \"findora-testnet\",\n \"testnet\": true\n};\n\nvar c2154 = {\n \"chain\": \"Testnet-forge\",\n \"chainId\": 2154,\n \"explorers\": [{\n \"name\": \"findorascan\",\n \"url\": \"https://testnet-forge.evm.findorascan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://findora.org/\",\n \"name\": \"Findora Forge\",\n \"nativeCurrency\": {\n \"name\": \"FRA\",\n \"symbol\": \"FRA\",\n \"decimals\": 18\n },\n \"networkId\": 2154,\n \"rpc\": [\"https://findora-forge.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2154.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://prod-forge.prod.findora.org:8545/\"],\n \"shortName\": \"findora-forge\",\n \"slug\": \"findora-forge\",\n \"testnet\": true\n};\n\nvar c2199 = {\n \"chain\": \"MSN\",\n \"chainId\": 2199,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.moonsama.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://multiverse.moonsama.com/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmaQxfwpXYTomUd24PMx5tKjosupXcm99z1jL1XLq9LWBS\",\n \"width\": 468,\n \"height\": 468,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://moonsama.com\",\n \"name\": \"Moonsama Network\",\n \"nativeCurrency\": {\n \"name\": \"Sama Token\",\n \"symbol\": \"SAMA\",\n \"decimals\": 18\n },\n \"networkId\": 2199,\n \"rpc\": [\"https://moonsama-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2199.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.moonsama.com\", \"wss://rpc.moonsama.com/ws\"],\n \"shortName\": \"msn\",\n \"slip44\": 2199,\n \"slug\": \"moonsama-network\",\n \"testnet\": false\n};\n\nvar c2202 = {\n \"chain\": \"ABN\",\n \"chainId\": 2202,\n \"explorers\": [{\n \"name\": \"Antofy Mainnet\",\n \"url\": \"https://antofyscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.antofy.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmdTfku81ohnG9ECU1Xswmeumt678cBhwHWuFYZ7i1Qsto\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://antofy.io\",\n \"name\": \"Antofy Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Antofy\",\n \"symbol\": \"ABN\",\n \"decimals\": 18\n },\n \"networkId\": 2202,\n \"rpc\": [\"https://antofy.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2202.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.antofy.io\"],\n \"shortName\": \"ABNm\",\n \"slug\": \"antofy\",\n \"testnet\": false\n};\n\nvar c2203 = {\n \"chain\": \"Bitcoin EVM\",\n \"chainId\": 2203,\n \"explorers\": [{\n \"name\": \"Explorer\",\n \"url\": \"https://explorer.bitcoinevm.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreic4aq265oaf6yze7ba5okefqh6vnqudyrz6ovukvbnrlhet36itle\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreic4aq265oaf6yze7ba5okefqh6vnqudyrz6ovukvbnrlhet36itle\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitcoinevm.com\",\n \"name\": \"Bitcoin EVM\",\n \"nativeCurrency\": {\n \"name\": \"Bitcoin\",\n \"symbol\": \"BTC\",\n \"decimals\": 18\n },\n \"networkId\": 2203,\n \"rpc\": [\"https://bitcoin-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2203.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.bitcoinevm.com\"],\n \"shortName\": \"BTC\",\n \"slug\": \"bitcoin-evm\",\n \"testnet\": false\n};\n\nvar c2213 = {\n \"chain\": \"EVA\",\n \"chainId\": 2213,\n \"explorers\": [{\n \"name\": \"Evanesco Explorer\",\n \"url\": \"https://explorer.evanesco.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZbmGYdfbMRrWJore3c7hyD6q7B5pXHJqTSNjbZZUK6V8\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://evanesco.org/\",\n \"name\": \"Evanesco Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EVA\",\n \"symbol\": \"EVA\",\n \"decimals\": 18\n },\n \"networkId\": 2213,\n \"rpc\": [\"https://evanesco.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2213.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seed4.evanesco.org:8546\"],\n \"shortName\": \"evanesco\",\n \"slug\": \"evanesco\",\n \"testnet\": false\n};\n\nvar c2221 = {\n \"chain\": \"KAVA\",\n \"chainId\": 2221,\n \"explorers\": [{\n \"name\": \"Kava Testnet Explorer\",\n \"url\": \"http://testnet.kavascan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdpRTk6oL1HRW9xC6cAc4Rnf9gs6zgdAcr4Z3HcLztusm\",\n \"width\": 1186,\n \"height\": 360,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://faucet.kava.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmdpRTk6oL1HRW9xC6cAc4Rnf9gs6zgdAcr4Z3HcLztusm\",\n \"width\": 1186,\n \"height\": 360,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.kava.io\",\n \"name\": \"Kava Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TKava\",\n \"symbol\": \"TKAVA\",\n \"decimals\": 18\n },\n \"networkId\": 2221,\n \"rpc\": [\"https://kava-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2221.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.testnet.kava.io\", \"wss://wevm.testnet.kava.io\"],\n \"shortName\": \"tkava\",\n \"slug\": \"kava-testnet\",\n \"testnet\": true\n};\n\nvar c2222 = {\n \"chain\": \"KAVA\",\n \"chainId\": 2222,\n \"explorers\": [{\n \"name\": \"Kava EVM Explorer\",\n \"url\": \"https://kavascan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdpRTk6oL1HRW9xC6cAc4Rnf9gs6zgdAcr4Z3HcLztusm\",\n \"width\": 1186,\n \"height\": 360,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdpRTk6oL1HRW9xC6cAc4Rnf9gs6zgdAcr4Z3HcLztusm\",\n \"width\": 1186,\n \"height\": 360,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.kava.io\",\n \"name\": \"Kava\",\n \"nativeCurrency\": {\n \"name\": \"Kava\",\n \"symbol\": \"KAVA\",\n \"decimals\": 18\n },\n \"networkId\": 2222,\n \"rpc\": [\"https://kava.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2222.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.kava.io\", \"https://kava-rpc.gateway.pokt.network\", \"wss://wevm.kava.io\", \"https://kava-evm.publicnode.com\", \"wss://kava-evm.publicnode.com\"],\n \"shortName\": \"kava\",\n \"slug\": \"kava\",\n \"testnet\": false\n};\n\nvar c2223 = {\n \"chain\": \"VChain\",\n \"chainId\": 2223,\n \"explorers\": [{\n \"name\": \"VChain Scan\",\n \"url\": \"https://scan.vcex.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bo.vcex.xyz/\",\n \"name\": \"VChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"VNDT\",\n \"symbol\": \"VNDT\",\n \"decimals\": 18\n },\n \"networkId\": 2223,\n \"rpc\": [\"https://vchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2223.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bc.vcex.xyz\"],\n \"shortName\": \"VChain\",\n \"slug\": \"vchain\",\n \"testnet\": false\n};\n\nvar c2241 = {\n \"chain\": \"Krest\",\n \"chainId\": 2241,\n \"explorers\": [{\n \"name\": \"Polkadot.js\",\n \"url\": \"https://polkadot.js.org/apps/?rpc=wss://wss-krest.peaq.network#/explorer\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Subscan\",\n \"url\": \"https://krest.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreid732273ib5at7krjdl2t7lteljlepwd3tvifqge7mu7g6naxavhe\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.peaq.network\",\n \"name\": \"Krest Network\",\n \"nativeCurrency\": {\n \"name\": \"Krest\",\n \"symbol\": \"KRST\",\n \"decimals\": 18\n },\n \"networkId\": 2241,\n \"rpc\": [\"https://krest-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2241.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://erpc-krest.peaq.network\", \"https://krest.unitedbloc.com\"],\n \"shortName\": \"KRST\",\n \"slug\": \"krest-network\",\n \"testnet\": false\n};\n\nvar c2300 = {\n \"chain\": \"BOMB\",\n \"chainId\": 2300,\n \"explorers\": [{\n \"name\": \"bombscan\",\n \"url\": \"https://bombscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmc44uSjfdNHdcxPTgZAL8eZ8TLe4UmSHibcvKQFyGJxTB\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc44uSjfdNHdcxPTgZAL8eZ8TLe4UmSHibcvKQFyGJxTB\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bombchain.com\",\n \"name\": \"BOMB Chain\",\n \"nativeCurrency\": {\n \"name\": \"BOMB Token\",\n \"symbol\": \"BOMB\",\n \"decimals\": 18\n },\n \"networkId\": 2300,\n \"rpc\": [\"https://bomb-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2300.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.bombchain.com\"],\n \"shortName\": \"bomb\",\n \"slug\": \"bomb-chain\",\n \"testnet\": false\n};\n\nvar c2306 = {\n \"chain\": \"ebro\",\n \"chainId\": 2306,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.ebrochain.com\",\n \"name\": \"Ebro Network\",\n \"nativeCurrency\": {\n \"name\": \"Ebro\",\n \"symbol\": \"ebro\",\n \"decimals\": 18\n },\n \"networkId\": 2306,\n \"rpc\": [\"https://ebro-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2306.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://greendinoswap.com\"],\n \"shortName\": \"ebro\",\n \"slug\": \"ebro-network\",\n \"testnet\": false\n};\n\nvar c2309 = {\n \"chain\": \"Arevia\",\n \"chainId\": 2309,\n \"explorers\": [],\n \"faucets\": [],\n \"name\": \"Arevia\",\n \"nativeCurrency\": {\n \"name\": \"Arev\",\n \"symbol\": \"ARÉV\",\n \"decimals\": 18\n },\n \"networkId\": 2309,\n \"rpc\": [],\n \"shortName\": \"arevia\",\n \"slug\": \"arevia\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c2323 = {\n \"chain\": \"SOMA\",\n \"chainId\": 2323,\n \"explorers\": [{\n \"name\": \"SOMA Testnet Explorer\",\n \"url\": \"https://testnet.somascan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmadSU2tcyvuzssDYGJ4rVLag43QLnKwcBerZR2zKLVU2N\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.somanetwork.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmadSU2tcyvuzssDYGJ4rVLag43QLnKwcBerZR2zKLVU2N\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://somanetwork.io\",\n \"name\": \"SOMA Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SMA\",\n \"symbol\": \"tSMA\",\n \"decimals\": 18\n },\n \"networkId\": 2323,\n \"rpc\": [\"https://soma-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2323.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data-testnet-v1.somanetwork.io/\", \"https://testnet-au-server-2.somanetwork.io\", \"https://testnet-au-server-1.somanetwork.io\", \"https://testnet-sg-server-1.somanetwork.io\", \"https://testnet-sg-server-2.somanetwork.io\"],\n \"shortName\": \"sma\",\n \"slug\": \"soma-network-testnet\",\n \"testnet\": true\n};\n\nvar c2330 = {\n \"chain\": \"mainnet\",\n \"chainId\": 2330,\n \"explorers\": [{\n \"name\": \"expedition\",\n \"url\": \"http://expedition.altcoinchain.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmYwHmGC9CRVcKo1LSesqxU31SDj9vk2iQxcFjQArzhix4\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYwHmGC9CRVcKo1LSesqxU31SDj9vk2iQxcFjQArzhix4\",\n \"width\": 720,\n \"height\": 720,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://altcoinchain.org\",\n \"name\": \"Altcoinchain\",\n \"nativeCurrency\": {\n \"name\": \"Altcoin\",\n \"symbol\": \"ALT\",\n \"decimals\": 18\n },\n \"networkId\": 2330,\n \"rpc\": [\"https://altcoinchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2330.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc0.altcoinchain.org/rpc\"],\n \"shortName\": \"alt\",\n \"slug\": \"altcoinchain\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c2332 = {\n \"chain\": \"SOMA\",\n \"chainId\": 2332,\n \"explorers\": [{\n \"name\": \"SOMA Explorer Mainnet\",\n \"url\": \"https://somascan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmadSU2tcyvuzssDYGJ4rVLag43QLnKwcBerZR2zKLVU2N\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://airdrop.somanetwork.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmadSU2tcyvuzssDYGJ4rVLag43QLnKwcBerZR2zKLVU2N\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://somanetwork.io\",\n \"name\": \"SOMA Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Soma Native Token\",\n \"symbol\": \"SMA\",\n \"decimals\": 18\n },\n \"networkId\": 2332,\n \"rpc\": [\"https://soma-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2332.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data-mainnet-v1.somanetwork.io/\", \"https://id-mainnet.somanetwork.io\", \"https://hk-mainnet.somanetwork.io\", \"https://sg-mainnet.somanetwork.io\"],\n \"shortName\": \"smam\",\n \"slug\": \"soma-network\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c2357 = {\n \"chain\": \"ETH\",\n \"chainId\": 2357,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.sepolia-deprecated.kroma.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho\",\n \"width\": 320,\n \"height\": 320,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho\",\n \"width\": 320,\n \"height\": 320,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://kroma.network\",\n \"name\": \"(deprecated) Kroma Sepolia\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 2357,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://kroma.network/bridge\"\n }]\n },\n \"rpc\": [\"https://deprecated-kroma-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2357.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.sepolia-deprecated.kroma.network\"],\n \"shortName\": \"deprecated-kroma-sepolia\",\n \"slug\": \"deprecated-kroma-sepolia\",\n \"status\": \"deprecated\",\n \"testnet\": true,\n \"title\": \"(deprecated) Kroma Testnet Sepolia\"\n};\n\nvar c2358 = {\n \"chain\": \"ETH\",\n \"chainId\": 2358,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.sepolia.kroma.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho\",\n \"width\": 320,\n \"height\": 320,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho\",\n \"width\": 320,\n \"height\": 320,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://kroma.network\",\n \"name\": \"Kroma Sepolia\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 2358,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://kroma.network/bridge\"\n }]\n },\n \"rpc\": [\"https://kroma-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2358.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.sepolia.kroma.network\"],\n \"shortName\": \"kroma-sepolia\",\n \"slug\": \"kroma-sepolia\",\n \"testnet\": true,\n \"title\": \"Kroma Testnet Sepolia\"\n};\n\nvar c2399 = {\n \"chain\": \"BOMB\",\n \"chainId\": 2399,\n \"explorers\": [{\n \"name\": \"bombscan-testnet\",\n \"url\": \"https://explorer.bombchain-testnet.ankr.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmc44uSjfdNHdcxPTgZAL8eZ8TLe4UmSHibcvKQFyGJxTB\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.bombchain-testnet.ankr.com/\"],\n \"icon\": {\n \"url\": \"ipfs://Qmc44uSjfdNHdcxPTgZAL8eZ8TLe4UmSHibcvKQFyGJxTB\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bombmoney.com\",\n \"name\": \"BOMB Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BOMB Token\",\n \"symbol\": \"tBOMB\",\n \"decimals\": 18\n },\n \"networkId\": 2399,\n \"rpc\": [\"https://bomb-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2399.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bombchain-testnet.ankr.com/bas_full_rpc_1\"],\n \"shortName\": \"bombt\",\n \"slug\": \"bomb-chain-testnet\",\n \"testnet\": true\n};\n\nvar c2400 = {\n \"chain\": \"TCG Verse\",\n \"chainId\": 2400,\n \"explorers\": [{\n \"name\": \"TCG Verse Explorer\",\n \"url\": \"https://explorer.tcgverse.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidg4wpewve5mdxrofneqblydkrjl3oevtgpdf3fk3z3vjqam6ocoe\",\n \"width\": 350,\n \"height\": 350,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://tcgverse.xyz/\",\n \"name\": \"TCG Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 2400,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://tcg-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2400.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tcgverse.xyz\"],\n \"shortName\": \"TCGV\",\n \"slug\": \"tcg-verse\",\n \"testnet\": false\n};\n\nvar c2415 = {\n \"chain\": \"XODEX\",\n \"chainId\": 2415,\n \"explorers\": [{\n \"name\": \"XODEX Explorer\",\n \"url\": \"https://explorer.xo-dex.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXt49jPfHUmDF4n8TF7ks6txiPztx6qUHanWmHnCoEAhW\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXt49jPfHUmDF4n8TF7ks6txiPztx6qUHanWmHnCoEAhW\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xo-dex.com\",\n \"name\": \"XODEX\",\n \"nativeCurrency\": {\n \"name\": \"XODEX Native Token\",\n \"symbol\": \"XODEX\",\n \"decimals\": 18\n },\n \"networkId\": 10,\n \"rpc\": [\"https://xodex.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2415.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.xo-dex.com/rpc\", \"https://xo-dex.io\"],\n \"shortName\": \"xodex\",\n \"slug\": \"xodex\",\n \"testnet\": false\n};\n\nvar c2484 = {\n \"chain\": \"u2u\",\n \"chainId\": 2484,\n \"explorers\": [{\n \"name\": \"U2U Explorer\",\n \"url\": \"https://testnet.u2uscan.xyz\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmcW64RgqQVHnNbVFyfaMNKt7dJvFqEbfEHZmeyeK8dpEa\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.uniultra.xyz\"],\n \"icon\": {\n \"url\": \"ipfs://QmcW64RgqQVHnNbVFyfaMNKt7dJvFqEbfEHZmeyeK8dpEa\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://uniultra.xyz\",\n \"name\": \"Unicorn Ultra Nebulas Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Unicorn Ultra Nebulas Testnet\",\n \"symbol\": \"U2U\",\n \"decimals\": 18\n },\n \"networkId\": 2484,\n \"rpc\": [\"https://unicorn-ultra-nebulas-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2484.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-nebulas-testnet.uniultra.xyz\"],\n \"shortName\": \"u2u_nebulas\",\n \"slug\": \"unicorn-ultra-nebulas-testnet\",\n \"testnet\": true\n};\n\nvar c2522 = {\n \"chain\": \"FRAX\",\n \"chainId\": 2522,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQLJk5G7zF8ZDxSxkRcpHqEqcifrJEhGmEKC6zwyPXWAw/fraxchain.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"PNG\"\n },\n \"infoURL\": \"https://testnet.frax.com\",\n \"name\": \"Fraxchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Frax Ether\",\n \"symbol\": \"frxETH\",\n \"decimals\": 18\n },\n \"networkId\": 2522,\n \"redFlags\": [],\n \"rpc\": [\"https://fraxchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2522.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.frax.com\"],\n \"shortName\": \"fraxchain-testnet\",\n \"slug\": \"fraxchain-testnet\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c2559 = {\n \"chain\": \"Kortho Chain\",\n \"chainId\": 2559,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.kortho.io/\",\n \"name\": \"Kortho Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"KorthoChain\",\n \"symbol\": \"KTO\",\n \"decimals\": 11\n },\n \"networkId\": 2559,\n \"rpc\": [\"https://kortho.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2559.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.kortho-chain.com\"],\n \"shortName\": \"ktoc\",\n \"slug\": \"kortho\",\n \"testnet\": false\n};\n\nvar c2569 = {\n \"chain\": \"TPC\",\n \"chainId\": 2569,\n \"explorers\": [{\n \"name\": \"tpcscan\",\n \"url\": \"https://tpcscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmQyTyJUnhD1dca35Vyj96pm3v3Xyw8xbG9m8HXHw3k2zR\",\n \"width\": 578,\n \"height\": 701,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQyTyJUnhD1dca35Vyj96pm3v3Xyw8xbG9m8HXHw3k2zR\",\n \"width\": 578,\n \"height\": 701,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://techpay.io/\",\n \"name\": \"TechPay Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TechPay\",\n \"symbol\": \"TPC\",\n \"decimals\": 18\n },\n \"networkId\": 2569,\n \"rpc\": [\"https://techpay.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2569.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.techpay.io/\"],\n \"shortName\": \"tpc\",\n \"slug\": \"techpay\",\n \"testnet\": false\n};\n\nvar c2606 = {\n \"chain\": \"CRC\",\n \"chainId\": 2606,\n \"explorers\": [{\n \"name\": \"Lite Explorer\",\n \"url\": \"https://ethereum-pocr.github.io/explorer/pocrnet\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRLwpq47tyEd3rfK4tKRhbTvyb3fc7PCutExnL1XAb37A\",\n \"width\": 334,\n \"height\": 360,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRLwpq47tyEd3rfK4tKRhbTvyb3fc7PCutExnL1XAb37A\",\n \"width\": 334,\n \"height\": 360,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/ethereum-pocr/pocrnet\",\n \"name\": \"PoCRNet\",\n \"nativeCurrency\": {\n \"name\": \"Climate awaReness Coin\",\n \"symbol\": \"CRC\",\n \"decimals\": 18\n },\n \"networkId\": 2606,\n \"rpc\": [\"https://pocrnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2606.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pocrnet.westeurope.cloudapp.azure.com/http\", \"wss://pocrnet.westeurope.cloudapp.azure.com/ws\"],\n \"shortName\": \"pocrnet\",\n \"slug\": \"pocrnet\",\n \"status\": \"active\",\n \"testnet\": false,\n \"title\": \"Proof of Climate awaReness mainnet\"\n};\n\nvar c2611 = {\n \"chain\": \"REDLC\",\n \"chainId\": 2611,\n \"explorers\": [{\n \"name\": \"REDLC Explorer\",\n \"url\": \"https://redlightscan.finance\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://redlight.finance/\",\n \"name\": \"Redlight Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Redlight Coin\",\n \"symbol\": \"REDLC\",\n \"decimals\": 18\n },\n \"networkId\": 2611,\n \"rpc\": [\"https://redlight-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2611.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed2.redlightscan.finance\"],\n \"shortName\": \"REDLC\",\n \"slug\": \"redlight-chain\",\n \"testnet\": false\n};\n\nvar c2612 = {\n \"chain\": \"EZC\",\n \"chainId\": 2612,\n \"explorers\": [{\n \"name\": \"ezchain\",\n \"url\": \"https://cchain-explorer.ezchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPKJbYCFjGmY9X2cA4b9YQjWYHQncmKnFtKyQh9rHkFTb\",\n \"width\": 146,\n \"height\": 48,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ezchain.com\",\n \"name\": \"EZChain C-Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EZChain\",\n \"symbol\": \"EZC\",\n \"decimals\": 18\n },\n \"networkId\": 2612,\n \"rpc\": [\"https://ezchain-c-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2612.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.ezchain.com/ext/bc/C/rpc\"],\n \"shortName\": \"EZChain\",\n \"slug\": \"ezchain-c-chain\",\n \"testnet\": false\n};\n\nvar c2613 = {\n \"chain\": \"EZC\",\n \"chainId\": 2613,\n \"explorers\": [{\n \"name\": \"ezchain\",\n \"url\": \"https://testnet-cchain-explorer.ezchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet-faucet.ezchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmPKJbYCFjGmY9X2cA4b9YQjWYHQncmKnFtKyQh9rHkFTb\",\n \"width\": 146,\n \"height\": 48,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ezchain.com\",\n \"name\": \"EZChain C-Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"EZChain\",\n \"symbol\": \"EZC\",\n \"decimals\": 18\n },\n \"networkId\": 2613,\n \"rpc\": [\"https://ezchain-c-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2613.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-api.ezchain.com/ext/bc/C/rpc\"],\n \"shortName\": \"Fuji-EZChain\",\n \"slug\": \"ezchain-c-chain-testnet\",\n \"testnet\": true\n};\n\nvar c2625 = {\n \"chain\": \"WBT\",\n \"chainId\": 2625,\n \"explorers\": [{\n \"name\": \"wb-explorer-testnet\",\n \"url\": \"https://explorer.whitebit.network/testnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://explorer.whitebit.network/testnet/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmQqAAn2F98TH5ouRyvReKxQdaGKjE7WJQPEPW6mFFVXUT\",\n \"width\": 32,\n \"height\": 32,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://whitebit.com/wbt\",\n \"name\": \"WhiteBIT Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"WhiteBIT Coin\",\n \"symbol\": \"WBT\",\n \"decimals\": 18\n },\n \"networkId\": 2625,\n \"rpc\": [\"https://whitebit-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2625.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.whitebit.network\"],\n \"shortName\": \"twbt\",\n \"slug\": \"whitebit-network-testnet\",\n \"testnet\": true\n};\n\nvar c2710 = {\n \"chain\": \"ETH\",\n \"chainId\": 2710,\n \"explorers\": [{\n \"name\": \"Morph Testnet Explorer\",\n \"url\": \"https://explorer-testnet.morphl2.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://morphl2.io\",\n \"name\": \"Morph Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 2710,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge-testnet.morphl2.io\"\n }]\n },\n \"rpc\": [\"https://morph-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2710.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.morphl2.io\"],\n \"shortName\": \"tmorph\",\n \"slug\": \"morph-testnet\",\n \"testnet\": true\n};\n\nvar c2718 = {\n \"chain\": \"K-LAOS\",\n \"chainId\": 2718,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.klaos.laosfoundation.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmW26eoxJeyUfikZ4DUT1Gfk78sBkvydEo8QzHa1BXjUUL\",\n \"width\": 580,\n \"height\": 580,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW26eoxJeyUfikZ4DUT1Gfk78sBkvydEo8QzHa1BXjUUL\",\n \"width\": 580,\n \"height\": 580,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.laosfoundation.io/\",\n \"name\": \"K-LAOS\",\n \"nativeCurrency\": {\n \"name\": \"KLAOS\",\n \"symbol\": \"KLAOS\",\n \"decimals\": 18\n },\n \"networkId\": 2718,\n \"rpc\": [\"https://k-laos.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2718.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.klaos.laosfoundation.io\", \"wss://rpc.klaos.laosfoundation.io\"],\n \"shortName\": \"k-laos\",\n \"slug\": \"k-laos\",\n \"testnet\": false,\n \"title\": \"K-LAOS: LAOS on Kusama\"\n};\n\nvar c2888 = {\n \"chain\": \"ETH\",\n \"chainId\": 2888,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://testnet.bobascan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba Network Goerli Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 2888,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://gateway.boba.network\"\n }]\n },\n \"rpc\": [\"https://boba-network-goerli-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli.boba.network/\", \"wss://wss.goerli.boba.network/\"],\n \"shortName\": \"BobaGoerli\",\n \"slug\": \"boba-network-goerli-testnet\",\n \"testnet\": true\n};\n\nvar c2999 = {\n \"chain\": \"BTY\",\n \"chainId\": 2999,\n \"explorers\": [{\n \"name\": \"BitYuan Block Chain Explorer\",\n \"url\": \"https://mainnet.bityuan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUmJVof2m5e4HUXb3GmijWUFsLUNhrQiwwQG3CqcXEtHt\",\n \"width\": 91,\n \"height\": 24,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bityuan.com\",\n \"name\": \"BitYuan Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BTY\",\n \"symbol\": \"BTY\",\n \"decimals\": 18\n },\n \"networkId\": 2999,\n \"rpc\": [\"https://bityuan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.bityuan.com/eth\"],\n \"shortName\": \"bty\",\n \"slug\": \"bityuan\",\n \"testnet\": false\n};\n\nvar c3000 = {\n \"chain\": \"CENNZnet\",\n \"chainId\": 3000,\n \"explorers\": [],\n \"faucets\": [\"https://app-faucet.centrality.me\"],\n \"icon\": {\n \"url\": \"ipfs://QmWhNm7tTi6SYbiumULDRk956hxgqaZSX77vcxBNn8fvnw\",\n \"width\": 112,\n \"height\": 112,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://cennz.net\",\n \"name\": \"CENNZnet Rata\",\n \"nativeCurrency\": {\n \"name\": \"CPAY\",\n \"symbol\": \"CPAY\",\n \"decimals\": 18\n },\n \"networkId\": 3000,\n \"rpc\": [],\n \"shortName\": \"cennz-r\",\n \"slug\": \"cennznet-rata\",\n \"testnet\": false\n};\n\nvar c3001 = {\n \"chain\": \"CENNZnet\",\n \"chainId\": 3001,\n \"explorers\": [{\n \"name\": \"UNcover\",\n \"url\": \"https://www.uncoverexplorer.com/?network=Nikau\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://app-faucet.centrality.me\"],\n \"icon\": {\n \"url\": \"ipfs://QmWhNm7tTi6SYbiumULDRk956hxgqaZSX77vcxBNn8fvnw\",\n \"width\": 112,\n \"height\": 112,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://cennz.net\",\n \"name\": \"CENNZnet Nikau\",\n \"nativeCurrency\": {\n \"name\": \"CPAY\",\n \"symbol\": \"CPAY\",\n \"decimals\": 18\n },\n \"networkId\": 3001,\n \"rpc\": [\"https://cennznet-nikau.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nikau.centrality.me/public\"],\n \"shortName\": \"cennz-n\",\n \"slug\": \"cennznet-nikau\",\n \"testnet\": false\n};\n\nvar c3003 = {\n \"chain\": \"CAU\",\n \"chainId\": 3003,\n \"explorers\": [{\n \"name\": \"canxium explorer\",\n \"url\": \"https://explorer.canxium.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXHSbtVNCJVfe2CvRH7njdyf2SrX5u5bNTfvhqjLeFN2A\",\n \"width\": 938,\n \"height\": 938,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://canxium.org\",\n \"name\": \"Canxium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Canxium\",\n \"symbol\": \"CAU\",\n \"decimals\": 18\n },\n \"networkId\": 3003,\n \"rpc\": [\"https://canxium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.canxium.org\"],\n \"shortName\": \"cau\",\n \"slug\": \"canxium\",\n \"testnet\": false\n};\n\nvar c3011 = {\n \"chain\": \"3ULL\",\n \"chainId\": 3011,\n \"explorers\": [{\n \"name\": \"PLAYA3ULL GAMES Explorer\",\n \"url\": \"https://3011.routescan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreib62bv2d65d7nidojgpkgatrt7smee2l4ov6i6ozqhpfaqsonxku4\",\n \"width\": 512,\n \"height\": 443,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreib62bv2d65d7nidojgpkgatrt7smee2l4ov6i6ozqhpfaqsonxku4\",\n \"width\": 512,\n \"height\": 443,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://playa3ull.games\",\n \"name\": \"PLAYA3ULL GAMES\",\n \"nativeCurrency\": {\n \"name\": \"3ULL\",\n \"symbol\": \"3ULL\",\n \"decimals\": 18\n },\n \"networkId\": 3011,\n \"rpc\": [\"https://playa3ull-games.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3011.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.mainnet.playa3ull.games\"],\n \"shortName\": \"3ULL\",\n \"slug\": \"playa3ull-games\",\n \"testnet\": false\n};\n\nvar c3031 = {\n \"chain\": \"ORL\",\n \"chainId\": 3031,\n \"explorers\": [{\n \"name\": \"Orlando (ORL) Explorer\",\n \"url\": \"https://orlscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNsuuBBTHErnuFDcdyzaY8CKoVJtobsLJx2WQjaPjcp7g\",\n \"width\": 512,\n \"height\": 528,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNsuuBBTHErnuFDcdyzaY8CKoVJtobsLJx2WQjaPjcp7g\",\n \"width\": 512,\n \"height\": 528,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://orlchain.com\",\n \"name\": \"Orlando Chain\",\n \"nativeCurrency\": {\n \"name\": \"Orlando\",\n \"symbol\": \"ORL\",\n \"decimals\": 18\n },\n \"networkId\": 3031,\n \"rpc\": [\"https://orlando-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3031.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.orlchain.com\"],\n \"shortName\": \"ORL\",\n \"slug\": \"orlando-chain\",\n \"testnet\": true\n};\n\nvar c3068 = {\n \"chain\": \"BFC\",\n \"chainId\": 3068,\n \"explorers\": [{\n \"name\": \"explorer-thebifrost\",\n \"url\": \"https://explorer.mainnet.thebifrost.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYxniqbiFD7nXBNjN8boUhoXYEAW23YquArD2Rnkq8WHS\",\n \"width\": 480,\n \"height\": 480,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thebifrost.io\",\n \"name\": \"Bifrost Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bifrost\",\n \"symbol\": \"BFC\",\n \"decimals\": 18\n },\n \"networkId\": 3068,\n \"rpc\": [\"https://bifrost.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3068.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://public-01.mainnet.thebifrost.io/rpc\", \"https://public-02.mainnet.thebifrost.io/rpc\"],\n \"shortName\": \"bfc\",\n \"slug\": \"bifrost\",\n \"testnet\": false,\n \"title\": \"Bifrost Network Mainnet\"\n};\n\nvar c3100 = {\n \"chain\": \"EVMCC\",\n \"chainId\": 3100,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://immu3.io\",\n \"name\": \"Immu3 EVM\",\n \"nativeCurrency\": {\n \"name\": \"IMMU\",\n \"symbol\": \"IMMU\",\n \"decimals\": 18\n },\n \"networkId\": 3100,\n \"rpc\": [\"https://immu3-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fraa-dancebox-3043-rpc.a.dancebox.tanssi.network\", \"wss://fraa-dancebox-3043-rpc.a.dancebox.tanssi.network\"],\n \"shortName\": \"Immu3\",\n \"slug\": \"immu3-evm\",\n \"testnet\": false\n};\n\nvar c3102 = {\n \"chain\": \"VFIEVMCC\",\n \"chainId\": 3102,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://vulture.finance\",\n \"name\": \"Vulture EVM Beta\",\n \"nativeCurrency\": {\n \"name\": \"VFI\",\n \"symbol\": \"VFI\",\n \"decimals\": 18\n },\n \"networkId\": 3102,\n \"rpc\": [\"https://vulture-evm-beta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3102.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fraa-dancebox-3050-rpc.a.dancebox.tanssi.network\", \"wss://fraa-dancebox-3050-rpc.a.dancebox.tanssi.network\"],\n \"shortName\": \"VFI\",\n \"slug\": \"vulture-evm-beta\",\n \"testnet\": false\n};\n\nvar c3141 = {\n \"chain\": \"FIL\",\n \"chainId\": 3141,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Hyperspace testnet\",\n \"nativeCurrency\": {\n \"name\": \"testnet filecoin\",\n \"symbol\": \"tFIL\",\n \"decimals\": 18\n },\n \"networkId\": 3141,\n \"rpc\": [],\n \"shortName\": \"filecoin-hyperspace\",\n \"slip44\": 1,\n \"slug\": \"filecoin-hyperspace-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c3269 = {\n \"chain\": \"DUBX\",\n \"chainId\": 3269,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://arabianchain.org\",\n \"name\": \"Dubxcoin network\",\n \"nativeCurrency\": {\n \"name\": \"Dubxcoin mainnet\",\n \"symbol\": \"DUBX\",\n \"decimals\": 18\n },\n \"networkId\": 3269,\n \"rpc\": [\"https://dubxcoin-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3269.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpcmain.arabianchain.org\"],\n \"shortName\": \"dubx\",\n \"slug\": \"dubxcoin-network\",\n \"testnet\": false\n};\n\nvar c3270 = {\n \"chain\": \"TESTDUBX\",\n \"chainId\": 3270,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.arabianchain.org/\"],\n \"infoURL\": \"https://arabianchain.org\",\n \"name\": \"Dubxcoin testnet\",\n \"nativeCurrency\": {\n \"name\": \"Dubxcoin testnet\",\n \"symbol\": \"TDUBX\",\n \"decimals\": 18\n },\n \"networkId\": 3270,\n \"rpc\": [\"https://dubxcoin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3270.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpctestnet.arabianchain.org\"],\n \"shortName\": \"testdubx\",\n \"slug\": \"dubxcoin-testnet\",\n \"testnet\": true\n};\n\nvar c3306 = {\n \"chain\": \"Debounce Network\",\n \"chainId\": 3306,\n \"explorers\": [{\n \"name\": \"Debounce Devnet Explorer\",\n \"url\": \"https://explorer.debounce.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeib5q4hez37s7b2fx4hqt2q4ji2tuudxjhfdgnp6q3d5mqm6wsxdfq\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://debounce.network\",\n \"name\": \"Debounce Subnet Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Debounce Network\",\n \"symbol\": \"DB\",\n \"decimals\": 18\n },\n \"networkId\": 3306,\n \"rpc\": [\"https://debounce-subnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3306.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dev-rpc.debounce.network\"],\n \"shortName\": \"debounce-devnet\",\n \"slug\": \"debounce-subnet-testnet\",\n \"testnet\": true\n};\n\nvar c3331 = {\n \"chain\": \"Beach\",\n \"chainId\": 3331,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.zcore.cash\"],\n \"icon\": {\n \"url\": \"ipfs://QmQnXu13ym8W1VA3QxocaNVXGAuEPmamSCkS7bBscVk1f4\",\n \"width\": 1050,\n \"height\": 1050,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://zcore.cash\",\n \"name\": \"ZCore Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ZCore\",\n \"symbol\": \"ZCR\",\n \"decimals\": 18\n },\n \"networkId\": 3331,\n \"rpc\": [\"https://zcore-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3331.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.zcore.cash\"],\n \"shortName\": \"zcrbeach\",\n \"slug\": \"zcore-testnet\",\n \"testnet\": true\n};\n\nvar c3333 = {\n \"chain\": \"Web3Q\",\n \"chainId\": 3333,\n \"explorers\": [{\n \"name\": \"w3q-testnet\",\n \"url\": \"https://explorer.testnet.web3q.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://testnet.web3q.io/home.w3q/\",\n \"name\": \"Web3Q Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Web3Q\",\n \"symbol\": \"W3Q\",\n \"decimals\": 18\n },\n \"networkId\": 3333,\n \"rpc\": [\"https://web3q-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3333.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.web3q.io:8545\"],\n \"shortName\": \"w3q-t\",\n \"slug\": \"web3q-testnet\",\n \"testnet\": true\n};\n\nvar c3334 = {\n \"chain\": \"Web3Q\",\n \"chainId\": 3334,\n \"explorers\": [{\n \"name\": \"w3q-galileo\",\n \"url\": \"https://explorer.galileo.web3q.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://galileo.web3q.io/home.w3q/\",\n \"name\": \"Web3Q Galileo\",\n \"nativeCurrency\": {\n \"name\": \"Web3Q\",\n \"symbol\": \"W3Q\",\n \"decimals\": 18\n },\n \"networkId\": 3334,\n \"rpc\": [\"https://web3q-galileo.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3334.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://galileo.web3q.io:8545\"],\n \"shortName\": \"w3q-g\",\n \"slug\": \"web3q-galileo\",\n \"testnet\": false\n};\n\nvar c3400 = {\n \"chain\": \"PRB\",\n \"chainId\": 3400,\n \"explorers\": [{\n \"name\": \"Paribu Net Explorer\",\n \"url\": \"https://explorer.paribu.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVgc77jYo2zrxQjhYwT4KzvSrSZ1DBJraJVX57xAvP8MD\",\n \"width\": 2362,\n \"height\": 2362,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://net.paribu.com\",\n \"name\": \"Paribu Net Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"PRB\",\n \"symbol\": \"PRB\",\n \"decimals\": 18\n },\n \"networkId\": 3400,\n \"rpc\": [\"https://paribu-net.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3400.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.paribu.network\"],\n \"shortName\": \"prb\",\n \"slug\": \"paribu-net\",\n \"testnet\": false\n};\n\nvar c3434 = {\n \"chain\": \"SCAI\",\n \"chainId\": 3434,\n \"explorers\": [{\n \"name\": \"SecureChain\",\n \"url\": \"https://testnet.securechain.ai\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.securechain.ai\"],\n \"icon\": {\n \"url\": \"ipfs://Qme2Z8VFYjhHGfLQPBnfseNpEdRfmTDy7VXqrdH4AHETJf\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://securechain.ai\",\n \"name\": \"SecureChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SCAI\",\n \"symbol\": \"SCAI\",\n \"decimals\": 18\n },\n \"networkId\": 3434,\n \"rpc\": [\"https://securechain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3434.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.securechain.ai\"],\n \"shortName\": \"SCAIt\",\n \"slug\": \"securechain-testnet\",\n \"testnet\": true\n};\n\nvar c3500 = {\n \"chain\": \"PRB\",\n \"chainId\": 3500,\n \"explorers\": [{\n \"name\": \"Paribu Net Testnet Explorer\",\n \"url\": \"https://testnet.paribuscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.paribuscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmVgc77jYo2zrxQjhYwT4KzvSrSZ1DBJraJVX57xAvP8MD\",\n \"width\": 2362,\n \"height\": 2362,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://net.paribu.com\",\n \"name\": \"Paribu Net Testnet\",\n \"nativeCurrency\": {\n \"name\": \"PRB\",\n \"symbol\": \"PRB\",\n \"decimals\": 18\n },\n \"networkId\": 3500,\n \"rpc\": [\"https://paribu-net-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3500.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.paribuscan.com\"],\n \"shortName\": \"prbtestnet\",\n \"slug\": \"paribu-net-testnet\",\n \"testnet\": true\n};\n\nvar c3501 = {\n \"chain\": \"JFIN\",\n \"chainId\": 3501,\n \"explorers\": [{\n \"name\": \"JFIN Chain Explorer\",\n \"url\": \"https://exp.jfinchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://jfinchain.com\",\n \"name\": \"JFIN Chain\",\n \"nativeCurrency\": {\n \"name\": \"JFIN Coin\",\n \"symbol\": \"jfin\",\n \"decimals\": 18\n },\n \"networkId\": 3501,\n \"rpc\": [\"https://jfin-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3501.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.jfinchain.com\"],\n \"shortName\": \"jfin\",\n \"slug\": \"jfin-chain\",\n \"testnet\": false\n};\n\nvar c3601 = {\n \"chain\": \"PandoProject\",\n \"chainId\": 3601,\n \"explorers\": [{\n \"name\": \"Pando Mainnet Explorer\",\n \"url\": \"https://explorer.pandoproject.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNduBtT5BNGDw7DjRwDvaZBb6gjxf46WD7BYhn4gauGc9\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.pandoproject.org/\",\n \"name\": \"PandoProject Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"pando-token\",\n \"symbol\": \"PTX\",\n \"decimals\": 18\n },\n \"networkId\": 3601,\n \"rpc\": [\"https://pandoproject.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3601.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-rpc-api.pandoproject.org/rpc\"],\n \"shortName\": \"pando-mainnet\",\n \"slug\": \"pandoproject\",\n \"testnet\": false\n};\n\nvar c3602 = {\n \"chain\": \"PandoProject\",\n \"chainId\": 3602,\n \"explorers\": [{\n \"name\": \"Pando Testnet Explorer\",\n \"url\": \"https://testnet.explorer.pandoproject.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNduBtT5BNGDw7DjRwDvaZBb6gjxf46WD7BYhn4gauGc9\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.pandoproject.org/\",\n \"name\": \"PandoProject Testnet\",\n \"nativeCurrency\": {\n \"name\": \"pando-token\",\n \"symbol\": \"PTX\",\n \"decimals\": 18\n },\n \"networkId\": 3602,\n \"rpc\": [\"https://pandoproject-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3602.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.ethrpc.pandoproject.org/rpc\"],\n \"shortName\": \"pando-testnet\",\n \"slug\": \"pandoproject-testnet\",\n \"testnet\": true\n};\n\nvar c3636 = {\n \"chain\": \"BOTANIX\",\n \"chainId\": 3636,\n \"explorers\": [{\n \"name\": \"3xpl\",\n \"url\": \"https://3xpl.com/botanix\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.botanixlabs.dev\"],\n \"icon\": {\n \"url\": \"ipfs://QmVE5s2pXiqdMnAcxhAmWkZYhpFB5CysypeLyPKzT4rGYe\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://botanixlabs.xyz\",\n \"name\": \"Botanix Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Botanix\",\n \"symbol\": \"BTC\",\n \"decimals\": 18\n },\n \"networkId\": 3636,\n \"rpc\": [\"https://botanix-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3636.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.botanixlabs.dev\"],\n \"shortName\": \"BTNX\",\n \"slug\": \"botanix-testnet\",\n \"testnet\": true\n};\n\nvar c3637 = {\n \"chain\": \"BTC\",\n \"chainId\": 3637,\n \"explorers\": [{\n \"name\": \"Botanix\",\n \"url\": \"https://btxtestchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.btxtestchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmVE5s2pXiqdMnAcxhAmWkZYhpFB5CysypeLyPKzT4rGYe\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://btxtestchain.com\",\n \"name\": \"Botanix Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Botanix\",\n \"symbol\": \"BTC\",\n \"decimals\": 18\n },\n \"networkId\": 3637,\n \"rpc\": [\"https://botanix.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3637.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.btxtestchain.com\"],\n \"shortName\": \"BTCm\",\n \"slug\": \"botanix\",\n \"testnet\": true\n};\n\nvar c3639 = {\n \"chain\": \"iChain\",\n \"chainId\": 3639,\n \"explorers\": [{\n \"name\": \"iChainscan\",\n \"url\": \"https://ichainscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://islamicoin.finance\",\n \"name\": \"iChain Network\",\n \"nativeCurrency\": {\n \"name\": \"ISLAMICOIN\",\n \"symbol\": \"ISLAMI\",\n \"decimals\": 18\n },\n \"networkId\": 3639,\n \"rpc\": [\"https://ichain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3639.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ichainscan.com\"],\n \"shortName\": \"ISLAMI\",\n \"slug\": \"ichain-network\",\n \"testnet\": false\n};\n\nvar c3666 = {\n \"chain\": \"Jouleverse\",\n \"chainId\": 3666,\n \"explorers\": [{\n \"name\": \"jscan\",\n \"url\": \"https://jscan.jnsdao.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://jnsdao.com\",\n \"name\": \"Jouleverse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"J\",\n \"symbol\": \"J\",\n \"decimals\": 18\n },\n \"networkId\": 3666,\n \"rpc\": [\"https://jouleverse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.jnsdao.com:8503\"],\n \"shortName\": \"jouleverse\",\n \"slug\": \"jouleverse\",\n \"testnet\": false\n};\n\nvar c3690 = {\n \"chain\": \"BTX\",\n \"chainId\": 3690,\n \"explorers\": [{\n \"name\": \"bittexscan\",\n \"url\": \"https://bittexscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bittexscan.com\",\n \"name\": \"Bittex Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bittex\",\n \"symbol\": \"BTX\",\n \"decimals\": 18\n },\n \"networkId\": 3690,\n \"rpc\": [\"https://bittex.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3690.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.bittexscan.info\", \"https://rpc2.bittexscan.info\"],\n \"shortName\": \"btx\",\n \"slug\": \"bittex\",\n \"testnet\": false\n};\n\nvar c3693 = {\n \"chain\": \"EMPIRE\",\n \"chainId\": 3693,\n \"explorers\": [{\n \"name\": \"Empire Explorer\",\n \"url\": \"https://explorer.empirenetwork.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.empirenetwork.io/\",\n \"name\": \"Empire Network\",\n \"nativeCurrency\": {\n \"name\": \"Empire\",\n \"symbol\": \"EMPIRE\",\n \"decimals\": 18\n },\n \"networkId\": 3693,\n \"rpc\": [\"https://empire-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3693.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.empirenetwork.io\"],\n \"shortName\": \"empire\",\n \"slug\": \"empire-network\",\n \"testnet\": false\n};\n\nvar c3698 = {\n \"chain\": \"SPC\",\n \"chainId\": 3698,\n \"explorers\": [{\n \"name\": \"SenjePowers\",\n \"url\": \"https://testnet.senjepowersscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.senjepowersscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmcpyTj4hUyHJZ2VmSdkXFpPpRcNKRP1VxMs7Cp1anymNy\",\n \"width\": 504,\n \"height\": 495,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://senjepowersscan.com\",\n \"name\": \"SenjePowers Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SenjePowers\",\n \"symbol\": \"SPC\",\n \"decimals\": 18\n },\n \"networkId\": 3698,\n \"rpc\": [\"https://senjepowers-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3698.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.senjepowersscan.com\"],\n \"shortName\": \"SPCt\",\n \"slug\": \"senjepowers-testnet\",\n \"testnet\": true\n};\n\nvar c3699 = {\n \"chain\": \"SPC\",\n \"chainId\": 3699,\n \"explorers\": [{\n \"name\": \"SenjePowers\",\n \"url\": \"https://senjepowersscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.senjepowersscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmcpyTj4hUyHJZ2VmSdkXFpPpRcNKRP1VxMs7Cp1anymNy\",\n \"width\": 504,\n \"height\": 495,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://senjepowersscan.com\",\n \"name\": \"SenjePowers Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SenjePowers\",\n \"symbol\": \"SPC\",\n \"decimals\": 18\n },\n \"networkId\": 3699,\n \"rpc\": [\"https://senjepowers.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3699.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.senjepowersscan.com\"],\n \"shortName\": \"SPCm\",\n \"slug\": \"senjepowers\",\n \"testnet\": false\n};\n\nvar c3701 = {\n \"chain\": \"XPLATest\",\n \"chainId\": 3701,\n \"explorers\": [{\n \"name\": \"XPLA Explorer\",\n \"url\": \"https://explorer.xpla.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.xpla.io\"],\n \"icon\": {\n \"url\": \"ipfs://Qmf4GoxfpeA5VGqu7KP5eyv1WKaCpNDbvMxq1MjQBwFWxq\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xpla.io\",\n \"name\": \"Xpla Testnet\",\n \"nativeCurrency\": {\n \"name\": \"XPLA\",\n \"symbol\": \"XPLA\",\n \"decimals\": 18\n },\n \"networkId\": 3701,\n \"rpc\": [\"https://xpla-testnet-xplatest.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3701.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dimension-rpc.xpla.dev\"],\n \"shortName\": \"xplatest\",\n \"slug\": \"xpla-testnet-xplatest\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c3737 = {\n \"chain\": \"Crossbell\",\n \"chainId\": 3737,\n \"explorers\": [{\n \"name\": \"Crossbell Explorer\",\n \"url\": \"https://scan.crossbell.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.crossbell.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmS8zEetTb6pwdNpVjv5bz55BXiSMGP9BjTJmNcjcUT91t\",\n \"width\": 408,\n \"height\": 408,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://crossbell.io\",\n \"name\": \"Crossbell\",\n \"nativeCurrency\": {\n \"name\": \"Crossbell Token\",\n \"symbol\": \"CSB\",\n \"decimals\": 18\n },\n \"networkId\": 3737,\n \"rpc\": [\"https://crossbell.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3737.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.crossbell.io\"],\n \"shortName\": \"csb\",\n \"slug\": \"crossbell\",\n \"testnet\": false\n};\n\nvar c3797 = {\n \"chain\": \"ALV\",\n \"chainId\": 3797,\n \"explorers\": [{\n \"name\": \"AlveyScan\",\n \"url\": \"https://alveyscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSwczpPLBG6ob1a8WLoujthiCPzwEyJNp7WdKRi52qbWX\",\n \"width\": 310,\n \"height\": 310,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://alveyscan.com/rpc\",\n \"name\": \"AlveyChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"AlveyCoin\",\n \"symbol\": \"ALV\",\n \"decimals\": 18\n },\n \"networkId\": 3797,\n \"rpc\": [\"https://alveychain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3797.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.alveychain.com/rpc\", \"https://rpc2.alvey.io/rpc\"],\n \"shortName\": \"alv\",\n \"slug\": \"alveychain\",\n \"testnet\": false\n};\n\nvar c3885 = {\n \"chain\": \"Firechain\",\n \"chainId\": 3885,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://docs.thefirechain.com/\",\n \"name\": \"Firechain zkEVM Ghostrider\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 3885,\n \"rpc\": [\"https://firechain-zkevm-ghostrider.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3885.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zkevm.ghostrider.thefirechain.com\"],\n \"shortName\": \"firechain-zkEVM-ghostrider\",\n \"slug\": \"firechain-zkevm-ghostrider\",\n \"testnet\": false,\n \"title\": \"Firechain zkEVM Ghostrider\"\n};\n\nvar c3888 = {\n \"chain\": \"KLC\",\n \"chainId\": 3888,\n \"explorers\": [{\n \"name\": \"KalyScan\",\n \"url\": \"https://kalyscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmUaXcPewLuQtY5a7xPTzJyVdjkH487VfV7gSR8UXrbxQ3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kalychain.io\",\n \"name\": \"KalyChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"KalyCoin\",\n \"symbol\": \"KLC\",\n \"decimals\": 18\n },\n \"networkId\": 3888,\n \"rpc\": [\"https://kalychain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.kalychain.io/rpc\"],\n \"shortName\": \"kalymainnet\",\n \"slug\": \"kalychain\",\n \"testnet\": false\n};\n\nvar c3889 = {\n \"chain\": \"KLC\",\n \"chainId\": 3889,\n \"explorers\": [{\n \"name\": \"KalyScan\",\n \"url\": \"https://testnet.kalyscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmUaXcPewLuQtY5a7xPTzJyVdjkH487VfV7gSR8UXrbxQ3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kalychain.io\",\n \"name\": \"KalyChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"KalyCoin\",\n \"symbol\": \"KLC\",\n \"decimals\": 18\n },\n \"networkId\": 3889,\n \"rpc\": [\"https://kalychain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3889.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnetrpc.kalychain.io/rpc\"],\n \"shortName\": \"kalytestnet\",\n \"slug\": \"kalychain-testnet\",\n \"testnet\": true\n};\n\nvar c3912 = {\n \"chain\": \"DRAC\",\n \"chainId\": 3912,\n \"explorers\": [{\n \"name\": \"DRAC_Network Scan\",\n \"url\": \"https://www.dracscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.dracscan.io/faucet\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmXbsQe7QsVFZJZdBmbZVvS6LgX9ZFoaTMBs9MiQXUzJTw\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://drac.io/\",\n \"name\": \"DRAC Network\",\n \"nativeCurrency\": {\n \"name\": \"DRAC\",\n \"symbol\": \"DRAC\",\n \"decimals\": 18\n },\n \"networkId\": 3912,\n \"rpc\": [\"https://drac-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3912.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.dracscan.com/rpc\"],\n \"shortName\": \"drac\",\n \"slug\": \"drac-network\",\n \"testnet\": false\n};\n\nvar c3939 = {\n \"chain\": \"DOS\",\n \"chainId\": 3939,\n \"explorers\": [{\n \"name\": \"DOScan-Test\",\n \"url\": \"https://test.doscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"http://doschain.io/\",\n \"name\": \"DOS Tesnet\",\n \"nativeCurrency\": {\n \"name\": \"DOS\",\n \"symbol\": \"DOS\",\n \"decimals\": 18\n },\n \"networkId\": 3939,\n \"rpc\": [\"https://dos-tesnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3939.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test.doschain.com\"],\n \"shortName\": \"dost\",\n \"slug\": \"dos-tesnet\",\n \"testnet\": true\n};\n\nvar c3966 = {\n \"chain\": \"DYNO\",\n \"chainId\": 3966,\n \"explorers\": [{\n \"name\": \"DYNO Explorer\",\n \"url\": \"https://dynoscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dynoscan.io\"],\n \"infoURL\": \"https://dynoprotocol.com\",\n \"name\": \"DYNO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"DYNO Token\",\n \"symbol\": \"DYNO\",\n \"decimals\": 18\n },\n \"networkId\": 3966,\n \"rpc\": [\"https://dyno.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3966.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.dynoprotocol.com\"],\n \"shortName\": \"dyno\",\n \"slug\": \"dyno\",\n \"testnet\": false\n};\n\nvar c3967 = {\n \"chain\": \"DYNO\",\n \"chainId\": 3967,\n \"explorers\": [{\n \"name\": \"DYNO Explorer\",\n \"url\": \"https://testnet.dynoscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dynoscan.io\"],\n \"infoURL\": \"https://dynoprotocol.com\",\n \"name\": \"DYNO Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DYNO Token\",\n \"symbol\": \"tDYNO\",\n \"decimals\": 18\n },\n \"networkId\": 3967,\n \"rpc\": [\"https://dyno-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3967.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://tapi.dynoprotocol.com\"],\n \"shortName\": \"tdyno\",\n \"slug\": \"dyno-testnet\",\n \"testnet\": true\n};\n\nvar c3999 = {\n \"chain\": \"YCC\",\n \"chainId\": 3999,\n \"explorers\": [{\n \"name\": \"YuanChain Explorer\",\n \"url\": \"https://mainnet.yuan.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdbPhiB5W2gbHZGkYsN7i2VTKKP9casmAN2hRnpDaL9W4\",\n \"width\": 96,\n \"height\": 96,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.yuan.org\",\n \"name\": \"YuanChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"YCC\",\n \"symbol\": \"YCC\",\n \"decimals\": 18\n },\n \"networkId\": 3999,\n \"rpc\": [\"https://yuanchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.yuan.org/eth\"],\n \"shortName\": \"ycc\",\n \"slug\": \"yuanchain\",\n \"testnet\": false\n};\n\nvar c4000 = {\n \"chain\": \"OZONE\",\n \"chainId\": 4000,\n \"explorers\": [{\n \"name\": \"OZONE Scan\",\n \"url\": \"https://ozonescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbM4weV8Bk6c9yNhosYntkVw39SNZtCHYGgWyXTxkevZ8\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ozonechain.io\",\n \"name\": \"Ozone Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OZONE\",\n \"symbol\": \"OZO\",\n \"decimals\": 18\n },\n \"networkId\": 4000,\n \"rpc\": [\"https://ozone-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.ozonechain.io\"],\n \"shortName\": \"ozo\",\n \"slug\": \"ozone-chain\",\n \"testnet\": false\n};\n\nvar c4001 = {\n \"chain\": \"PERIUM\",\n \"chainId\": 4001,\n \"explorers\": [{\n \"name\": \"Peperium Chain Explorer\",\n \"url\": \"https://scan-testnet.peperium.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmag2hr5DQghRzKPN3oUFBkjWzqd5CndQzZeb5LfoiMCXf\",\n \"width\": 160,\n \"height\": 160,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmag2hr5DQghRzKPN3oUFBkjWzqd5CndQzZeb5LfoiMCXf\",\n \"width\": 160,\n \"height\": 160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://peperium.io\",\n \"name\": \"Peperium Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Peperium Chain Testnet\",\n \"symbol\": \"PERIUM\",\n \"decimals\": 18\n },\n \"networkId\": 4001,\n \"rpc\": [\"https://peperium-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.peperium.io\"],\n \"shortName\": \"PERIUM\",\n \"slug\": \"peperium-chain-testnet\",\n \"testnet\": true\n};\n\nvar c4002 = {\n \"chain\": \"FTM\",\n \"chainId\": 4002,\n \"explorers\": [{\n \"name\": \"ftmscan\",\n \"url\": \"https://testnet.ftmscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRqbK449Fo9sJ3xMpkPbg6uV1weQj4yVV1xNMP9cdPmjf\",\n \"width\": 73,\n \"height\": 73,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.fantom.network\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/fantom/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.fantom.foundation/quick-start/short-guide#fantom-testnet\",\n \"name\": \"Fantom Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Fantom\",\n \"symbol\": \"FTM\",\n \"decimals\": 18\n },\n \"networkId\": 4002,\n \"redFlags\": [],\n \"rpc\": [\"https://fantom-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.fantom.network\", \"https://fantom-testnet.publicnode.com\", \"wss://fantom-testnet.publicnode.com\"],\n \"shortName\": \"tftm\",\n \"slug\": \"fantom-testnet\",\n \"testnet\": true\n};\n\nvar c4003 = {\n \"chain\": \"X1\",\n \"chainId\": 4003,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.x1-fastnet.xen.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.xen.network/go-x1/\",\n \"name\": \"X1 Fastnet\",\n \"nativeCurrency\": {\n \"name\": \"XN\",\n \"symbol\": \"XN\",\n \"decimals\": 18\n },\n \"networkId\": 4003,\n \"rpc\": [\"https://x1-fastnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://x1-fastnet.xen.network\"],\n \"shortName\": \"x1-fastnet\",\n \"slug\": \"x1-fastnet\",\n \"testnet\": false\n};\n\nvar c4051 = {\n \"chain\": \"Bobaopera Testnet\",\n \"chainId\": 4051,\n \"explorers\": [{\n \"name\": \"Bobaopera Testnet block explorer\",\n \"url\": \"https://blockexplorer.testnet.bobaopera.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Bobaopera Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 4051,\n \"rpc\": [\"https://bobaopera-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4051.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bobaopera.boba.network\", \"wss://wss.testnet.bobaopera.boba.network\", \"https://replica.testnet.bobaopera.boba.network\", \"wss://replica-wss.testnet.bobaopera.boba.network\"],\n \"shortName\": \"BobaoperaTestnet\",\n \"slug\": \"bobaopera-testnet\",\n \"testnet\": true\n};\n\nvar c4061 = {\n \"chain\": \"Nahmii\",\n \"chainId\": 4061,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nahmii.io\",\n \"name\": \"Nahmii 3 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 4061,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.nahmii.io\"\n }]\n },\n \"rpc\": [],\n \"shortName\": \"Nahmii3Mainnet\",\n \"slug\": \"nahmii-3\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c4062 = {\n \"chain\": \"Nahmii\",\n \"chainId\": 4062,\n \"explorers\": [{\n \"name\": \"Nahmii 3 Testnet Explorer\",\n \"url\": \"https://explorer.testnet.n3.nahmii.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nahmii.io\",\n \"name\": \"Nahmii 3 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 4062,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-3\",\n \"bridges\": [{\n \"url\": \"https://bridge.testnet.n3.nahmii.io\"\n }]\n },\n \"rpc\": [\"https://nahmii-3-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4062.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ngeth.testnet.n3.nahmii.io\"],\n \"shortName\": \"Nahmii3Testnet\",\n \"slug\": \"nahmii-3-testnet\",\n \"testnet\": true\n};\n\nvar c4090 = {\n \"chain\": \"Fastex Chain (Bahamut)\",\n \"chainId\": 4090,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://oasis.ftnscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.oasis.fastexchain.com\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSemioP83RXnDWwTZbet8VpwJxcFRboX4B3pcdhLZGodP\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fastexchain.com\",\n \"name\": \"Fastex Chain (Bahamut) Oasis Testnet\",\n \"nativeCurrency\": {\n \"name\": \"FTN\",\n \"symbol\": \"FTN\",\n \"decimals\": 18\n },\n \"networkId\": 4090,\n \"rpc\": [\"https://fastex-chain-bahamut-oasis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4090.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.oasis.bahamutchain.com\"],\n \"shortName\": \"Oasis\",\n \"slug\": \"fastex-chain-bahamut-oasis-testnet\",\n \"testnet\": true,\n \"title\": \"Bahamut testnet Oasis\"\n};\n\nvar c4096 = {\n \"chain\": \"BNI\",\n \"chainId\": 4096,\n \"explorers\": [{\n \"name\": \"Bitindi\",\n \"url\": \"https://testnet.bitindiscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bitindi.org\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRAFFPiLiSgjGTs9QaZdnR9fsDgyUdTejwSxcnPXo292s\",\n \"width\": 60,\n \"height\": 72,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitindi.org\",\n \"name\": \"Bitindi Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BNI\",\n \"symbol\": \"$BNI\",\n \"decimals\": 18\n },\n \"networkId\": 4096,\n \"redFlags\": [],\n \"rpc\": [\"https://bitindi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4096.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.bitindi.org\", \"https://testnet-rpc.bitindi.org\"],\n \"shortName\": \"BNIt\",\n \"slug\": \"bitindi-testnet\",\n \"testnet\": true\n};\n\nvar c4099 = {\n \"chain\": \"BNI\",\n \"chainId\": 4099,\n \"explorers\": [{\n \"name\": \"Bitindi\",\n \"url\": \"https://bitindiscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bitindi.org\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRAFFPiLiSgjGTs9QaZdnR9fsDgyUdTejwSxcnPXo292s\",\n \"width\": 60,\n \"height\": 72,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitindi.org\",\n \"name\": \"Bitindi Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BNI\",\n \"symbol\": \"$BNI\",\n \"decimals\": 18\n },\n \"networkId\": 4099,\n \"redFlags\": [],\n \"rpc\": [\"https://bitindi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4099.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \" https://rpc-mainnet.bitindi.org\", \"https://mainnet-rpc.bitindi.org\"],\n \"shortName\": \"BNIm\",\n \"slug\": \"bitindi\",\n \"testnet\": false\n};\n\nvar c4102 = {\n \"chain\": \"AIOZ\",\n \"chainId\": 4102,\n \"explorers\": [{\n \"name\": \"AIOZ Network Testnet Explorer\",\n \"url\": \"https://testnet.explorer.aioz.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRAGPFhvQiXgoJkui7WHajpKctGFrJNhHqzYdwcWt5V3Z\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://aioz.network\",\n \"name\": \"AIOZ Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"testAIOZ\",\n \"symbol\": \"AIOZ\",\n \"decimals\": 18\n },\n \"networkId\": 4102,\n \"rpc\": [\"https://aioz-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4102.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth-ds.testnet.aioz.network\"],\n \"shortName\": \"aioz-testnet\",\n \"slip44\": 60,\n \"slug\": \"aioz-network-testnet\",\n \"testnet\": true\n};\n\nvar c4139 = {\n \"chain\": \"Humans Testnet\",\n \"chainId\": 4139,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmX6XuoQDTTjYqAmdNJiieLDZSwHHyUx44yQb4E3tmHmEA\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://humans.ai\",\n \"name\": \"Humans.ai Testnet\",\n \"nativeCurrency\": {\n \"name\": \"HEART\",\n \"symbol\": \"HEART\",\n \"decimals\": 18\n },\n \"networkId\": 4139,\n \"rpc\": [\"https://humans-ai-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4139.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-rpc.testnet.humans.zone\"],\n \"shortName\": \"humans_testnet\",\n \"slug\": \"humans-ai-testnet\",\n \"testnet\": true\n};\n\nvar c4141 = {\n \"chain\": \"TPBX\",\n \"chainId\": 4141,\n \"explorers\": [{\n \"name\": \"Tipboxcoin\",\n \"url\": \"https://testnet.tipboxcoin.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.tipboxcoin.net\"],\n \"icon\": {\n \"url\": \"ipfs://QmbiaHnR3fVVofZ7Xq2GYZxwHkLEy3Fh5qDtqnqXD6ACAh\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://tipboxcoin.net\",\n \"name\": \"Tipboxcoin Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Tipboxcoin\",\n \"symbol\": \"TPBX\",\n \"decimals\": 18\n },\n \"networkId\": 4141,\n \"rpc\": [\"https://tipboxcoin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4141.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.tipboxcoin.net\"],\n \"shortName\": \"TPBXt\",\n \"slug\": \"tipboxcoin-testnet\",\n \"testnet\": true\n};\n\nvar c4157 = {\n \"chain\": \"XFI\",\n \"chainId\": 4157,\n \"explorers\": [{\n \"name\": \"Scan Testnet\",\n \"url\": \"https://scan.testnet.ms/\",\n \"standard\": \"EIP1559\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"name\": \"CrossFi Testnet\",\n \"nativeCurrency\": {\n \"name\": \"XFI\",\n \"symbol\": \"XFI\",\n \"decimals\": 18\n },\n \"networkId\": 4157,\n \"redFlags\": [],\n \"rpc\": [\"https://crossfi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4157.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.ms/\"],\n \"shortName\": \"XFI\",\n \"slug\": \"crossfi-testnet\",\n \"testnet\": true,\n \"title\": \"https://scan.testnet.ms/\"\n};\n\nvar c4181 = {\n \"chain\": \"PHI V1\",\n \"chainId\": 4181,\n \"explorers\": [{\n \"name\": \"PHI Explorer\",\n \"url\": \"https://explorer.phi.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreid6pm3mic7izp3a6zlfwhhe7etd276bjfsq2xash6a4s2vmcdf65a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreid6pm3mic7izp3a6zlfwhhe7etd276bjfsq2xash6a4s2vmcdf65a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://phi.network\",\n \"name\": \"PHI Network V1\",\n \"nativeCurrency\": {\n \"name\": \"PHI\",\n \"symbol\": \"Φ\",\n \"decimals\": 18\n },\n \"networkId\": 4181,\n \"rpc\": [\"https://phi-network-v1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4181.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.phi.network\", \"https://rpc2.phi.network\"],\n \"shortName\": \"PHIv1\",\n \"slug\": \"phi-network-v1\",\n \"testnet\": false\n};\n\nvar c4201 = {\n \"chain\": \"LUKSO Testnet\",\n \"chainId\": 4201,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.execution.testnet.lukso.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.testnet.lukso.network\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qmeg9sFF5tAGi6MCx7YjtVHW6a23zqvHRK1xwzSdp9iE7z\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lukso.network\",\n \"name\": \"LUKSO Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TestLYX\",\n \"symbol\": \"LYXt\",\n \"decimals\": 18\n },\n \"networkId\": 4201,\n \"rpc\": [\"https://lukso-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4201.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.lukso.network\", \"wss://ws-rpc.testnet.lukso.network\"],\n \"shortName\": \"lukso-testnet\",\n \"slug\": \"lukso-testnet\",\n \"testnet\": true\n};\n\nvar c4242 = {\n \"chain\": \"Nexi\",\n \"chainId\": 4242,\n \"explorers\": [{\n \"name\": \"nexiscan\",\n \"url\": \"https://www.nexiscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeifxqd7zel2m237kq5enavnh2s6cshaavswigogyvae2wevxy5k2ti\",\n \"width\": 512,\n \"height\": 578,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.nexi.technology/\",\n \"name\": \"Nexi Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Nexi\",\n \"symbol\": \"NEXI\",\n \"decimals\": 18\n },\n \"networkId\": 4242,\n \"rpc\": [\"https://nexi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4242.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.chain.nexi.technology/\", \"https://chain.nexilix.com\", \"https://chain.nexi.evmnode.online\"],\n \"shortName\": \"nexi\",\n \"slip44\": 2500,\n \"slug\": \"nexi\",\n \"testnet\": false\n};\n\nvar c4328 = {\n \"chain\": \"Bobafuji Testnet\",\n \"chainId\": 4328,\n \"explorers\": [{\n \"name\": \"Bobafuji Testnet block explorer\",\n \"url\": \"https://blockexplorer.testnet.avax.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Bobafuji Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 4328,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://gateway.boba.network\"\n }]\n },\n \"rpc\": [\"https://bobafuji-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4328.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.avax.boba.network\", \"wss://wss.testnet.avax.boba.network\", \"https://replica.testnet.avax.boba.network\"],\n \"shortName\": \"BobaFujiTestnet\",\n \"slug\": \"bobafuji-testnet\",\n \"testnet\": true\n};\n\nvar c4337 = {\n \"chain\": \"BEAM\",\n \"chainId\": 4337,\n \"explorers\": [{\n \"name\": \"Beam Explorer\",\n \"url\": \"https://subnets.avax.network/beam\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.onbeam.com\"],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQJ21NWyGGDraicVEzS1Uqq1yXahM9NCuNZgnfYvtspdt\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.onbeam.com\",\n \"name\": \"Beam\",\n \"nativeCurrency\": {\n \"name\": \"Beam\",\n \"symbol\": \"BEAM\",\n \"decimals\": 18\n },\n \"networkId\": 4337,\n \"rpc\": [\"https://beam.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4337.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/beam/mainnet/rpc\", \"wss://subnets.avax.network/beam/mainnet/ws\"],\n \"shortName\": \"beam\",\n \"slug\": \"beam\",\n \"testnet\": false\n};\n\nvar c4400 = {\n \"chain\": \"CREDIT\",\n \"chainId\": 4400,\n \"explorers\": [{\n \"name\": \"Creditscan\",\n \"url\": \"https://scan.creditsmartchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://creditsmartchain.com\",\n \"name\": \"Credit Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Credit\",\n \"symbol\": \"CREDIT\",\n \"decimals\": 18\n },\n \"networkId\": 4400,\n \"rpc\": [\"https://credit-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4400.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.creditsmartchain.com\"],\n \"shortName\": \"CreditEdge\",\n \"slug\": \"credit-smart-chain\",\n \"testnet\": false\n};\n\nvar c4444 = {\n \"chain\": \"mainnet\",\n \"chainId\": 4444,\n \"explorers\": [{\n \"name\": \"htmlcoin\",\n \"url\": \"https://explorer.htmlcoin.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmR1oDRSadPerfyWMhKHNP268vPKvpczt5zPawgFSZisz2\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://gruvin.me/htmlcoin\"],\n \"icon\": {\n \"url\": \"ipfs://QmR1oDRSadPerfyWMhKHNP268vPKvpczt5zPawgFSZisz2\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://htmlcoin.com\",\n \"name\": \"Htmlcoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Htmlcoin\",\n \"symbol\": \"HTML\",\n \"decimals\": 8\n },\n \"networkId\": 4444,\n \"rpc\": [\"https://htmlcoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4444.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://janus.htmlcoin.com/api/\"],\n \"shortName\": \"html\",\n \"slug\": \"htmlcoin\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c4460 = {\n \"chain\": \"ETH\",\n \"chainId\": 4460,\n \"explorers\": [{\n \"name\": \"basescout\",\n \"url\": \"https://explorerl2new-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSpwp3RAVhZsErAQrCQxEmjnGqJQMigarzZbfqr9Ktakb\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"name\": \"Orderly Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 4460,\n \"rpc\": [\"https://orderly-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4460.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://l2-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz\"],\n \"shortName\": \"orderlyl2\",\n \"slug\": \"orderly-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c4689 = {\n \"chain\": \"iotex.io\",\n \"chainId\": 4689,\n \"explorers\": [{\n \"name\": \"iotexscan\",\n \"url\": \"https://iotexscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQKHQrvtyUC5b5B76ke5GPTGXoGTVCubXS6gHgzCAswKo\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://iotex.io\",\n \"name\": \"IoTeX Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"IoTeX\",\n \"symbol\": \"IOTX\",\n \"decimals\": 18\n },\n \"networkId\": 4689,\n \"redFlags\": [],\n \"rpc\": [\"https://iotex-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4689.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://babel-api.mainnet.iotex.io\"],\n \"shortName\": \"iotex-mainnet\",\n \"slug\": \"iotex-network\",\n \"testnet\": false\n};\n\nvar c4690 = {\n \"chain\": \"iotex.io\",\n \"chainId\": 4690,\n \"explorers\": [{\n \"name\": \"testnet iotexscan\",\n \"url\": \"https://testnet.iotexscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.iotex.io/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQKHQrvtyUC5b5B76ke5GPTGXoGTVCubXS6gHgzCAswKo\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://iotex.io\",\n \"name\": \"IoTeX Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"IoTeX\",\n \"symbol\": \"IOTX\",\n \"decimals\": 18\n },\n \"networkId\": 4690,\n \"redFlags\": [],\n \"rpc\": [\"https://iotex-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4690.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://babel-api.testnet.iotex.io\"],\n \"shortName\": \"iotex-testnet\",\n \"slug\": \"iotex-network-testnet\",\n \"testnet\": true\n};\n\nvar c4759 = {\n \"chain\": \"MEVerse\",\n \"chainId\": 4759,\n \"explorers\": [{\n \"name\": \"MEVerse Chain Testnet Explorer\",\n \"url\": \"https://testnet.meversescan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPuQ6gaCfUtNdRuaEDbdhot2m2KCy2ZHCJUvZXJAtdeyJ\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPuQ6gaCfUtNdRuaEDbdhot2m2KCy2ZHCJUvZXJAtdeyJ\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.meverse.sg\",\n \"name\": \"MEVerse Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MEVerse\",\n \"symbol\": \"MEV\",\n \"decimals\": 18\n },\n \"networkId\": 4759,\n \"rpc\": [\"https://meverse-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4759.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.meversetestnet.io\"],\n \"shortName\": \"TESTMEV\",\n \"slug\": \"meverse-chain-testnet\",\n \"testnet\": true\n};\n\nvar c4777 = {\n \"chain\": \"TBXN\",\n \"chainId\": 4777,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet-explorer.blackfort.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmPasA8xykRtJDivB2bcKDiRCUNWDPtfUTTKVAcaF2wVxC\",\n \"width\": 1968,\n \"height\": 1968,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://blackfort.exchange\",\n \"name\": \"BlackFort Exchange Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BlackFort Testnet Token\",\n \"symbol\": \"TBXN\",\n \"decimals\": 18\n },\n \"networkId\": 4777,\n \"rpc\": [\"https://blackfort-exchange-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.blackfort.network/rpc\"],\n \"shortName\": \"TBXN\",\n \"slug\": \"blackfort-exchange-network-testnet\",\n \"testnet\": true\n};\n\nvar c4893 = {\n \"chain\": \"GC\",\n \"chainId\": 4893,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://gcscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPRHDsVNpRZ72GoQgDbpa3R4wKENmrXCRNuYJkxocFRDb\",\n \"width\": 306,\n \"height\": 293,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gcscan.io\",\n \"name\": \"Globel Chain\",\n \"nativeCurrency\": {\n \"name\": \"Globel Chain\",\n \"symbol\": \"GC\",\n \"decimals\": 18\n },\n \"networkId\": 4893,\n \"rpc\": [\"https://globel-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4893.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.gcscan.io\"],\n \"shortName\": \"GC\",\n \"slug\": \"globel-chain\",\n \"testnet\": false\n};\n\nvar c4918 = {\n \"chain\": \"XVM\",\n \"chainId\": 4918,\n \"explorers\": [{\n \"name\": \"Venidium EVM Testnet Explorer\",\n \"url\": \"https://evm-testnet.venidiumexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://venidium.io\",\n \"name\": \"Venidium Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Venidium\",\n \"symbol\": \"XVM\",\n \"decimals\": 18\n },\n \"networkId\": 4918,\n \"rpc\": [\"https://venidium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4918.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-evm-testnet.venidium.io\"],\n \"shortName\": \"txvm\",\n \"slug\": \"venidium-testnet\",\n \"testnet\": true\n};\n\nvar c4919 = {\n \"chain\": \"XVM\",\n \"chainId\": 4919,\n \"explorers\": [{\n \"name\": \"Venidium Explorer\",\n \"url\": \"https://evm.venidiumexplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiaplwlym5g27jm4mjhotfqq6al2cxp3fnkmzdusqjg7wnipq5wn2e\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://venidium.io\",\n \"name\": \"Venidium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Venidium\",\n \"symbol\": \"XVM\",\n \"decimals\": 18\n },\n \"networkId\": 4919,\n \"rpc\": [\"https://venidium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4919.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.venidium.io\"],\n \"shortName\": \"xvm\",\n \"slug\": \"venidium\",\n \"testnet\": false\n};\n\nvar c4999 = {\n \"chain\": \"BXN\",\n \"chainId\": 4999,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.blackfort.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmPasA8xykRtJDivB2bcKDiRCUNWDPtfUTTKVAcaF2wVxC\",\n \"width\": 1968,\n \"height\": 1968,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://blackfort.exchange\",\n \"name\": \"BlackFort Exchange Network\",\n \"nativeCurrency\": {\n \"name\": \"BlackFort Token\",\n \"symbol\": \"BXN\",\n \"decimals\": 18\n },\n \"networkId\": 4999,\n \"rpc\": [\"https://blackfort-exchange-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.blackfort.network/rpc\", \"https://mainnet-1.blackfort.network/rpc\", \"https://mainnet-2.blackfort.network/rpc\", \"https://mainnet-3.blackfort.network/rpc\"],\n \"shortName\": \"BXN\",\n \"slug\": \"blackfort-exchange-network\",\n \"testnet\": false\n};\n\nvar c5000 = {\n \"chain\": \"ETH\",\n \"chainId\": 5000,\n \"explorers\": [{\n \"name\": \"Mantle Explorer\",\n \"url\": \"https://explorer.mantle.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYddHh5zdceSsBU7uGfQvEHg6UUtAFbzQBBaePS4whx7o\",\n \"width\": 225,\n \"height\": 225,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mantle.xyz\",\n \"name\": \"Mantle\",\n \"nativeCurrency\": {\n \"name\": \"Mantle\",\n \"symbol\": \"MNT\",\n \"decimals\": 18\n },\n \"networkId\": 5000,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.mantle.xyz\"\n }]\n },\n \"rpc\": [\"https://mantle.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mantle.xyz\", \"https://mantle.publicnode.com\", \"wss://mantle.publicnode.com\"],\n \"shortName\": \"mantle\",\n \"slug\": \"mantle\",\n \"testnet\": false\n};\n\nvar c5001 = {\n \"chain\": \"ETH\",\n \"chainId\": 5001,\n \"explorers\": [{\n \"name\": \"Mantle Testnet Explorer\",\n \"url\": \"https://explorer.testnet.mantle.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.testnet.mantle.xyz\"],\n \"infoURL\": \"https://mantle.xyz\",\n \"name\": \"Mantle Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Mantle\",\n \"symbol\": \"MNT\",\n \"decimals\": 18\n },\n \"networkId\": 5001,\n \"rpc\": [\"https://mantle-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.mantle.xyz\"],\n \"shortName\": \"mantle-testnet\",\n \"slug\": \"mantle-testnet\",\n \"testnet\": true\n};\n\nvar c5002 = {\n \"chain\": \"Treasurenet Mainnet Alpha\",\n \"chainId\": 5002,\n \"explorers\": [{\n \"name\": \"Treasurenet EVM BlockExplorer\",\n \"url\": \"https://evmexplorer.treasurenet.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTcNX8ukHkXiVfVah1W8Sed3vtGN95Sq2QSimfLuHva6B\",\n \"width\": 1844,\n \"height\": 1920,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTcNX8ukHkXiVfVah1W8Sed3vtGN95Sq2QSimfLuHva6B\",\n \"width\": 1844,\n \"height\": 1920,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.treasurenet.io\",\n \"name\": \"Treasurenet Mainnet Alpha\",\n \"nativeCurrency\": {\n \"name\": \"UNIT\",\n \"symbol\": \"UNIT\",\n \"decimals\": 18\n },\n \"networkId\": 5002,\n \"rpc\": [\"https://treasurenet-alpha.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node0.treasurenet.io\", \"https://node1.treasurenet.io\", \"https://node2.treasurenet.io\", \"https://node3.treasurenet.io\"],\n \"shortName\": \"treasurenet\",\n \"slug\": \"treasurenet-alpha\",\n \"testnet\": false\n};\n\nvar c5003 = {\n \"chain\": \"ETH\",\n \"chainId\": 5003,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.sepolia.mantle.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.sepolia.mantle.xyz\"],\n \"infoURL\": \"https://mantle.xyz\",\n \"name\": \"Mantle Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Mantle\",\n \"symbol\": \"MNT\",\n \"decimals\": 18\n },\n \"networkId\": 5003,\n \"rpc\": [\"https://mantle-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.sepolia.mantle.xyz\"],\n \"shortName\": \"mnt-sep\",\n \"slug\": \"mantle-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c5005 = {\n \"chain\": \"Treasurenet Testnet\",\n \"chainId\": 5005,\n \"explorers\": [{\n \"name\": \"Treasurenet EVM BlockExplorer\",\n \"url\": \"https://evmexplorer.testnet.treasurenet.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTcNX8ukHkXiVfVah1W8Sed3vtGN95Sq2QSimfLuHva6B\",\n \"width\": 1844,\n \"height\": 1920,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTcNX8ukHkXiVfVah1W8Sed3vtGN95Sq2QSimfLuHva6B\",\n \"width\": 1844,\n \"height\": 1920,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.testnet.treasurenet.io\",\n \"name\": \"Treasurenet Testnet\",\n \"nativeCurrency\": {\n \"name\": \"UNIT\",\n \"symbol\": \"UNIT\",\n \"decimals\": 18\n },\n \"networkId\": 5005,\n \"rpc\": [\"https://treasurenet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node0.testnet.treasurenet.io\", \"https://node1.testnet.treasurenet.io\", \"https://node2.testnet.treasurenet.io\", \"https://node3.testnet.treasurenet.io\"],\n \"shortName\": \"tntest\",\n \"slug\": \"treasurenet-testnet\",\n \"testnet\": true\n};\n\nvar c5165 = {\n \"chain\": \"Bahamut\",\n \"chainId\": 5165,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://ftnscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSemioP83RXnDWwTZbet8VpwJxcFRboX4B3pcdhLZGodP\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bahamut.io\",\n \"name\": \"Bahamut\",\n \"nativeCurrency\": {\n \"name\": \"FTN\",\n \"symbol\": \"FTN\",\n \"decimals\": 18\n },\n \"networkId\": 5165,\n \"rpc\": [\"https://bahamut.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5165.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.bahamut.io\", \"https://rpc2.bahamut.io\", \"wss://ws1.sahara.bahamutchain.com\", \"wss://ws2.sahara.bahamutchain.com\", \"https://bahamut.publicnode.com\", \"wss://bahamut.publicnode.com\"],\n \"shortName\": \"ftn\",\n \"slug\": \"bahamut\",\n \"testnet\": false,\n \"title\": \"Bahamut mainnet\"\n};\n\nvar c5177 = {\n \"chain\": \"TLC\",\n \"chainId\": 5177,\n \"explorers\": [{\n \"name\": \"TLChain Explorer\",\n \"url\": \"https://explorer.tlchain.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaR5TsgnWSjLys6wGaciKUbc5qYL3Es4jtgQcosVqDWR3\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://tlchain.network/\",\n \"name\": \"TLChain Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TLChain Network\",\n \"symbol\": \"TLC\",\n \"decimals\": 18\n },\n \"networkId\": 5177,\n \"rpc\": [\"https://tlchain-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5177.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.tlxscan.com/\"],\n \"shortName\": \"tlc\",\n \"slug\": \"tlchain-network\",\n \"testnet\": false\n};\n\nvar c5197 = {\n \"chain\": \"ESN\",\n \"chainId\": 5197,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmV1wZ1RVXeD7216aiVBpLkbBBHWNuoTvcSzpVQsqi2uaH\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eraswap.info/\",\n \"name\": \"EraSwap Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EraSwap\",\n \"symbol\": \"ES\",\n \"decimals\": 18\n },\n \"networkId\": 5197,\n \"rpc\": [\"https://eraswap.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5197.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.eraswap.network\", \"https://rpc-mumbai.mainnet.eraswap.network\"],\n \"shortName\": \"es\",\n \"slug\": \"eraswap\",\n \"testnet\": false\n};\n\nvar c5234 = {\n \"chain\": \"HMND\",\n \"chainId\": 5234,\n \"explorers\": [{\n \"name\": \"Subscan\",\n \"url\": \"https://humanode.subscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qma2GfW5nQHuA7nGqdEfwaXPL63G9oTwRTQKaGTfjNtM2W\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://humanode.io\",\n \"name\": \"Humanode Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"eHMND\",\n \"symbol\": \"eHMND\",\n \"decimals\": 18\n },\n \"networkId\": 5234,\n \"rpc\": [\"https://humanode.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5234.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://explorer-rpc-http.mainnet.stages.humanode.io\"],\n \"shortName\": \"hmnd\",\n \"slug\": \"humanode\",\n \"testnet\": false\n};\n\nvar c5290 = {\n \"chain\": \"FIRE\",\n \"chainId\": 5290,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYjuztyURb3Fc6ZTLgCbwQa64CcVoigF5j9cafzuSbqgf\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thefirechain.com\",\n \"name\": \"Firechain Mainnet Old\",\n \"nativeCurrency\": {\n \"name\": \"Firechain\",\n \"symbol\": \"FIRE\",\n \"decimals\": 18\n },\n \"networkId\": 5290,\n \"rpc\": [\"https://firechain-old.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5290.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.rpc1.thefirechain.com\"],\n \"shortName\": \"_old_fire\",\n \"slug\": \"firechain-old\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c5315 = {\n \"chain\": \"UZMI\",\n \"chainId\": 5315,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://uzmigames.com.br/\",\n \"name\": \"Uzmi Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"UZMI\",\n \"symbol\": \"UZMI\",\n \"decimals\": 18\n },\n \"networkId\": 5315,\n \"rpc\": [\"https://uzmi-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5315.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://network.uzmigames.com.br/\"],\n \"shortName\": \"UZMI\",\n \"slug\": \"uzmi-network\",\n \"testnet\": false\n};\n\nvar c5353 = {\n \"chain\": \"TRITANIUM\",\n \"chainId\": 5353,\n \"explorers\": [{\n \"name\": \"TRITANIUM Testnet Explorer\",\n \"url\": \"https://testnet.tritanium.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRm6gcEPJmU9a86zrmyP7FALTN4Toz9HrnrL2Kwg6FPeh\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.tritanium.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmRm6gcEPJmU9a86zrmyP7FALTN4Toz9HrnrL2Kwg6FPeh\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://tritanium.network\",\n \"name\": \"Tritanium Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Tritanium Native Token\",\n \"symbol\": \"tTRN\",\n \"decimals\": 18\n },\n \"networkId\": 5353,\n \"rpc\": [\"https://tritanium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5353.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nodetestnet-station-one.tritanium.network/\", \"https://nodetestnet-station-two.tritanium.network/\"],\n \"shortName\": \"ttrn\",\n \"slug\": \"tritanium-testnet\",\n \"testnet\": true\n};\n\nvar c5522 = {\n \"chain\": \"vex\",\n \"chainId\": 5522,\n \"explorers\": [{\n \"name\": \"Vexascan-EVM-TestNet\",\n \"url\": \"https://testnet.vexascan.com/evmexplorer\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://t.me/vexfaucetbot\"],\n \"icon\": {\n \"url\": \"ipfs://QmcZiEAGFYEEax1uxYnDUh8X5YBvZqMi9K92yZoq4o2zeM\",\n \"width\": 451,\n \"height\": 446,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://vexanium.com\",\n \"name\": \"VEX EVM TESTNET\",\n \"nativeCurrency\": {\n \"name\": \"VEX EVM TESTNET\",\n \"symbol\": \"VEX\",\n \"decimals\": 18\n },\n \"networkId\": 5522,\n \"rpc\": [\"https://vex-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5522.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.vexascan.com/evmapi\"],\n \"shortName\": \"VEX\",\n \"slug\": \"vex-evm-testnet\",\n \"testnet\": true\n};\n\nvar c5551 = {\n \"chain\": \"Nahmii\",\n \"chainId\": 5551,\n \"explorers\": [{\n \"name\": \"Nahmii mainnet explorer\",\n \"url\": \"https://explorer.nahmii.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nahmii.io\",\n \"name\": \"Nahmii Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 5551,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.nahmii.io\"\n }]\n },\n \"rpc\": [\"https://nahmii.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5551.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://l2.nahmii.io\"],\n \"shortName\": \"Nahmii\",\n \"slug\": \"nahmii\",\n \"testnet\": false\n};\n\nvar c5553 = {\n \"chain\": \"Nahmii\",\n \"chainId\": 5553,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.testnet.nahmii.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZhKXgoGpzvthr2eh8ZNgT75YvMtEBegdELAaMPPzf5QT\",\n \"width\": 384,\n \"height\": 384,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nahmii.io\",\n \"name\": \"Nahmii Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 5553,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-3\",\n \"bridges\": [{\n \"url\": \"https://bridge.nahmii.io\"\n }]\n },\n \"rpc\": [\"https://nahmii-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5553.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://l2.testnet.nahmii.io\"],\n \"shortName\": \"NahmiiTestnet\",\n \"slug\": \"nahmii-testnet\",\n \"testnet\": true\n};\n\nvar c5555 = {\n \"chain\": \"CVERSE\",\n \"chainId\": 5555,\n \"explorers\": [{\n \"name\": \"Chain Verse Explorer\",\n \"url\": \"https://explorer.chainverse.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQyJt28h4wN3QHPXUQJQYQqGiFUD77han3zibZPzHbitk\",\n \"width\": 1000,\n \"height\": 1436,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://chainverse.info\",\n \"name\": \"Chain Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Oasys\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 5555,\n \"rpc\": [\"https://chain-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.chainverse.info\"],\n \"shortName\": \"cverse\",\n \"slug\": \"chain-verse\",\n \"testnet\": false\n};\n\nvar c5611 = {\n \"chain\": \"opBNB\",\n \"chainId\": 5611,\n \"explorers\": [{\n \"name\": \"bscscan-opbnb-testnet\",\n \"url\": \"https://opbnb-testnet.bscscan.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"opbnbscan\",\n \"url\": \"https://opbnbscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet.bnbchain.org/faucet-smart\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeib75gwytvblyvjpfminitr3i6mpat3a624udfsqsl5nysf5vuuvie\",\n \"width\": 96,\n \"height\": 96,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://opbnb.bnbchain.org/en\",\n \"name\": \"opBNB Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BNB Chain Native Token\",\n \"symbol\": \"tBNB\",\n \"decimals\": 18\n },\n \"networkId\": 5611,\n \"rpc\": [\"https://opbnb-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5611.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://opbnb-testnet-rpc.bnbchain.org\", \"https://opbnb-testnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3\", \"wss://opbnb-testnet.nodereal.io/ws/v1/64a9df0874fb4a93b9d0a3849de012d3\", \"https://opbnb-testnet.nodereal.io/v1/e9a36765eb8a40b9bd12e680a1fd2bc5\", \"wss://opbnb-testnet.nodereal.io/ws/v1/e9a36765eb8a40b9bd12e680a1fd2bc5\"],\n \"shortName\": \"obnbt\",\n \"slug\": \"opbnb-testnet\",\n \"testnet\": true\n};\n\nvar c5616 = {\n \"chain\": \"ARCTURUS\",\n \"chainId\": 5616,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://arcturuschain.io\",\n \"name\": \"Arcturus Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Test Arct\",\n \"symbol\": \"tARCT\",\n \"decimals\": 18\n },\n \"networkId\": 5616,\n \"rpc\": [\"https://arcturus-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5616.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://185.99.196.3:8545\"],\n \"shortName\": \"ARCT\",\n \"slug\": \"arcturus-chain-testnet\",\n \"testnet\": true\n};\n\nvar c5678 = {\n \"chain\": \"EVMCC\",\n \"chainId\": 5678,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://tanssi.network\",\n \"name\": \"Tanssi EVM ContainerChain\",\n \"nativeCurrency\": {\n \"name\": \"Unit\",\n \"symbol\": \"Unit\",\n \"decimals\": 18\n },\n \"networkId\": 5678,\n \"rpc\": [\"https://tanssi-evm-containerchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5678.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fraa-dancebox-3001-rpc.a.dancebox.tanssi.network\", \"wss://fraa-dancebox-3001-rpc.a.dancebox.tanssi.network\"],\n \"shortName\": \"TanssiCC\",\n \"slug\": \"tanssi-evm-containerchain\",\n \"testnet\": false\n};\n\nvar c5700 = {\n \"chain\": \"SYS\",\n \"chainId\": 5700,\n \"explorers\": [{\n \"name\": \"Syscoin Testnet Block Explorer\",\n \"url\": \"https://tanenbaum.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.tanenbaum.io\"],\n \"infoURL\": \"https://syscoin.org\",\n \"name\": \"Syscoin Tanenbaum Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Syscoin\",\n \"symbol\": \"tSYS\",\n \"decimals\": 18\n },\n \"networkId\": 5700,\n \"rpc\": [\"https://syscoin-tanenbaum-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5700.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tanenbaum.io\", \"wss://rpc.tanenbaum.io/wss\", \"https://syscoin-tanenbaum-evm.publicnode.com\", \"wss://syscoin-tanenbaum-evm.publicnode.com\"],\n \"shortName\": \"tsys\",\n \"slug\": \"syscoin-tanenbaum-testnet\",\n \"testnet\": true\n};\n\nvar c5729 = {\n \"chain\": \"HIK\",\n \"chainId\": 5729,\n \"explorers\": [{\n \"name\": \"Hika Network Testnet Explorer\",\n \"url\": \"https://scan-testnet.hika.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW44FPm3CMM2JDs8BQxLNvUtykkUtrGkQkQsUDJSi3Gmp\",\n \"width\": 350,\n \"height\": 84,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hika.network/\",\n \"name\": \"Hika Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Hik Token\",\n \"symbol\": \"HIK\",\n \"decimals\": 18\n },\n \"networkId\": 5729,\n \"rpc\": [\"https://hika-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5729.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.hika.network/\"],\n \"shortName\": \"hik\",\n \"slug\": \"hika-network-testnet\",\n \"testnet\": true,\n \"title\": \"Hika Network Testnet\"\n};\n\nvar c5758 = {\n \"chain\": \"SATS\",\n \"chainId\": 5758,\n \"explorers\": [{\n \"name\": \"SatoshiChain Testnet Explorer\",\n \"url\": \"https://testnet.satoshiscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.satoshichain.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmRegpZQBW4o1imYNsW3d27MQjygBSU23Gf6JKje26nvs7\",\n \"width\": 1251,\n \"height\": 1251,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://satoshichain.net\",\n \"name\": \"SatoshiChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"SatoshiChain Coin\",\n \"symbol\": \"SATS\",\n \"decimals\": 18\n },\n \"networkId\": 5758,\n \"rpc\": [\"https://satoshichain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5758.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.satoshichain.io\"],\n \"shortName\": \"satst\",\n \"slug\": \"satoshichain-testnet\",\n \"testnet\": true\n};\n\nvar c5777 = {\n \"chain\": \"ETH\",\n \"chainId\": 5777,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc9N7V8CiLB4r7FEcG7GojqfiGGsRCZqcFWCahwMohbDW\",\n \"width\": 267,\n \"height\": 300,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://trufflesuite.com/ganache/\",\n \"name\": \"Ganache\",\n \"nativeCurrency\": {\n \"name\": \"Ganache Test Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 5777,\n \"rpc\": [\"https://ganache.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://127.0.0.1:7545\"],\n \"shortName\": \"ggui\",\n \"slug\": \"ganache\",\n \"testnet\": true,\n \"title\": \"Ganache GUI Ethereum Testnet\"\n};\n\nvar c5851 = {\n \"chain\": \"Ontology\",\n \"chainId\": 5851,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.ont.io/testnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://developer.ont.io/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreigmvn6spvbiirtutowpq6jmetevbxoof5plzixjoerbeswy4htfb4\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ont.io/\",\n \"name\": \"Ontology Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ONG\",\n \"symbol\": \"ONG\",\n \"decimals\": 18\n },\n \"networkId\": 5851,\n \"rpc\": [\"https://ontology-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5851.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://polaris1.ont.io:20339\", \"http://polaris2.ont.io:20339\", \"http://polaris3.ont.io:20339\", \"http://polaris4.ont.io:20339\", \"https://polaris1.ont.io:10339\", \"https://polaris2.ont.io:10339\", \"https://polaris3.ont.io:10339\", \"https://polaris4.ont.io:10339\"],\n \"shortName\": \"OntologyTestnet\",\n \"slug\": \"ontology-testnet\",\n \"testnet\": true\n};\n\nvar c5869 = {\n \"chain\": \"RBD\",\n \"chainId\": 5869,\n \"explorers\": [{\n \"name\": \"wegoscan2\",\n \"url\": \"https://scan2.wegochain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.wegochain.io\",\n \"name\": \"Wegochain Rubidium Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Rubid\",\n \"symbol\": \"RBD\",\n \"decimals\": 18\n },\n \"networkId\": 5869,\n \"rpc\": [\"https://wegochain-rubidium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5869.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://proxy.wegochain.io\", \"http://wallet.wegochain.io:7764\"],\n \"shortName\": \"rbd\",\n \"slug\": \"wegochain-rubidium\",\n \"testnet\": false\n};\n\nvar c6065 = {\n \"chain\": \"TresLeches\",\n \"chainId\": 6065,\n \"explorers\": [{\n \"name\": \"treslechesexplorer\",\n \"url\": \"https://explorer-test.tresleches.finance\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmS33ypsZ1Hx5LMMACaJaxePy9QNYMwu4D12niobExLK74\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"http://faucet.tresleches.finance:8080\"],\n \"icon\": {\n \"url\": \"ipfs://QmS33ypsZ1Hx5LMMACaJaxePy9QNYMwu4D12niobExLK74\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://treschain.com\",\n \"name\": \"Tres Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TRES\",\n \"symbol\": \"TRES\",\n \"decimals\": 18\n },\n \"networkId\": 6065,\n \"rpc\": [\"https://tres-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6065.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-test.tresleches.finance/\"],\n \"shortName\": \"TRESTEST\",\n \"slug\": \"tres-testnet\",\n \"testnet\": true\n};\n\nvar c6066 = {\n \"chain\": \"TresLeches\",\n \"chainId\": 6066,\n \"explorers\": [{\n \"name\": \"treslechesexplorer\",\n \"url\": \"https://explorer.tresleches.finance\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmS33ypsZ1Hx5LMMACaJaxePy9QNYMwu4D12niobExLK74\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS33ypsZ1Hx5LMMACaJaxePy9QNYMwu4D12niobExLK74\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://treschain.com\",\n \"name\": \"Tres Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TRES\",\n \"symbol\": \"TRES\",\n \"decimals\": 18\n },\n \"networkId\": 6066,\n \"rpc\": [\"https://tres.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6066.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tresleches.finance/\", \"https://rpc.treschain.io/\"],\n \"shortName\": \"TRESMAIN\",\n \"slug\": \"tres\",\n \"testnet\": false\n};\n\nvar c6102 = {\n \"chain\": \"Cascadia\",\n \"chainId\": 6102,\n \"explorers\": [{\n \"name\": \"Cascadia EVM Explorer\",\n \"url\": \"https://explorer.cascadia.foundation\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmQtcwxNiJ9D1QDz4k6jZ7qacLcqMk6CeW85TTBWBvNp3z\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Cascadia Cosmos Explorer\",\n \"url\": \"https://validator.cascadia.foundation\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmQtcwxNiJ9D1QDz4k6jZ7qacLcqMk6CeW85TTBWBvNp3z\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://www.cascadia.foundation/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmQtcwxNiJ9D1QDz4k6jZ7qacLcqMk6CeW85TTBWBvNp3z\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cascadia.foundation\",\n \"name\": \"Cascadia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CC\",\n \"symbol\": \"tCC\",\n \"decimals\": 18\n },\n \"networkId\": 6102,\n \"rpc\": [\"https://cascadia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6102.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.cascadia.foundation\"],\n \"shortName\": \"cascadia\",\n \"slug\": \"cascadia-testnet\",\n \"testnet\": true\n};\n\nvar c6118 = {\n \"chain\": \"UPTN\",\n \"chainId\": 6118,\n \"explorers\": [{\n \"name\": \"UPTN Testnet Explorer\",\n \"url\": \"https://testnet.explorer.uptn.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qma6cGPCDcJPFxy5KQaMBrLtuVQiqeLncXVybcBoQuhai5\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://uptn.io\",\n \"name\": \"UPTN Testnet\",\n \"nativeCurrency\": {\n \"name\": \"UPTN\",\n \"symbol\": \"UPTN\",\n \"decimals\": 18\n },\n \"networkId\": 6118,\n \"rpc\": [\"https://uptn-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6118.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node-api.alp.uptn.io/v1/ext/rpc\"],\n \"shortName\": \"UPTN-TEST\",\n \"slug\": \"uptn-testnet\",\n \"testnet\": true\n};\n\nvar c6119 = {\n \"chain\": \"UPTN\",\n \"chainId\": 6119,\n \"explorers\": [{\n \"name\": \"UPTN Explorer\",\n \"url\": \"https://explorer.uptn.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qma6cGPCDcJPFxy5KQaMBrLtuVQiqeLncXVybcBoQuhai5\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://uptn.io\",\n \"name\": \"UPTN\",\n \"nativeCurrency\": {\n \"name\": \"UPTN\",\n \"symbol\": \"UPTN\",\n \"decimals\": 18\n },\n \"networkId\": 6119,\n \"rpc\": [\"https://uptn.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6119.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node-api.uptn.io/v1/ext/rpc\"],\n \"shortName\": \"UPTN\",\n \"slug\": \"uptn\",\n \"testnet\": false\n};\n\nvar c6363 = {\n \"chain\": \"DGS\",\n \"chainId\": 6363,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRiAUu3xV5uiX6Nk1iXD5w6qjki5ugGFETRVavzJ2h5QF\",\n \"width\": 370,\n \"height\": 320,\n \"format\": \"png\"\n },\n \"name\": \"Digit Soul Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"Digit Coin\",\n \"symbol\": \"DGC\",\n \"decimals\": 18\n },\n \"networkId\": 6363,\n \"rpc\": [\"https://digit-soul-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6363.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dsc-rpc.digitsoul.co.th\"],\n \"shortName\": \"DGS\",\n \"slug\": \"digit-soul-smart-chain\",\n \"testnet\": false\n};\n\nvar c6502 = {\n \"chain\": \"P2P\",\n \"chainId\": 6502,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://peerpay.su.gy\",\n \"name\": \"Peerpay\",\n \"nativeCurrency\": {\n \"name\": \"Peerpay\",\n \"symbol\": \"P2P\",\n \"decimals\": 18\n },\n \"networkId\": 6502,\n \"rpc\": [\"https://peerpay.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6502.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://peerpay.su.gy/p2p\"],\n \"shortName\": \"Peerpay\",\n \"slug\": \"peerpay\",\n \"testnet\": false\n};\n\nvar c6552 = {\n \"chain\": \"SCOLWEI-testnet\",\n \"chainId\": 6552,\n \"explorers\": [{\n \"name\": \"Scolscan Testnet Explorer\",\n \"url\": \"https://testnet-explorer.scolcoin.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.scolcoin.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmVES1eqDXhP8SdeCpM85wvjmhrQDXGRquQebDrSdvJqpt\",\n \"width\": 792,\n \"height\": 822,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://scolcoin.com\",\n \"name\": \"Scolcoin WeiChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Scolcoin\",\n \"symbol\": \"SCOL\",\n \"decimals\": 18\n },\n \"networkId\": 6552,\n \"rpc\": [\"https://scolcoin-weichain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6552.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.scolcoin.com\"],\n \"shortName\": \"SRC-test\",\n \"slug\": \"scolcoin-weichain-testnet\",\n \"testnet\": true\n};\n\nvar c6565 = {\n \"chain\": \"FOX\",\n \"chainId\": 6565,\n \"explorers\": [{\n \"name\": \"FOX Testnet Explorer\",\n \"url\": \"https://testnet.foxscan.app\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://Qmbp1rwhtRr6JQRyYqyfLqkbmzXr1T17zbmChsi2ouvg3M\",\n \"width\": 100,\n \"height\": 100,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.foxchain.app\"],\n \"icon\": {\n \"url\": \"ipfs://Qmbp1rwhtRr6JQRyYqyfLqkbmzXr1T17zbmChsi2ouvg3M\",\n \"width\": 100,\n \"height\": 100,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://foxchain.app\",\n \"name\": \"Fox Testnet Network\",\n \"nativeCurrency\": {\n \"name\": \"FOX Native Token\",\n \"symbol\": \"tFOX\",\n \"decimals\": 18\n },\n \"networkId\": 6565,\n \"rpc\": [\"https://fox-testnet-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6565.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet-v1.foxchain.app/\", \"https://rpc2-testnet-v1.foxchain.app/\", \"https://rpc3-testnet-v1.foxchain.app\"],\n \"shortName\": \"fox\",\n \"slug\": \"fox-testnet-network\",\n \"testnet\": true\n};\n\nvar c6626 = {\n \"chain\": \"PixieChain\",\n \"chainId\": 6626,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.chain.pixie.xyz\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://chain.pixie.xyz\",\n \"name\": \"Pixie Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Pixie Chain Native Token\",\n \"symbol\": \"PIX\",\n \"decimals\": 18\n },\n \"networkId\": 6626,\n \"rpc\": [\"https://pixie-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6626.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://http-mainnet.chain.pixie.xyz\", \"wss://ws-mainnet.chain.pixie.xyz\"],\n \"shortName\": \"pixie-chain\",\n \"slug\": \"pixie-chain\",\n \"testnet\": false\n};\n\nvar c6688 = {\n \"chain\": \"IRIShub\",\n \"chainId\": 6688,\n \"explorers\": [{\n \"name\": \"IRISHub Cosmos Explorer (IOBScan)\",\n \"url\": \"https://irishub.iobscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTKgKs7kJiWDhdjbELE4Y2HVZ36KS4bYkNCbXdsXk66sW\",\n \"width\": 1062,\n \"height\": 1062,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTKgKs7kJiWDhdjbELE4Y2HVZ36KS4bYkNCbXdsXk66sW\",\n \"width\": 1062,\n \"height\": 1062,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.irisnet.org\",\n \"name\": \"IRIShub\",\n \"nativeCurrency\": {\n \"name\": \"Eris\",\n \"symbol\": \"ERIS\",\n \"decimals\": 18\n },\n \"networkId\": 6688,\n \"rpc\": [\"https://irishub.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6688.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmrpc.irishub-1.irisnet.org\", \"https://iris-evm.publicnode.com\", \"wss://iris-evm.publicnode.com\"],\n \"shortName\": \"iris\",\n \"slug\": \"irishub\",\n \"testnet\": false\n};\n\nvar c6789 = {\n \"chain\": \"STAND\",\n \"chainId\": 6789,\n \"explorers\": [{\n \"name\": \"Gold Smart Chain\",\n \"url\": \"https://mainnet.goldsmartchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.goldsmartchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmPNuymyaKLJhCaXnyrsL8358FeTxabZFsaxMmWNU4Tzt3\",\n \"width\": 396,\n \"height\": 418,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://goldsmartchain.com\",\n \"name\": \"Gold Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Standard in Gold\",\n \"symbol\": \"STAND\",\n \"decimals\": 18\n },\n \"networkId\": 6789,\n \"rpc\": [\"https://gold-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6789.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.goldsmartchain.com\"],\n \"shortName\": \"STANDm\",\n \"slug\": \"gold-smart-chain\",\n \"testnet\": false\n};\n\nvar c6969 = {\n \"chain\": \"Tomb Chain\",\n \"chainId\": 6969,\n \"explorers\": [{\n \"name\": \"tombscout\",\n \"url\": \"https://tombscout.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://tombchain.com/\",\n \"name\": \"Tomb Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Tomb\",\n \"symbol\": \"TOMB\",\n \"decimals\": 18\n },\n \"networkId\": 6969,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-250\",\n \"bridges\": [{\n \"url\": \"https://lif3.com/bridge\"\n }]\n },\n \"rpc\": [\"https://tomb-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6969.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tombchain.com/\"],\n \"shortName\": \"tombchain\",\n \"slug\": \"tomb-chain\",\n \"testnet\": false\n};\n\nvar c6999 = {\n \"chain\": \"PSC\",\n \"chainId\": 6999,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.polysmartchain.com/\",\n \"name\": \"PolySmartChain\",\n \"nativeCurrency\": {\n \"name\": \"PSC\",\n \"symbol\": \"PSC\",\n \"decimals\": 18\n },\n \"networkId\": 6999,\n \"rpc\": [\"https://polysmartchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seed0.polysmartchain.com/\", \"https://seed1.polysmartchain.com/\", \"https://seed2.polysmartchain.com/\"],\n \"shortName\": \"psc\",\n \"slug\": \"polysmartchain\",\n \"testnet\": false\n};\n\nvar c7000 = {\n \"chain\": \"ZetaChain\",\n \"chainId\": 7000,\n \"explorers\": [{\n \"name\": \"ZetaChain Mainnet Explorer\",\n \"url\": \"https://explorer.mainnet.zetachain.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmP4Gnf4Lkp8q5LQVePNjAWxSqrw8vU2JAf7amcFz4vEUy\",\n \"width\": 712,\n \"height\": 712,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://zetachain.com/docs/\",\n \"name\": \"ZetaChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Zeta\",\n \"symbol\": \"ZETA\",\n \"decimals\": 18\n },\n \"networkId\": 7000,\n \"rpc\": [\"https://zetachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.mainnet.zetachain.com/evm\"],\n \"shortName\": \"zetachain-mainnet\",\n \"slug\": \"zetachain\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c7001 = {\n \"chain\": \"ZetaChain\",\n \"chainId\": 7001,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://zetachain-athens-3.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"ZetaChain Athens Testnet Explorer\",\n \"url\": \"https://athens3.explorer.zetachain.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://labs.zetachain.com/get-zeta\"],\n \"icon\": {\n \"url\": \"ipfs://QmP4Gnf4Lkp8q5LQVePNjAWxSqrw8vU2JAf7amcFz4vEUy\",\n \"width\": 712,\n \"height\": 712,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://zetachain.com/docs\",\n \"name\": \"ZetaChain Athens 3 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Zeta\",\n \"symbol\": \"ZETA\",\n \"decimals\": 18\n },\n \"networkId\": 7001,\n \"rpc\": [\"https://zetachain-athens-3-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ankr.com/zetachain_evm_athens_testnet\"],\n \"shortName\": \"zetachain-athens\",\n \"slug\": \"zetachain-athens-3-testnet\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c7027 = {\n \"chain\": \"ella\",\n \"chainId\": 7027,\n \"explorers\": [{\n \"name\": \"Ella\",\n \"url\": \"https://ella.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVkAhSaHhH3wKoLT56Aq8dNyEH4RySPEpqPcLwsptGBDm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ella.network\",\n \"name\": \"Ella the heart\",\n \"nativeCurrency\": {\n \"name\": \"Ella\",\n \"symbol\": \"ELLA\",\n \"decimals\": 18\n },\n \"networkId\": 7027,\n \"rpc\": [\"https://ella-the-heart.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7027.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ella.network\"],\n \"shortName\": \"ELLA\",\n \"slug\": \"ella-the-heart\",\n \"testnet\": false\n};\n\nvar c7070 = {\n \"chain\": \"Planq\",\n \"chainId\": 7070,\n \"explorers\": [{\n \"name\": \"Planq EVM Explorer (Blockscout)\",\n \"url\": \"https://evm.planq.network\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Planq Cosmos Explorer (BigDipper)\",\n \"url\": \"https://explorer.planq.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWEy9xK5BoqxPuVs7T48WM4exJrxzkEFt45iHcxWqUy8D\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://planq.network\",\n \"name\": \"Planq Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Planq\",\n \"symbol\": \"PLQ\",\n \"decimals\": 18\n },\n \"networkId\": 7070,\n \"rpc\": [\"https://planq.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7070.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-rpc.planq.network\"],\n \"shortName\": \"planq\",\n \"slug\": \"planq\",\n \"testnet\": false\n};\n\nvar c7171 = {\n \"chain\": \"Bitrock\",\n \"chainId\": 7171,\n \"explorers\": [{\n \"name\": \"Bitrock Explorer\",\n \"url\": \"https://explorer.bit-rock.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfXZCAh3HWS2bJroUStN9TieL4QA9QArMotie3X4pwBfj\",\n \"width\": 72,\n \"height\": 72,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://bit-rock.io\",\n \"name\": \"Bitrock Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BITROCK\",\n \"symbol\": \"BROCK\",\n \"decimals\": 18\n },\n \"networkId\": 7171,\n \"rpc\": [\"https://bitrock.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7171.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.bit-rock.io\", \"https://brockrpc.io\"],\n \"shortName\": \"bitrock\",\n \"slug\": \"bitrock\",\n \"testnet\": false\n};\n\nvar c7331 = {\n \"chain\": \"KLY\",\n \"chainId\": 7331,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmaDr9R6dKnZLsogRxojjq4dwXuXcudR8UeTZ8Nq553K4u\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://klyntar.org\",\n \"name\": \"KLYNTAR\",\n \"nativeCurrency\": {\n \"name\": \"KLYNTAR\",\n \"symbol\": \"KLY\",\n \"decimals\": 18\n },\n \"networkId\": 7331,\n \"rpc\": [\"https://klyntar.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7331.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.klyntar.org/kly_evm_rpc\", \"https://evm.klyntarscan.org/kly_evm_rpc\"],\n \"shortName\": \"kly\",\n \"slug\": \"klyntar\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c7332 = {\n \"chain\": \"EON\",\n \"chainId\": 7332,\n \"explorers\": [{\n \"name\": \"Horizen EON Block Explorer\",\n \"url\": \"https://eon-explorer.horizenlabs.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSFMBk3rMyu45Sy9KQHjgArFj4HdywANNYrSosLMUdcti\",\n \"width\": 1213,\n \"height\": 1213,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSFMBk3rMyu45Sy9KQHjgArFj4HdywANNYrSosLMUdcti\",\n \"width\": 1213,\n \"height\": 1213,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://horizen.io/\",\n \"name\": \"Horizen EON Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Zencash\",\n \"symbol\": \"ZEN\",\n \"decimals\": 18\n },\n \"networkId\": 7332,\n \"rpc\": [\"https://horizen-eon.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7332.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eon-rpc.horizenlabs.io/ethv1\", \"https://rpc.ankr.com/horizen_eon\"],\n \"shortName\": \"EON\",\n \"slip44\": 121,\n \"slug\": \"horizen-eon\",\n \"testnet\": false\n};\n\nvar c7341 = {\n \"chain\": \"SHYFT\",\n \"chainId\": 7341,\n \"explorers\": [{\n \"name\": \"Shyft BX\",\n \"url\": \"https://bx.shyft.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUkFZC2ZmoYPTKf7AHdjwRPZoV2h1MCuHaGM4iu8SNFpi\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://shyft.network\",\n \"name\": \"Shyft Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Shyft\",\n \"symbol\": \"SHYFT\",\n \"decimals\": 18\n },\n \"networkId\": 7341,\n \"rpc\": [\"https://shyft.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7341.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.shyft.network/\"],\n \"shortName\": \"shyft\",\n \"slip44\": 2147490989,\n \"slug\": \"shyft\",\n \"testnet\": false\n};\n\nvar c7484 = {\n \"chain\": \"Raba\",\n \"chainId\": 7484,\n \"explorers\": [{\n \"name\": \"raba\",\n \"url\": \"https://x.raba.app/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmatP9qMHEYoXqRDyHMTyjYRQa6j6Gk7pmv1QLxQkvpGRP\",\n \"width\": 787,\n \"height\": 750,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://x.raba.app/\",\n \"name\": \"Raba Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Raba\",\n \"symbol\": \"RABA\",\n \"decimals\": 18\n },\n \"networkId\": 7484,\n \"rpc\": [\"https://raba-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7484.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.x.raba.app/\", \"wss://rpc.x.raba.app/ws/\"],\n \"shortName\": \"raba\",\n \"slug\": \"raba-network\",\n \"testnet\": false\n};\n\nvar c7518 = {\n \"chain\": \"MEVerse\",\n \"chainId\": 7518,\n \"explorers\": [{\n \"name\": \"MEVerse Chain Explorer\",\n \"url\": \"https://www.meversescan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPuQ6gaCfUtNdRuaEDbdhot2m2KCy2ZHCJUvZXJAtdeyJ\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPuQ6gaCfUtNdRuaEDbdhot2m2KCy2ZHCJUvZXJAtdeyJ\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.meverse.sg\",\n \"name\": \"MEVerse Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MEVerse\",\n \"symbol\": \"MEV\",\n \"decimals\": 18\n },\n \"networkId\": 7518,\n \"rpc\": [\"https://meverse-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7518.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.meversemainnet.io\"],\n \"shortName\": \"MEV\",\n \"slug\": \"meverse-chain\",\n \"testnet\": false\n};\n\nvar c7575 = {\n \"chain\": \"ADIL\",\n \"chainId\": 7575,\n \"explorers\": [{\n \"name\": \"ADIL Testnet Explorer\",\n \"url\": \"https://testnet.adilchain-scan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet-faucet.adil-scan.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmeHNYUx6n8CjUFSLWNT17oAtDYrUq6r8buyvGCUBXCJw6\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://adilchain.io\",\n \"name\": \"ADIL Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet ADIL\",\n \"symbol\": \"ADIL\",\n \"decimals\": 18\n },\n \"networkId\": 7575,\n \"rpc\": [\"https://adil-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7575.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.adilchain-rpc.io\"],\n \"shortName\": \"tadil\",\n \"slug\": \"adil-testnet\",\n \"testnet\": true\n};\n\nvar c7576 = {\n \"chain\": \"ADIL\",\n \"chainId\": 7576,\n \"explorers\": [{\n \"name\": \"ADIL Mainnet Explorer\",\n \"url\": \"https://adilchain-scan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeHNYUx6n8CjUFSLWNT17oAtDYrUq6r8buyvGCUBXCJw6\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://adilchain.io\",\n \"name\": \"Adil Chain V2 Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ADIL\",\n \"symbol\": \"ADIL\",\n \"decimals\": 18\n },\n \"networkId\": 7576,\n \"rpc\": [\"https://adil-chain-v2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7576.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://adilchain-rpc.io\"],\n \"shortName\": \"adil\",\n \"slug\": \"adil-chain-v2\",\n \"testnet\": false\n};\n\nvar c7668 = {\n \"chain\": \"TRN\",\n \"chainId\": 7668,\n \"explorers\": [{\n \"name\": \"rootnet\",\n \"url\": \"https://explorer.rootnet.live\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.futureverse.com/technology/root\",\n \"name\": \"The Root Network - Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"XRP\",\n \"symbol\": \"XRP\",\n \"decimals\": 6\n },\n \"networkId\": 7668,\n \"rpc\": [\"https://the-root-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7668.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://root.rootnet.live/archive\", \"wss://root.rootnet.live/archive/ws\"],\n \"shortName\": \"trn-mainnet\",\n \"slug\": \"the-root-network\",\n \"testnet\": false\n};\n\nvar c7672 = {\n \"chain\": \"TRN\",\n \"chainId\": 7672,\n \"explorers\": [{\n \"name\": \"rootnet\",\n \"url\": \"https://explorer.rootnet.cloud\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.futureverse.com/technology/root\",\n \"name\": \"The Root Network - Porcini Testnet\",\n \"nativeCurrency\": {\n \"name\": \"XRP\",\n \"symbol\": \"XRP\",\n \"decimals\": 6\n },\n \"networkId\": 7672,\n \"rpc\": [\"https://the-root-network-porcini-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7672.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://porcini.rootnet.app/archive\", \"wss://porcini.rootnet.app/archive/ws\"],\n \"shortName\": \"trn-porcini\",\n \"slug\": \"the-root-network-porcini-testnet\",\n \"testnet\": true\n};\n\nvar c7700 = {\n \"chain\": \"Canto\",\n \"chainId\": 7700,\n \"explorers\": [{\n \"name\": \"Canto EVM Explorer (Blockscout)\",\n \"url\": \"https://evm.explorer.canto.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Canto Cosmos Explorer\",\n \"url\": \"https://cosmos-explorers.neobase.one\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Canto EVM Explorer (Blockscout)\",\n \"url\": \"https://tuber.build\",\n \"standard\": \"none\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://canto.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://canto.io\",\n \"name\": \"Canto\",\n \"nativeCurrency\": {\n \"name\": \"Canto\",\n \"symbol\": \"CANTO\",\n \"decimals\": 18\n },\n \"networkId\": 7700,\n \"rpc\": [\"https://canto.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7700.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://canto.slingshot.finance\", \"https://canto.neobase.one\", \"https://mainnode.plexnode.org:8545\", \"https://canto.gravitychain.io/\", \"https://canto.evm.chandrastation.com/\", \"https://jsonrpc.canto.nodestake.top/\", \"https://canto.dexvaults.com/\", \"wss://canto.gravitychain.io:8546\", \"wss://canto.dexvaults.com/ws\"],\n \"shortName\": \"canto\",\n \"slug\": \"canto\",\n \"testnet\": false\n};\n\nvar c7701 = {\n \"chain\": \"Canto\",\n \"chainId\": 7701,\n \"explorers\": [{\n \"name\": \"Canto Testnet EVM Explorer (Blockscout)\",\n \"url\": \"https://testnet.tuber.build\",\n \"standard\": \"none\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://canto-test.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://canto.io\",\n \"name\": \"Canto Tesnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Canto\",\n \"symbol\": \"CANTO\",\n \"decimals\": 18\n },\n \"networkId\": 7701,\n \"rpc\": [\"https://canto-tesnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7701.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-archive.plexnode.wtf\"],\n \"shortName\": \"TestnetCanto\",\n \"slug\": \"canto-tesnet\",\n \"testnet\": true\n};\n\nvar c7771 = {\n \"chain\": \"Bitrock\",\n \"chainId\": 7771,\n \"explorers\": [{\n \"name\": \"Bitrock Testnet Explorer\",\n \"url\": \"https://testnetscan.bit-rock.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bit-rock.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmfXZCAh3HWS2bJroUStN9TieL4QA9QArMotie3X4pwBfj\",\n \"width\": 72,\n \"height\": 72,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://bit-rock.io\",\n \"name\": \"Bitrock Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BITROCK\",\n \"symbol\": \"BROCK\",\n \"decimals\": 18\n },\n \"networkId\": 7771,\n \"rpc\": [\"https://bitrock-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7771.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bit-rock.io\"],\n \"shortName\": \"tbitrock\",\n \"slug\": \"bitrock-testnet\",\n \"testnet\": true\n};\n\nvar c7777 = {\n \"chain\": \"nmactest\",\n \"chainId\": 7777,\n \"explorers\": [{\n \"name\": \"avascan\",\n \"url\": \"https://testnet.avascan.info/blockchain/2mZ9doojfwHzXN3VXDQELKnKyZYxv7833U8Yq5eTfFx3hxJtiy\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://riseofthewarbots.com/\",\n \"name\": \"Rise of the Warbots Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Nano Machines\",\n \"symbol\": \"NMAC\",\n \"decimals\": 18\n },\n \"networkId\": 7777,\n \"rpc\": [\"https://rise-of-the-warbots-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet1.riseofthewarbots.com\", \"https://testnet2.riseofthewarbots.com\", \"https://testnet3.riseofthewarbots.com\", \"https://testnet4.riseofthewarbots.com\", \"https://testnet5.riseofthewarbots.com\"],\n \"shortName\": \"RiseOfTheWarbotsTestnet\",\n \"slug\": \"rise-of-the-warbots-testnet\",\n \"testnet\": true\n};\n\nvar c7860 = {\n \"chain\": \"MaalChain Testnet\",\n \"chainId\": 7860,\n \"explorers\": [{\n \"name\": \"maalscan testnet\",\n \"url\": \"https://testnet.maalscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-testnet.maalscan.io/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiexfqfe2x4impvwhra3xxa5eb25gv25zi3kkaoatdnld7wbxdzf2a\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.maalchain.com/\",\n \"name\": \"MaalChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MAAL\",\n \"symbol\": \"MAAL\",\n \"decimals\": 18\n },\n \"networkId\": 7860,\n \"rpc\": [\"https://maalchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7860.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.maalscan.io/\", \"https://rpc-bntest.maalscan.io/\"],\n \"shortName\": \"maal-test\",\n \"slug\": \"maalchain-testnet\",\n \"testnet\": true\n};\n\nvar c7878 = {\n \"chain\": \"SCAS\",\n \"chainId\": 7878,\n \"explorers\": [{\n \"name\": \"Hazlor Testnet Explorer\",\n \"url\": \"https://explorer.hazlor.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.hazlor.com\"],\n \"infoURL\": \"https://hazlor.com\",\n \"name\": \"Hazlor Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Hazlor Test Coin\",\n \"symbol\": \"TSCAS\",\n \"decimals\": 18\n },\n \"networkId\": 7878,\n \"rpc\": [\"https://hazlor-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7878.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://hatlas.rpc.hazlor.com:8545\", \"wss://hatlas.rpc.hazlor.com:8546\"],\n \"shortName\": \"tscas\",\n \"slug\": \"hazlor-testnet\",\n \"testnet\": true\n};\n\nvar c7895 = {\n \"chain\": \"ATHENA\",\n \"chainId\": 7895,\n \"explorers\": [{\n \"name\": \"ARDENIUM Athena Explorer\",\n \"url\": \"https://testnet.ardscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdwifhejRfF8QfyzYrNdFVhfhCR6iuzWMmppK4eL7kttG\",\n \"width\": 120,\n \"height\": 120,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-athena.ardescan.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmdwifhejRfF8QfyzYrNdFVhfhCR6iuzWMmppK4eL7kttG\",\n \"width\": 120,\n \"height\": 120,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ardenium.org\",\n \"name\": \"ARDENIUM Athena\",\n \"nativeCurrency\": {\n \"name\": \"ARD\",\n \"symbol\": \"tARD\",\n \"decimals\": 18\n },\n \"networkId\": 7895,\n \"rpc\": [\"https://ardenium-athena.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7895.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-athena.ardescan.com/\"],\n \"shortName\": \"ard\",\n \"slug\": \"ardenium-athena\",\n \"testnet\": true\n};\n\nvar c7979 = {\n \"chain\": \"DOS\",\n \"chainId\": 7979,\n \"explorers\": [{\n \"name\": \"DOScan\",\n \"url\": \"https://doscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"DOScan\",\n \"url\": \"https://explorer.doschain.com/\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://doschain.com/\",\n \"name\": \"DOS Chain\",\n \"nativeCurrency\": {\n \"name\": \"DOS\",\n \"symbol\": \"DOS\",\n \"decimals\": 18\n },\n \"networkId\": 7979,\n \"redFlags\": [],\n \"rpc\": [\"https://dos-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7979.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://main.doschain.com\"],\n \"shortName\": \"dos\",\n \"slug\": \"dos-chain\",\n \"testnet\": false\n};\n\nvar c8000 = {\n \"chain\": \"Teleport\",\n \"chainId\": 8000,\n \"explorers\": [{\n \"name\": \"Teleport EVM Explorer (Blockscout)\",\n \"url\": \"https://evm-explorer.teleport.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n }\n }, {\n \"name\": \"Teleport Cosmos Explorer (Big Dipper)\",\n \"url\": \"https://explorer.teleport.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://teleport.network\",\n \"name\": \"Teleport\",\n \"nativeCurrency\": {\n \"name\": \"Tele\",\n \"symbol\": \"TELE\",\n \"decimals\": 18\n },\n \"networkId\": 8000,\n \"rpc\": [\"https://teleport.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-rpc.teleport.network\"],\n \"shortName\": \"teleport\",\n \"slug\": \"teleport\",\n \"testnet\": false\n};\n\nvar c8001 = {\n \"chain\": \"Teleport\",\n \"chainId\": 8001,\n \"explorers\": [{\n \"name\": \"Teleport EVM Explorer (Blockscout)\",\n \"url\": \"https://evm-explorer.testnet.teleport.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n }\n }, {\n \"name\": \"Teleport Cosmos Explorer (Big Dipper)\",\n \"url\": \"https://explorer.testnet.teleport.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://chain-docs.teleport.network/testnet/faucet.html\"],\n \"icon\": {\n \"url\": \"ipfs://QmdP1sLnsmW9dwnfb1GxAXU1nHDzCvWBQNumvMXpdbCSuz\",\n \"width\": 390,\n \"height\": 390,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://teleport.network\",\n \"name\": \"Teleport Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Tele\",\n \"symbol\": \"TELE\",\n \"decimals\": 18\n },\n \"networkId\": 8001,\n \"rpc\": [\"https://teleport-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-rpc.testnet.teleport.network\"],\n \"shortName\": \"teleport-testnet\",\n \"slug\": \"teleport-testnet\",\n \"testnet\": true\n};\n\nvar c8029 = {\n \"chain\": \"MDGL\",\n \"chainId\": 8029,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://mdgl.io\",\n \"name\": \"MDGL Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MDGL Token\",\n \"symbol\": \"MDGLT\",\n \"decimals\": 18\n },\n \"networkId\": 8029,\n \"rpc\": [\"https://mdgl-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8029.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.mdgl.io\"],\n \"shortName\": \"mdgl\",\n \"slug\": \"mdgl-testnet\",\n \"testnet\": true\n};\n\nvar c8080 = {\n \"chain\": \"Shardeum\",\n \"chainId\": 8080,\n \"explorers\": [{\n \"name\": \"Shardeum Scan\",\n \"url\": \"https://explorer-liberty10.shardeum.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.liberty10.shardeum.org\"],\n \"icon\": {\n \"url\": \"ipfs://Qma1bfuubpepKn7DLDy4NPSKDeT3S4VPCNhu6UmdGrb6YD\",\n \"width\": 609,\n \"height\": 533,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.shardeum.org/\",\n \"name\": \"Shardeum Liberty 1.X\",\n \"nativeCurrency\": {\n \"name\": \"Shardeum SHM\",\n \"symbol\": \"SHM\",\n \"decimals\": 18\n },\n \"networkId\": 8080,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://shardeum-liberty-1-x.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8080.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://liberty10.shardeum.org/\"],\n \"shortName\": \"Liberty10\",\n \"slug\": \"shardeum-liberty-1-x\",\n \"testnet\": false\n};\n\nvar c8081 = {\n \"chain\": \"Shardeum\",\n \"chainId\": 8081,\n \"explorers\": [{\n \"name\": \"Shardeum Scan\",\n \"url\": \"https://explorer-liberty20.shardeum.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.liberty20.shardeum.org\"],\n \"icon\": {\n \"url\": \"ipfs://Qma1bfuubpepKn7DLDy4NPSKDeT3S4VPCNhu6UmdGrb6YD\",\n \"width\": 609,\n \"height\": 533,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.shardeum.org/\",\n \"name\": \"Shardeum Liberty 2.X\",\n \"nativeCurrency\": {\n \"name\": \"Shardeum SHM\",\n \"symbol\": \"SHM\",\n \"decimals\": 18\n },\n \"networkId\": 8081,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://shardeum-liberty-2-x.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8081.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://liberty20.shardeum.org/\"],\n \"shortName\": \"Liberty20\",\n \"slug\": \"shardeum-liberty-2-x\",\n \"testnet\": false\n};\n\nvar c8082 = {\n \"chain\": \"Shardeum\",\n \"chainId\": 8082,\n \"explorers\": [{\n \"name\": \"Shardeum Scan\",\n \"url\": \"https://explorer-sphinx.shardeum.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet-sphinx.shardeum.org/\"],\n \"icon\": {\n \"url\": \"ipfs://Qma1bfuubpepKn7DLDy4NPSKDeT3S4VPCNhu6UmdGrb6YD\",\n \"width\": 609,\n \"height\": 533,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.shardeum.org/\",\n \"name\": \"Shardeum Sphinx 1.X\",\n \"nativeCurrency\": {\n \"name\": \"Shardeum SHM\",\n \"symbol\": \"SHM\",\n \"decimals\": 18\n },\n \"networkId\": 8082,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://shardeum-sphinx-1-x.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8082.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sphinx.shardeum.org/\"],\n \"shortName\": \"Sphinx10\",\n \"slug\": \"shardeum-sphinx-1-x\",\n \"testnet\": false\n};\n\nvar c8086 = {\n \"chain\": \"BTE\",\n \"chainId\": 8086,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://biteth.org\",\n \"name\": \"BitEth\",\n \"nativeCurrency\": {\n \"name\": \"BitEth\",\n \"symbol\": \"BTE\",\n \"decimals\": 18\n },\n \"networkId\": 8086,\n \"rpc\": [\"https://biteth.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8086.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.biteth.org\"],\n \"shortName\": \"BitEth\",\n \"slug\": \"biteth\",\n \"testnet\": false\n};\n\nvar c8098 = {\n \"chain\": \"StreamuX\",\n \"chainId\": 8098,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.streamux.cloud\",\n \"name\": \"StreamuX Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"StreamuX\",\n \"symbol\": \"SmuX\",\n \"decimals\": 18\n },\n \"networkId\": 8098,\n \"rpc\": [\"https://streamux-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8098.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://u0ma6t6heb:KDNwOsRDGcyM2Oeui1p431Bteb4rvcWkuPgQNHwB4FM@u0xy4x6x82-u0e2mg517m-rpc.us0-aws.kaleido.io/\"],\n \"shortName\": \"StreamuX\",\n \"slug\": \"streamux-blockchain\",\n \"testnet\": false\n};\n\nvar c8131 = {\n \"chain\": \"MEER\",\n \"chainId\": 8131,\n \"explorers\": [{\n \"name\": \"meerscan testnet\",\n \"url\": \"https://qng-testnet.meerscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.qitmeer.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Qitmeer Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Qitmeer Testnet\",\n \"symbol\": \"MEER-T\",\n \"decimals\": 18\n },\n \"networkId\": 8131,\n \"rpc\": [\"https://qitmeer-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8131.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-qng.rpc.qitmeer.io\", \"https://testnet.meerlabs.com\", \"https://meer.testnet.meerfans.club\"],\n \"shortName\": \"meertest\",\n \"slug\": \"qitmeer-network-testnet\",\n \"testnet\": true\n};\n\nvar c8132 = {\n \"chain\": \"MEER\",\n \"chainId\": 8132,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Qitmeer Network Mixnet\",\n \"nativeCurrency\": {\n \"name\": \"Qitmeer Mixnet\",\n \"symbol\": \"MEER-M\",\n \"decimals\": 18\n },\n \"networkId\": 8132,\n \"rpc\": [],\n \"shortName\": \"meermix\",\n \"slug\": \"qitmeer-network-mixnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c8133 = {\n \"chain\": \"MEER\",\n \"chainId\": 8133,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Qitmeer Network Privnet\",\n \"nativeCurrency\": {\n \"name\": \"Qitmeer Privnet\",\n \"symbol\": \"MEER-P\",\n \"decimals\": 18\n },\n \"networkId\": 8133,\n \"rpc\": [],\n \"shortName\": \"meerpriv\",\n \"slug\": \"qitmeer-network-privnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c8134 = {\n \"chain\": \"MEER\",\n \"chainId\": 8134,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Amana\",\n \"nativeCurrency\": {\n \"name\": \"Amana Mainnet\",\n \"symbol\": \"MEER\",\n \"decimals\": 18\n },\n \"networkId\": 8134,\n \"rpc\": [],\n \"shortName\": \"amana\",\n \"slug\": \"amana\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c8135 = {\n \"chain\": \"MEER\",\n \"chainId\": 8135,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Flana\",\n \"nativeCurrency\": {\n \"name\": \"Flana Mainnet\",\n \"symbol\": \"MEER\",\n \"decimals\": 18\n },\n \"networkId\": 8135,\n \"rpc\": [],\n \"shortName\": \"flana\",\n \"slug\": \"flana\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c8136 = {\n \"chain\": \"MEER\",\n \"chainId\": 8136,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Mizana\",\n \"nativeCurrency\": {\n \"name\": \"Mizana Mainnet\",\n \"symbol\": \"MEER\",\n \"decimals\": 18\n },\n \"networkId\": 8136,\n \"rpc\": [],\n \"shortName\": \"mizana\",\n \"slug\": \"mizana\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c8181 = {\n \"chain\": \"tBOC\",\n \"chainId\": 8181,\n \"explorers\": [{\n \"name\": \"Testnet BeOne Chain\",\n \"url\": \"https://testnet.beonescan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmbVLQnaMDu86bPyKgCvTGhFBeYwjr15hQnrCcsp1EkAGL\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://testnet.beonescan.com/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmbVLQnaMDu86bPyKgCvTGhFBeYwjr15hQnrCcsp1EkAGL\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://testnet.beonescan.com\",\n \"name\": \"Testnet BeOne Chain\",\n \"nativeCurrency\": {\n \"name\": \"Testnet BeOne Chain\",\n \"symbol\": \"tBOC\",\n \"decimals\": 18\n },\n \"networkId\": 8181,\n \"rpc\": [\"https://testnet-beone-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8181.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pre-boc1.beonechain.com\"],\n \"shortName\": \"tBOC\",\n \"slug\": \"testnet-beone-chain\",\n \"testnet\": true\n};\n\nvar c8192 = {\n \"chain\": \"TQF\",\n \"chainId\": 8192,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://toruscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidchntjaxmq52cuqqoalpajk5ssk4p77k7n4jgywqmkpldo5qgobm\",\n \"width\": 1200,\n \"height\": 1200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.toruschain.com\",\n \"name\": \"Torus Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TQF\",\n \"symbol\": \"TQF\",\n \"decimals\": 18\n },\n \"networkId\": 8192,\n \"rpc\": [\"https://torus.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8192.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.toruschain.com\"],\n \"shortName\": \"tqf\",\n \"slug\": \"torus\",\n \"testnet\": false\n};\n\nvar c8194 = {\n \"chain\": \"TQF\",\n \"chainId\": 8194,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet.toruscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidchntjaxmq52cuqqoalpajk5ssk4p77k7n4jgywqmkpldo5qgobm\",\n \"width\": 1200,\n \"height\": 1200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.toruschain.com\",\n \"name\": \"Torus Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tTQF\",\n \"symbol\": \"TTQF\",\n \"decimals\": 18\n },\n \"networkId\": 8194,\n \"rpc\": [\"https://torus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8194.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.toruschain.com\"],\n \"shortName\": \"ttqf\",\n \"slug\": \"torus-testnet\",\n \"testnet\": true\n};\n\nvar c8217 = {\n \"chain\": \"KLAY\",\n \"chainId\": 8217,\n \"explorers\": [{\n \"name\": \"Klaytnscope\",\n \"url\": \"https://scope.klaytn.com\",\n \"standard\": \"none\"\n }, {\n \"name\": \"klaytnfinder\",\n \"url\": \"https://www.klaytnfinder.io/\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigtgdivlmfvf7trqjqy4vkz2d26xk3iif6av265v4klu5qavsugm4\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.klaytn.com/\",\n \"name\": \"Klaytn Mainnet Cypress\",\n \"nativeCurrency\": {\n \"name\": \"KLAY\",\n \"symbol\": \"KLAY\",\n \"decimals\": 18\n },\n \"networkId\": 8217,\n \"redFlags\": [],\n \"rpc\": [\"https://klaytn-cypress.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8217.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://public-en-cypress.klaytn.net\", \"https://klaytn-mainnet-rpc.allthatnode.com:8551\", \"https://klaytn.blockpi.network/v1/rpc/public\", \"https://public-node-api.klaytnapi.com/v1/cypress\"],\n \"shortName\": \"Cypress\",\n \"slip44\": 8217,\n \"slug\": \"klaytn-cypress\",\n \"testnet\": false\n};\n\nvar c8272 = {\n \"chain\": \"Blockton Blockchain\",\n \"chainId\": 8272,\n \"explorers\": [{\n \"name\": \"Blockton Explorer\",\n \"url\": \"https://blocktonscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.blocktonscan.com/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreig3hoedafisrgc6iffdo2jcblm6kov35h72gcblc3zkmt7t4ucwhy\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://blocktoncoin.com\",\n \"name\": \"Blockton Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"BLOCKTON\",\n \"symbol\": \"BTON\",\n \"decimals\": 18\n },\n \"networkId\": 8272,\n \"rpc\": [\"https://blockton-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8272.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.blocktonscan.com/\"],\n \"shortName\": \"BTON\",\n \"slug\": \"blockton-blockchain\",\n \"testnet\": false\n};\n\nvar c8285 = {\n \"chain\": \"Kortho\",\n \"chainId\": 8285,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.kortho.io/\",\n \"name\": \"KorthoTest\",\n \"nativeCurrency\": {\n \"name\": \"Kortho Test\",\n \"symbol\": \"KTO\",\n \"decimals\": 11\n },\n \"networkId\": 8285,\n \"rpc\": [\"https://korthotest.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8285.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.krotho-test.net\"],\n \"shortName\": \"Kortho\",\n \"slug\": \"korthotest\",\n \"testnet\": true\n};\n\nvar c8387 = {\n \"chain\": \"FUCK\",\n \"chainId\": 8387,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeibpyckp65pqjvrvqhdt26wqoqk55m6anshbfgyqnaemn6l34nlwya\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://wolfery.com\",\n \"name\": \"Dracones Financial Services\",\n \"nativeCurrency\": {\n \"name\": \"Functionally Universal Coin Kind\",\n \"symbol\": \"FUCK\",\n \"decimals\": 18\n },\n \"networkId\": 8387,\n \"rpc\": [\"https://dracones-financial-services.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8387.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.dracones.net/\"],\n \"shortName\": \"fuck\",\n \"slug\": \"dracones-financial-services\",\n \"testnet\": false,\n \"title\": \"The Dracones Mainnet\"\n};\n\nvar c8453 = {\n \"chain\": \"ETH\",\n \"chainId\": 8453,\n \"explorers\": [{\n \"name\": \"basescan\",\n \"url\": \"https://basescan.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"basescout\",\n \"url\": \"https://base.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://base.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW5Vn15HeRkScMfPcW12ZdZcC2yUASpu6eCsECRdEmjjj/base-512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://base.org\",\n \"name\": \"Base\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 8453,\n \"redFlags\": [],\n \"rpc\": [\"https://base.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8453.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.base.org/\", \"https://developer-access-mainnet.base.org/\", \"https://base.gateway.tenderly.co\", \"wss://base.gateway.tenderly.co\", \"https://base.publicnode.com\", \"wss://base.publicnode.com\"],\n \"shortName\": \"base\",\n \"slug\": \"base\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c8654 = {\n \"chain\": \"TOKI\",\n \"chainId\": 8654,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbCBBH4dFHGr8u1yQspCieQG9hLcPFNYdRx1wnVsX8hUw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.buildwithtoki.com\",\n \"name\": \"Toki Network\",\n \"nativeCurrency\": {\n \"name\": \"Toki\",\n \"symbol\": \"TOKI\",\n \"decimals\": 18\n },\n \"networkId\": 8654,\n \"rpc\": [\"https://toki-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8654.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.buildwithtoki.com/v0/rpc\"],\n \"shortName\": \"toki\",\n \"slug\": \"toki-network\",\n \"testnet\": false\n};\n\nvar c8655 = {\n \"chain\": \"TOKI\",\n \"chainId\": 8655,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbCBBH4dFHGr8u1yQspCieQG9hLcPFNYdRx1wnVsX8hUw\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.buildwithtoki.com\",\n \"name\": \"Toki Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Toki\",\n \"symbol\": \"TOKI\",\n \"decimals\": 18\n },\n \"networkId\": 8655,\n \"rpc\": [\"https://toki-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8655.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.buildwithtoki.com/v0/rpc\"],\n \"shortName\": \"toki-testnet\",\n \"slug\": \"toki-testnet\",\n \"testnet\": true\n};\n\nvar c8668 = {\n \"chain\": \"Hela\",\n \"chainId\": 8668,\n \"explorers\": [{\n \"name\": \"Hela Official Runtime Mainnet Explorer\",\n \"url\": \"https://mainnet-blockexplorer.helachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQbUVcaxFwY8gqMq1Jeup4NEyivo12QYhbLvVRvgXRBFb\",\n \"width\": 719,\n \"height\": 216,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://helalabs.com\",\n \"name\": \"Hela Official Runtime Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Hela HLUSD\",\n \"symbol\": \"HLUSD\",\n \"decimals\": 18\n },\n \"networkId\": 8668,\n \"rpc\": [\"https://hela-official-runtime.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8668.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.helachain.com\"],\n \"shortName\": \"hela\",\n \"slug\": \"hela-official-runtime\",\n \"testnet\": false\n};\n\nvar c8723 = {\n \"chain\": \"OLO\",\n \"chainId\": 8723,\n \"explorers\": [{\n \"name\": \"OLO Block Explorer\",\n \"url\": \"https://www.olo.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ibdt.io\",\n \"name\": \"TOOL Global Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TOOL Global\",\n \"symbol\": \"OLO\",\n \"decimals\": 18\n },\n \"networkId\": 8723,\n \"rpc\": [\"https://tool-global.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8723.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-web3.wolot.io\"],\n \"shortName\": \"olo\",\n \"slip44\": 479,\n \"slug\": \"tool-global\",\n \"testnet\": false\n};\n\nvar c8724 = {\n \"chain\": \"OLO\",\n \"chainId\": 8724,\n \"explorers\": [],\n \"faucets\": [\"https://testnet-explorer.wolot.io\"],\n \"infoURL\": \"https://testnet-explorer.wolot.io\",\n \"name\": \"TOOL Global Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TOOL Global\",\n \"symbol\": \"OLO\",\n \"decimals\": 18\n },\n \"networkId\": 8724,\n \"rpc\": [\"https://tool-global-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8724.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-web3.wolot.io\"],\n \"shortName\": \"tolo\",\n \"slip44\": 479,\n \"slug\": \"tool-global-testnet\",\n \"testnet\": true\n};\n\nvar c8738 = {\n \"chain\": \"ALPH\",\n \"chainId\": 8738,\n \"explorers\": [{\n \"name\": \"alphscan\",\n \"url\": \"https://explorer.alph.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://alph.network\",\n \"name\": \"Alph Network\",\n \"nativeCurrency\": {\n \"name\": \"Alph Network\",\n \"symbol\": \"ALPH\",\n \"decimals\": 18\n },\n \"networkId\": 8738,\n \"rpc\": [\"https://alph-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8738.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.alph.network\", \"wss://rpc.alph.network\"],\n \"shortName\": \"alph\",\n \"slug\": \"alph-network\",\n \"testnet\": false\n};\n\nvar c8768 = {\n \"chain\": \"TMY\",\n \"chainId\": 8768,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.tmychain.org/\"],\n \"icon\": {\n \"url\": \"ipfs://Qmcd19ksUvNMD1XQFSC55jJhDPoF2zUzzV7woteFiugwBH\",\n \"width\": 1024,\n \"height\": 1023,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://tmychain.org/\",\n \"name\": \"TMY Chain\",\n \"nativeCurrency\": {\n \"name\": \"TMY\",\n \"symbol\": \"TMY\",\n \"decimals\": 18\n },\n \"networkId\": 8768,\n \"rpc\": [\"https://tmy-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8768.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.tmyblockchain.org/rpc\"],\n \"shortName\": \"tmy\",\n \"slug\": \"tmy-chain\",\n \"testnet\": false\n};\n\nvar c8848 = {\n \"chain\": \"MARO Blockchain\",\n \"chainId\": 8848,\n \"explorers\": [{\n \"name\": \"MARO Scan\",\n \"url\": \"https://scan.ma.ro/#\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreig47k53aipns6nu3u5fxpysp7mogzk6zyvatgpbam7yut3yvtuefa\",\n \"width\": 160,\n \"height\": 160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ma.ro/\",\n \"name\": \"MARO Blockchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MARO\",\n \"symbol\": \"MARO\",\n \"decimals\": 18\n },\n \"networkId\": 8848,\n \"rpc\": [\"https://maro-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8848.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.ma.ro\"],\n \"shortName\": \"maro\",\n \"slug\": \"maro-blockchain\",\n \"testnet\": false\n};\n\nvar c8880 = {\n \"chain\": \"UNQ\",\n \"chainId\": 8880,\n \"explorers\": [{\n \"name\": \"Unique Scan\",\n \"url\": \"https://uniquescan.io/unique\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmbJ7CGZ2GxWMp7s6jy71UGzRsMe4w3KANKXDAExYWdaFR\",\n \"width\": 48,\n \"height\": 48,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://unique.network\",\n \"name\": \"Unique\",\n \"nativeCurrency\": {\n \"name\": \"Unique\",\n \"symbol\": \"UNQ\",\n \"decimals\": 18\n },\n \"networkId\": 8880,\n \"rpc\": [\"https://unique.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8880.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.unique.network\", \"https://eu-rpc.unique.network\", \"https://asia-rpc.unique.network\", \"https://us-rpc.unique.network\"],\n \"shortName\": \"unq\",\n \"slug\": \"unique\",\n \"testnet\": false\n};\n\nvar c8881 = {\n \"chain\": \"UNQ\",\n \"chainId\": 8881,\n \"explorers\": [{\n \"name\": \"Unique Scan / Quartz\",\n \"url\": \"https://uniquescan.io/quartz\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaGPdccULQEFcCGxzstnmE8THfac2kSiGwvWRAiaRq4dp\",\n \"width\": 48,\n \"height\": 48,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://unique.network\",\n \"name\": \"Quartz by Unique\",\n \"nativeCurrency\": {\n \"name\": \"Quartz\",\n \"symbol\": \"QTZ\",\n \"decimals\": 18\n },\n \"networkId\": 8881,\n \"rpc\": [\"https://quartz-by-unique.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8881.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-quartz.unique.network\", \"https://quartz.api.onfinality.io/public-ws\", \"https://eu-rpc-quartz.unique.network\", \"https://asia-rpc-quartz.unique.network\", \"https://us-rpc-quartz.unique.network\"],\n \"shortName\": \"qtz\",\n \"slug\": \"quartz-by-unique\",\n \"testnet\": false\n};\n\nvar c8882 = {\n \"chain\": \"UNQ\",\n \"chainId\": 8882,\n \"explorers\": [{\n \"name\": \"Unique Scan / Opal\",\n \"url\": \"https://uniquescan.io/opal\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://t.me/unique2faucet_opal_bot\"],\n \"icon\": {\n \"url\": \"ipfs://QmYJDpmWyjDa3H6BxweFmQXk4fU8b1GU7M9EqYcaUNvXzc\",\n \"width\": 48,\n \"height\": 48,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://unique.network\",\n \"name\": \"Opal testnet by Unique\",\n \"nativeCurrency\": {\n \"name\": \"Opal\",\n \"symbol\": \"UNQ\",\n \"decimals\": 18\n },\n \"networkId\": 8882,\n \"rpc\": [\"https://opal-testnet-by-unique.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8882.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-opal.unique.network\", \"https://us-rpc-opal.unique.network\", \"https://eu-rpc-opal.unique.network\", \"https://asia-rpc-opal.unique.network\"],\n \"shortName\": \"opl\",\n \"slug\": \"opal-testnet-by-unique\",\n \"testnet\": true\n};\n\nvar c8883 = {\n \"chain\": \"UNQ\",\n \"chainId\": 8883,\n \"explorers\": [{\n \"name\": \"Unique Scan / Sapphire\",\n \"url\": \"https://uniquescan.io/sapphire\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmd1PGt4cDRjFbh4ihP5QKEd4XQVwN1MkebYKdF56V74pf\",\n \"width\": 48,\n \"height\": 48,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://unique.network\",\n \"name\": \"Sapphire by Unique\",\n \"nativeCurrency\": {\n \"name\": \"Quartz\",\n \"symbol\": \"QTZ\",\n \"decimals\": 18\n },\n \"networkId\": 8883,\n \"rpc\": [\"https://sapphire-by-unique.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8883.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-sapphire.unique.network\", \"https://us-rpc-sapphire.unique.network\", \"https://eu-rpc-sapphire.unique.network\", \"https://asia-rpc-sapphire.unique.network\"],\n \"shortName\": \"sph\",\n \"slug\": \"sapphire-by-unique\",\n \"testnet\": false\n};\n\nvar c8888 = {\n \"chain\": \"XANAChain\",\n \"chainId\": 8888,\n \"explorers\": [{\n \"name\": \"XANAChain\",\n \"url\": \"https://xanachain.xana.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWGNfwJ9o2vmKD3E6fjrxpbFP8W5q45zmYzHHoXwqqAoj\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xanachain.xana.net/\",\n \"name\": \"XANAChain\",\n \"nativeCurrency\": {\n \"name\": \"XETA\",\n \"symbol\": \"XETA\",\n \"decimals\": 18\n },\n \"networkId\": 8888,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://xanachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.xana.net/rpc\"],\n \"shortName\": \"XANAChain\",\n \"slug\": \"xanachain\",\n \"testnet\": false\n};\n\nvar c8889 = {\n \"chain\": \"VSC\",\n \"chainId\": 8889,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://vsc-dataseed.vyvo.org\",\n \"name\": \"Vyvo Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"VSC\",\n \"symbol\": \"VSC\",\n \"decimals\": 18\n },\n \"networkId\": 8889,\n \"rpc\": [\"https://vyvo-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8889.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://vsc-dataseed.vyvo.org:8889\"],\n \"shortName\": \"vsc\",\n \"slug\": \"vyvo-smart-chain\",\n \"testnet\": false\n};\n\nvar c8898 = {\n \"chain\": \"MMT\",\n \"chainId\": 8898,\n \"explorers\": [{\n \"name\": \"mmtscan\",\n \"url\": \"https://mmtscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmaF5gi2CbDKsJ2UchNkjBqmWjv8JEDP3vePBmxeUHiaK4\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.mmtscan.io/\"],\n \"icon\": {\n \"url\": \"ipfs://QmaF5gi2CbDKsJ2UchNkjBqmWjv8JEDP3vePBmxeUHiaK4\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mmtchain.io/\",\n \"name\": \"Mammoth Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Mammoth Token\",\n \"symbol\": \"MMT\",\n \"decimals\": 18\n },\n \"networkId\": 8898,\n \"rpc\": [\"https://mammoth.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8898.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dataseed.mmtscan.io\", \"https://dataseed1.mmtscan.io\", \"https://dataseed2.mmtscan.io\"],\n \"shortName\": \"mmt\",\n \"slug\": \"mammoth\",\n \"testnet\": false,\n \"title\": \"Mammoth Chain\"\n};\n\nvar c8899 = {\n \"chain\": \"JBC\",\n \"chainId\": 8899,\n \"explorers\": [{\n \"name\": \"JIBCHAIN Explorer\",\n \"url\": \"https://exp-l1.jibchain.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://jibchain.net\",\n \"name\": \"JIBCHAIN L1\",\n \"nativeCurrency\": {\n \"name\": \"JIBCOIN\",\n \"symbol\": \"JBC\",\n \"decimals\": 18\n },\n \"networkId\": 8899,\n \"rpc\": [\"https://jibchain-l1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8899.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-l1.jibchain.net\", \"https://jib-rpc.inan.in.th\"],\n \"shortName\": \"jbc\",\n \"slug\": \"jibchain-l1\",\n \"testnet\": false\n};\n\nvar c8989 = {\n \"chain\": \"GMMT\",\n \"chainId\": 8989,\n \"explorers\": [{\n \"name\": \"gmmtscan\",\n \"url\": \"https://scan.gmmtchain.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVth4aPeskDTFqRifUugJx6gyEHCmx2PFbMWUtsCSQFkF\",\n \"width\": 468,\n \"height\": 518,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVth4aPeskDTFqRifUugJx6gyEHCmx2PFbMWUtsCSQFkF\",\n \"width\": 468,\n \"height\": 518,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gmmtchain.io/\",\n \"name\": \"Giant Mammoth Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Giant Mammoth Coin\",\n \"symbol\": \"GMMT\",\n \"decimals\": 18\n },\n \"networkId\": 8989,\n \"rpc\": [\"https://giant-mammoth.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8989.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-asia.gmmtchain.io\"],\n \"shortName\": \"gmmt\",\n \"slug\": \"giant-mammoth\",\n \"testnet\": false,\n \"title\": \"Giant Mammoth Chain\"\n};\n\nvar c8995 = {\n \"chain\": \"bloxberg\",\n \"chainId\": 8995,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.bloxberg.org/\"],\n \"infoURL\": \"https://bloxberg.org\",\n \"name\": \"bloxberg\",\n \"nativeCurrency\": {\n \"name\": \"BERG\",\n \"symbol\": \"U+25B3\",\n \"decimals\": 18\n },\n \"networkId\": 8995,\n \"rpc\": [\"https://bloxberg.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8995.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://core.bloxberg.org\"],\n \"shortName\": \"berg\",\n \"slug\": \"bloxberg\",\n \"testnet\": false\n};\n\nvar c9000 = {\n \"chain\": \"Evmos\",\n \"chainId\": 9000,\n \"explorers\": [{\n \"name\": \"Evmos Explorer (Escan)\",\n \"url\": \"https://testnet.escan.live\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmeZW6VKUFTbz7PPW8PmDR3ZHa6osYPLBFPnW8T5LSU49c\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.evmos.dev\"],\n \"icon\": {\n \"url\": \"ipfs://QmeZW6VKUFTbz7PPW8PmDR3ZHa6osYPLBFPnW8T5LSU49c\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://evmos.org\",\n \"name\": \"Evmos Testnet\",\n \"nativeCurrency\": {\n \"name\": \"test-Evmos\",\n \"symbol\": \"tEVMOS\",\n \"decimals\": 18\n },\n \"networkId\": 9000,\n \"rpc\": [\"https://evmos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmos-testnet.lava.build\", \"https://eth.bd.evmos.dev:8545\"],\n \"shortName\": \"evmos-testnet\",\n \"slug\": \"evmos-testnet\",\n \"testnet\": true\n};\n\nvar c9001 = {\n \"chain\": \"Evmos\",\n \"chainId\": 9001,\n \"explorers\": [{\n \"name\": \"Evmos Explorer (Escan)\",\n \"url\": \"https://escan.live\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmeZW6VKUFTbz7PPW8PmDR3ZHa6osYPLBFPnW8T5LSU49c\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeZW6VKUFTbz7PPW8PmDR3ZHa6osYPLBFPnW8T5LSU49c\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://evmos.org\",\n \"name\": \"Evmos\",\n \"nativeCurrency\": {\n \"name\": \"Evmos\",\n \"symbol\": \"EVMOS\",\n \"decimals\": 18\n },\n \"networkId\": 9001,\n \"rpc\": [\"https://evmos.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmos.lava.build\", \"wss://evmos.lava.build/websocket\", \"https://evmos-evm.publicnode.com\", \"wss://evmos-evm.publicnode.com\"],\n \"shortName\": \"evmos\",\n \"slug\": \"evmos\",\n \"testnet\": false\n};\n\nvar c9012 = {\n \"chain\": \"BRB\",\n \"chainId\": 9012,\n \"explorers\": [{\n \"name\": \"berylbit-explorer\",\n \"url\": \"https://explorer.berylbit.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://t.me/BerylBit\"],\n \"icon\": {\n \"url\": \"ipfs://QmeDXHkpranzqGN1BmQqZSrFp4vGXf4JfaB5iq8WHHiwDi\",\n \"width\": 162,\n \"height\": 162,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.beryl-bit.com\",\n \"name\": \"BerylBit Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BerylBit Chain Native Token\",\n \"symbol\": \"BRB\",\n \"decimals\": 18\n },\n \"networkId\": 9012,\n \"rpc\": [\"https://berylbit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9012.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.berylbit.io\"],\n \"shortName\": \"brb\",\n \"slug\": \"berylbit\",\n \"testnet\": false\n};\n\nvar c9100 = {\n \"chain\": \"Genesis\",\n \"chainId\": 9100,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://genesis-gn.com\",\n \"name\": \"Genesis Coin\",\n \"nativeCurrency\": {\n \"name\": \"GN Coin\",\n \"symbol\": \"GNC\",\n \"decimals\": 18\n },\n \"networkId\": 9100,\n \"rpc\": [\"https://genesis-coin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://genesis-gn.com\", \"wss://genesis-gn.com\"],\n \"shortName\": \"GENEC\",\n \"slug\": \"genesis-coin\",\n \"testnet\": false\n};\n\nvar c9170 = {\n \"chain\": \"FIRE\",\n \"chainId\": 9170,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.thefirechain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmRnnw2gtbU9TWJMLJ6tks7SN6HQV5rRugeoyN6csTYHt1\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thefirechain.com\",\n \"name\": \"Rinia Testnet Old\",\n \"nativeCurrency\": {\n \"name\": \"Firechain\",\n \"symbol\": \"FIRE\",\n \"decimals\": 18\n },\n \"networkId\": 9170,\n \"rpc\": [],\n \"shortName\": \"_old_tfire\",\n \"slug\": \"rinia-testnet-old\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c9223 = {\n \"chain\": \"COF\",\n \"chainId\": 9223,\n \"explorers\": [{\n \"name\": \"Codefin Net Explorer\",\n \"url\": \"https://explorer.codefin.pro\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVyAuAnKKNnGEpqeYMLPRfMdysLgPBTZeEXihXbRytGhp\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://network.codefin.pro\",\n \"name\": \"Codefin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Codefin\",\n \"symbol\": \"COF\",\n \"decimals\": 18\n },\n \"networkId\": 9223,\n \"rpc\": [\"https://codefin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9223.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://chain-rpc.codefin.pro\"],\n \"shortName\": \"COF\",\n \"slug\": \"codefin\",\n \"testnet\": false\n};\n\nvar c9339 = {\n \"chain\": \"DOGS\",\n \"chainId\": 9339,\n \"explorers\": [{\n \"name\": \"Dogcoin\",\n \"url\": \"https://testnet.dogcoin.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.dogcoin.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmZCadkExKThak3msvszZjo6UnAbUJKE61dAcg4TixuMC3\",\n \"width\": 160,\n \"height\": 171,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dogcoin.network\",\n \"name\": \"Dogcoin Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Dogcoin\",\n \"symbol\": \"DOGS\",\n \"decimals\": 18\n },\n \"networkId\": 9339,\n \"rpc\": [\"https://dogcoin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9339.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.dogcoin.me\"],\n \"shortName\": \"DOGSt\",\n \"slug\": \"dogcoin-testnet\",\n \"testnet\": true\n};\n\nvar c9527 = {\n \"chain\": \"Rangers\",\n \"chainId\": 9527,\n \"explorers\": [{\n \"name\": \"rangersscan-robin\",\n \"url\": \"https://robin-rangersscan.rangersprotocol.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://robin-faucet.rangersprotocol.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmXR5e5SDABWfQn6XT9uMsVYAo5Bv7vUv4jVs8DFqatZWG\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rangersprotocol.com\",\n \"name\": \"Rangers Protocol Testnet Robin\",\n \"nativeCurrency\": {\n \"name\": \"Rangers Protocol Gas\",\n \"symbol\": \"tRPG\",\n \"decimals\": 18\n },\n \"networkId\": 9527,\n \"rpc\": [\"https://rangers-protocol-testnet-robin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9527.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://robin.rangersprotocol.com/api/jsonrpc\"],\n \"shortName\": \"trpg\",\n \"slug\": \"rangers-protocol-testnet-robin\",\n \"testnet\": true\n};\n\nvar c9528 = {\n \"chain\": \"QET\",\n \"chainId\": 9528,\n \"explorers\": [{\n \"name\": \"QEasyWeb3 Explorer\",\n \"url\": \"https://www.qeasyweb3.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://faucet.qeasyweb3.com\"],\n \"infoURL\": \"https://www.qeasyweb3.com\",\n \"name\": \"QEasyWeb3 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"QET\",\n \"symbol\": \"QET\",\n \"decimals\": 18\n },\n \"networkId\": 9528,\n \"rpc\": [\"https://qeasyweb3-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9528.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://qeasyweb3.com\"],\n \"shortName\": \"QETTest\",\n \"slug\": \"qeasyweb3-testnet\",\n \"testnet\": true\n};\n\nvar c9559 = {\n \"chain\": \"Neonlink\",\n \"chainId\": 9559,\n \"explorers\": [{\n \"name\": \"Neon Blockchain Explorer\",\n \"url\": \"https://testnet-scan.neonlink.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmX3hBv8WyvVfYjh1gmgDfJCpJBvKk4TYG9wFX9sC8WAjz\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://faucet.neonlink.io/\"],\n \"icon\": {\n \"url\": \"ipfs://QmX3hBv8WyvVfYjh1gmgDfJCpJBvKk4TYG9wFX9sC8WAjz\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://neonlink.io\",\n \"name\": \"Neonlink Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Neonlink Native Token\",\n \"symbol\": \"tNEON\",\n \"decimals\": 18\n },\n \"networkId\": 9559,\n \"rpc\": [\"https://neonlink-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9559.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.neonlink.io\"],\n \"shortName\": \"testneon\",\n \"slug\": \"neonlink-testnet\",\n \"testnet\": true\n};\n\nvar c9700 = {\n \"chain\": \"MainnetDev\",\n \"chainId\": 9700,\n \"explorers\": [{\n \"name\": \"Oort MainnetDev Scan\",\n \"url\": \"https://dev-scan.oortech.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidrbvklkb52sgmg7cmy42fhf7vqpig7qj7bnrq24ijdwywkzr2tfy\",\n \"width\": 1440,\n \"height\": 1440,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oortech.com\",\n \"name\": \"Oort MainnetDev\",\n \"nativeCurrency\": {\n \"name\": \"Oort\",\n \"symbol\": \"CCN\",\n \"decimals\": 18\n },\n \"networkId\": 9700,\n \"rpc\": [\"https://oort-dev.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9700.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dev-rpc.oortech.com\"],\n \"shortName\": \"MainnetDev\",\n \"slug\": \"oort-dev\",\n \"testnet\": false,\n \"title\": \"Oort MainnetDev\"\n};\n\nvar c9728 = {\n \"chain\": \"Boba BNB Testnet\",\n \"chainId\": 9728,\n \"explorers\": [{\n \"name\": \"Boba BNB Testnet block explorer\",\n \"url\": \"https://blockexplorer.testnet.bnb.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba BNB Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 9728,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://gateway.boba.network\"\n }]\n },\n \"rpc\": [\"https://boba-bnb-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9728.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bnb.boba.network\", \"wss://wss.testnet.bnb.boba.network\", \"https://replica.testnet.bnb.boba.network\", \"wss://replica-wss.testnet.bnb.boba.network\", \"https://boba-bnb-testnet.gateway.tenderly.co\", \"wss://boba-bnb-testnet.gateway.tenderly.co\"],\n \"shortName\": \"BobaBnbTestnet\",\n \"slug\": \"boba-bnb-testnet\",\n \"testnet\": true\n};\n\nvar c9768 = {\n \"chain\": \"NetZ\",\n \"chainId\": 9768,\n \"explorers\": [{\n \"name\": \"MainnetZ\",\n \"url\": \"https://testnet.mainnetz.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.mainnetz.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmT5gJ5weBiLT3GoYuF5yRTRLdPLCVZ3tXznfqW7M8fxgG\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://testnet.mainnetz.io\",\n \"name\": \"MainnetZ Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MainnetZ\",\n \"symbol\": \"NetZ\",\n \"decimals\": 18\n },\n \"networkId\": 9768,\n \"rpc\": [\"https://z-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9768.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.mainnetz.io\"],\n \"shortName\": \"NetZt\",\n \"slug\": \"z-testnet\",\n \"testnet\": true\n};\n\nvar c9779 = {\n \"chain\": \"PepeNetwork\",\n \"chainId\": 9779,\n \"explorers\": [{\n \"name\": \"Pepe Explorer\",\n \"url\": \"https://explorer.pepenetwork.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPX3uipdwd195z1MJff7uj8hpZdSuVvM5z47eiz2o7Gz5\",\n \"width\": 960,\n \"height\": 944,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPX3uipdwd195z1MJff7uj8hpZdSuVvM5z47eiz2o7Gz5\",\n \"width\": 960,\n \"height\": 944,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://pepenetwork.io\",\n \"name\": \"PepeNetwork Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Pepe\",\n \"symbol\": \"WPEPE\",\n \"decimals\": 18\n },\n \"networkId\": 9779,\n \"rpc\": [\"https://pepenetwork.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9779.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.pepenetwork.io\"],\n \"shortName\": \"pn\",\n \"slug\": \"pepenetwork\",\n \"testnet\": false\n};\n\nvar c9790 = {\n \"chain\": \"Carbon\",\n \"chainId\": 9790,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQUHqi1gyuTuKmJQHqt9EyhN1FPmmmLNUK8u93nMGrxAy\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://carbon.network/\",\n \"name\": \"Carbon EVM\",\n \"nativeCurrency\": {\n \"name\": \"swth\",\n \"symbol\": \"SWTH\",\n \"decimals\": 18\n },\n \"networkId\": 9790,\n \"rpc\": [\"https://carbon-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9790.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm-api.carbon.network/\"],\n \"shortName\": \"carbon\",\n \"slug\": \"carbon-evm\",\n \"testnet\": false\n};\n\nvar c9792 = {\n \"chain\": \"Carbon\",\n \"chainId\": 9792,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQUHqi1gyuTuKmJQHqt9EyhN1FPmmmLNUK8u93nMGrxAy\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://carbon.network/\",\n \"name\": \"Carbon EVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"swth\",\n \"symbol\": \"SWTH\",\n \"decimals\": 18\n },\n \"networkId\": 9792,\n \"rpc\": [\"https://carbon-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9792.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test-evm-api.carbon.network/\"],\n \"shortName\": \"carbon-testnet\",\n \"slug\": \"carbon-evm-testnet\",\n \"testnet\": true\n};\n\nvar c9818 = {\n \"chain\": \"tIMP\",\n \"chainId\": 9818,\n \"explorers\": [{\n \"name\": \"IMPERIUM TESTNET Explorer\",\n \"url\": \"https://network.impscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmcNGLzKyc7Gu2dgpBFF6t3KJwFuKC79D56DW8GTc5DWRw\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.imperiumchain.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmcNGLzKyc7Gu2dgpBFF6t3KJwFuKC79D56DW8GTc5DWRw\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://imperiumchain.com\",\n \"name\": \"IMPERIUM TESTNET\",\n \"nativeCurrency\": {\n \"name\": \"tIMP\",\n \"symbol\": \"tIMP\",\n \"decimals\": 18\n },\n \"networkId\": 9818,\n \"rpc\": [\"https://imperium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9818.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data-aws-testnet.imperiumchain.com\", \"https://data-aws2-testnet.imperiumchain.com\"],\n \"shortName\": \"tIMP\",\n \"slug\": \"imperium-testnet\",\n \"testnet\": true\n};\n\nvar c9819 = {\n \"chain\": \"IMP\",\n \"chainId\": 9819,\n \"explorers\": [{\n \"name\": \"IMPERIUM Explorer\",\n \"url\": \"https://impscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmcNGLzKyc7Gu2dgpBFF6t3KJwFuKC79D56DW8GTc5DWRw\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.imperiumchain.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmcNGLzKyc7Gu2dgpBFF6t3KJwFuKC79D56DW8GTc5DWRw\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://imperiumchain.com\",\n \"name\": \"IMPERIUM MAINNET\",\n \"nativeCurrency\": {\n \"name\": \"IMP\",\n \"symbol\": \"IMP\",\n \"decimals\": 18\n },\n \"networkId\": 9819,\n \"rpc\": [\"https://imperium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9819.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://data-aws-mainnet.imperiumchain.com\", \"https://data-aws2-mainnet.imperiumchain.com\"],\n \"shortName\": \"IMP\",\n \"slug\": \"imperium\",\n \"testnet\": false\n};\n\nvar c9977 = {\n \"chain\": \"tMIND\",\n \"chainId\": 9977,\n \"explorers\": [{\n \"name\": \"Mind Chain explorer\",\n \"url\": \"https://testnet.mindscan.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.mindchain.info/\"],\n \"icon\": {\n \"url\": \"ipfs://QmX2b4CzNyrNgy4ERBEteSS9MsuYNVYeq2sSMMiogGjbFP\",\n \"width\": 732,\n \"height\": 732,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://mindchain.info\",\n \"name\": \"Mind Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MIND Coin\",\n \"symbol\": \"tMIND\",\n \"decimals\": 18\n },\n \"networkId\": 9977,\n \"rpc\": [\"https://mind-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9977.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-msc.mindchain.info/\", \"wss://testnet-msc.mindchain.info/ws\"],\n \"shortName\": \"tMIND\",\n \"slug\": \"mind-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c9990 = {\n \"chain\": \"Agung\",\n \"chainId\": 9990,\n \"explorers\": [{\n \"name\": \"Polkadot.js\",\n \"url\": \"https://polkadot.js.org/apps/?rpc=wss://wsspc1-qa.agung.peaq.network#/explorer\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Subscan\",\n \"url\": \"https://agung.subscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibkqdof3ztkdhgukwvkacwgrjb27e23hgz5c6mmudzu5hipyvgisa\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.peaq.network\",\n \"name\": \"Agung Network\",\n \"nativeCurrency\": {\n \"name\": \"Agung\",\n \"symbol\": \"AGNG\",\n \"decimals\": 18\n },\n \"networkId\": 9990,\n \"rpc\": [\"https://agung-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9990.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpcpc1-qa.agung.peaq.network\"],\n \"shortName\": \"AGNG\",\n \"slug\": \"agung-network\",\n \"testnet\": false\n};\n\nvar c9996 = {\n \"chain\": \"MIND\",\n \"chainId\": 9996,\n \"explorers\": [{\n \"name\": \"Mind Chain explorer\",\n \"url\": \"https://mainnet.mindscan.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmX2b4CzNyrNgy4ERBEteSS9MsuYNVYeq2sSMMiogGjbFP\",\n \"width\": 732,\n \"height\": 732,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://mindchain.info\",\n \"name\": \"Mind Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MIND Coin\",\n \"symbol\": \"MIND\",\n \"decimals\": 18\n },\n \"networkId\": 9996,\n \"rpc\": [\"https://mind-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9996.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-msc.mindchain.info/\", \"https://seednode.mindchain.info\", \"https://archive.mindchain.info/\", \"wss://archive.mindchain.info/ws\", \"wss://seednode.mindchain.info/ws\"],\n \"shortName\": \"MIND\",\n \"slug\": \"mind-smart-chain\",\n \"testnet\": false\n};\n\nvar c9997 = {\n \"chain\": \"ETH\",\n \"chainId\": 9997,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet-rollup-explorer.altlayer.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmcEfZJU7NMn9ycTAcEooQgGNfa2nYBToSUZHdFCFadcjb\",\n \"width\": 1080,\n \"height\": 1025,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://altlayer.io\",\n \"name\": \"AltLayer Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 9997,\n \"rpc\": [\"https://altlayer-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9997.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rollup-api.altlayer.io\"],\n \"shortName\": \"alt-testnet\",\n \"slug\": \"altlayer-testnet\",\n \"testnet\": true\n};\n\nvar c9999 = {\n \"chain\": \"myOwn\",\n \"chainId\": 9999,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://docs.bccloud.net/\",\n \"name\": \"myOwn Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MYN\",\n \"symbol\": \"MYN\",\n \"decimals\": 18\n },\n \"networkId\": 9999,\n \"rpc\": [\"https://myown-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://geth.dev.bccloud.net\"],\n \"shortName\": \"myn\",\n \"slug\": \"myown-testnet\",\n \"testnet\": true\n};\n\nvar c10000 = {\n \"chain\": \"smartBCH\",\n \"chainId\": 10000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://smartbch.org/\",\n \"name\": \"Smart Bitcoin Cash\",\n \"nativeCurrency\": {\n \"name\": \"Bitcoin Cash\",\n \"symbol\": \"BCH\",\n \"decimals\": 18\n },\n \"networkId\": 10000,\n \"rpc\": [\"https://smart-bitcoin-cash.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://smartbch.greyh.at\", \"https://rpc-mainnet.smartbch.org\", \"https://smartbch.fountainhead.cash/mainnet\", \"https://smartbch.devops.cash/mainnet\"],\n \"shortName\": \"smartbch\",\n \"slug\": \"smart-bitcoin-cash\",\n \"testnet\": false\n};\n\nvar c10001 = {\n \"chain\": \"smartBCHTest\",\n \"chainId\": 10001,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"http://smartbch.org/\",\n \"name\": \"Smart Bitcoin Cash Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitcoin Cash Test Token\",\n \"symbol\": \"BCHT\",\n \"decimals\": 18\n },\n \"networkId\": 10001,\n \"rpc\": [\"https://smart-bitcoin-cash-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.smartbch.org\", \"https://smartbch.devops.cash/testnet\"],\n \"shortName\": \"smartbchtest\",\n \"slug\": \"smart-bitcoin-cash-testnet\",\n \"testnet\": true\n};\n\nvar c10024 = {\n \"chain\": \"GonChain\",\n \"chainId\": 10024,\n \"explorers\": [{\n \"name\": \"Gon Explorer\",\n \"url\": \"https://gonscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPtiJGaApbW3ATZhPW3pKJpw3iGVrRGsZLWhrDKF9ZK18\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"name\": \"Gon Chain\",\n \"nativeCurrency\": {\n \"name\": \"Gon Token\",\n \"symbol\": \"GT\",\n \"decimals\": 18\n },\n \"networkId\": 10024,\n \"rpc\": [\"https://gon-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10024.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.testnet.gaiaopen.network\", \"https://node1.mainnet.gon.network\", \"https://node2.mainnet.gon.network\", \"https://node3.mainnet.gon.network\", \"https://node4.mainnet.gon.network\"],\n \"shortName\": \"gon\",\n \"slug\": \"gon-chain\",\n \"testnet\": true\n};\n\nvar c10081 = {\n \"chain\": \"JOCT\",\n \"chainId\": 10081,\n \"explorers\": [{\n \"name\": \"Testnet Block Explorer\",\n \"url\": \"https://explorer.testnet.japanopenchain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.japanopenchain.org/\",\n \"name\": \"Japan Open Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Japan Open Chain Testnet Token\",\n \"symbol\": \"JOCT\",\n \"decimals\": 18\n },\n \"networkId\": 10081,\n \"rpc\": [\"https://japan-open-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10081.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-1.testnet.japanopenchain.org:8545\", \"https://rpc-2.testnet.japanopenchain.org:8545\"],\n \"shortName\": \"joct\",\n \"slug\": \"japan-open-chain-testnet\",\n \"testnet\": true\n};\n\nvar c10086 = {\n \"chain\": \"ETH\",\n \"chainId\": 10086,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://sjis.me\",\n \"name\": \"SJATSH\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 10086,\n \"rpc\": [\"https://sjatsh.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10086.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://geth.free.idcfengye.com\"],\n \"shortName\": \"SJ\",\n \"slug\": \"sjatsh\",\n \"testnet\": false\n};\n\nvar c10101 = {\n \"chain\": \"GEN\",\n \"chainId\": 10101,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.xixoio.com/\",\n \"name\": \"Blockchain Genesis Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GEN\",\n \"symbol\": \"GEN\",\n \"decimals\": 18\n },\n \"networkId\": 10101,\n \"rpc\": [\"https://blockchain-genesis.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eu.mainnet.xixoio.com\", \"https://us.mainnet.xixoio.com\", \"https://asia.mainnet.xixoio.com\"],\n \"shortName\": \"GEN\",\n \"slug\": \"blockchain-genesis\",\n \"testnet\": false\n};\n\nvar c10200 = {\n \"chain\": \"GNO\",\n \"chainId\": 10200,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://gnosis-chiado.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://gnosisfaucet.com\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeidk4swpgdyqmpz6shd5onvpaujvwiwthrhypufnwr6xh3dausz2dm\",\n \"width\": 1800,\n \"height\": 1800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.gnosischain.com\",\n \"name\": \"Gnosis Chiado Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Chiado xDAI\",\n \"symbol\": \"XDAI\",\n \"decimals\": 18\n },\n \"networkId\": 10200,\n \"rpc\": [\"https://gnosis-chiado-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10200.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.chiadochain.net\", \"https://rpc.chiado.gnosis.gateway.fm\", \"wss://rpc.chiadochain.net/wss\", \"https://gnosis-chiado.publicnode.com\", \"wss://gnosis-chiado.publicnode.com\"],\n \"shortName\": \"chi\",\n \"slug\": \"gnosis-chiado-testnet\",\n \"testnet\": true\n};\n\nvar c10201 = {\n \"chain\": \"MaxxChain\",\n \"chainId\": 10201,\n \"explorers\": [{\n \"name\": \"MaxxChain Block Explorer\",\n \"url\": \"https://explorer.maxxchain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.maxxchain.org\"],\n \"icon\": {\n \"url\": \"ipfs://QmRhQG9TZrXDdbQeTzBmjg3pqgwaD5TKVZj8k4kaz8AoZx\",\n \"width\": 1021,\n \"height\": 1021,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.maxxchain.org/\",\n \"name\": \"MaxxChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Power\",\n \"symbol\": \"PWR\",\n \"decimals\": 18\n },\n \"networkId\": 10201,\n \"rpc\": [\"https://maxxchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10201.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.maxxchain.org\", \"https://rpc1.maxxchain.org\", \"https://rpc2.maxxchain.org\"],\n \"shortName\": \"PWR\",\n \"slug\": \"maxxchain\",\n \"testnet\": false\n};\n\nvar c10243 = {\n \"chain\": \"AA\",\n \"chainId\": 10243,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer-test.arthera.net\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.arthera.net\"],\n \"icon\": {\n \"url\": \"ipfs://QmYQp3e52KjkT4bYdAvB6ACEEpXs2D8DozsDitaADRY2Ak\",\n \"width\": 1024,\n \"height\": 998,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.arthera.net\",\n \"name\": \"Arthera Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Arthera\",\n \"symbol\": \"AA\",\n \"decimals\": 18\n },\n \"networkId\": 10243,\n \"rpc\": [\"https://arthera-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10243.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-test.arthera.net\"],\n \"shortName\": \"aa\",\n \"slug\": \"arthera-testnet\",\n \"testnet\": true\n};\n\nvar c10248 = {\n \"chain\": \"0XTade Chain\",\n \"chainId\": 10248,\n \"explorers\": [{\n \"name\": \"0xtrade Scan\",\n \"url\": \"https://www.0xtscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.0xtrade.finance/\",\n \"name\": \"0XTade\",\n \"nativeCurrency\": {\n \"name\": \"0XT\",\n \"symbol\": \"0XT\",\n \"decimals\": 18\n },\n \"networkId\": 10248,\n \"rpc\": [\"https://0xtade.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10248.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.0xtchain.com\"],\n \"shortName\": \"0xt\",\n \"slug\": \"0xtade\",\n \"testnet\": false\n};\n\nvar c10395 = {\n \"chain\": \"Worldland\",\n \"chainId\": 10395,\n \"explorers\": [{\n \"name\": \"Worldland Explorer\",\n \"url\": \"https://testscan.worldland.foundation\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYZNTfK3byhgLsTjXP8vPubVHRz2CWsBrTJxZrQmKq6JZ\",\n \"width\": 3509,\n \"height\": 2482,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://worldland.foundation\",\n \"name\": \"Worldland Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Worldland\",\n \"symbol\": \"WL\",\n \"decimals\": 18\n },\n \"networkId\": 10395,\n \"rpc\": [\"https://worldland-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10395.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gwangju.worldland.foundation\"],\n \"shortName\": \"TWLC\",\n \"slug\": \"worldland-testnet\",\n \"testnet\": true\n};\n\nvar c10507 = {\n \"chain\": \"NUM\",\n \"chainId\": 10507,\n \"explorers\": [{\n \"name\": \"ethernal\",\n \"url\": \"https://mainnet.num.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreie3ba6ofosjqqiya6empkyw6u5xdrtcfzi2evvyt4u6utzeiezyhi\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://numbersprotocol.io\",\n \"name\": \"Numbers Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"NUM Token\",\n \"symbol\": \"NUM\",\n \"decimals\": 18\n },\n \"networkId\": 10507,\n \"rpc\": [\"https://numbers.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10507.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnetrpc.num.network\"],\n \"shortName\": \"Jade\",\n \"slug\": \"numbers\",\n \"testnet\": false\n};\n\nvar c10508 = {\n \"chain\": \"NUM\",\n \"chainId\": 10508,\n \"explorers\": [{\n \"name\": \"ethernal\",\n \"url\": \"https://testnet.num.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.avax.network/?subnet=num\", \"https://faucet.num.network\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreie3ba6ofosjqqiya6empkyw6u5xdrtcfzi2evvyt4u6utzeiezyhi\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://numbersprotocol.io\",\n \"name\": \"Numbers Testnet\",\n \"nativeCurrency\": {\n \"name\": \"NUM Token\",\n \"symbol\": \"NUM\",\n \"decimals\": 18\n },\n \"networkId\": 10508,\n \"rpc\": [\"https://numbers-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10508.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnetrpc.num.network\"],\n \"shortName\": \"Snow\",\n \"slug\": \"numbers-testnet\",\n \"testnet\": true\n};\n\nvar c10823 = {\n \"chain\": \"CCP\",\n \"chainId\": 10823,\n \"explorers\": [{\n \"name\": \"CCP Explorer\",\n \"url\": \"https://cryptocoinpay.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPw1ixYYeXvTiRWoCt2jWe4YMd3B5o7TzL18SBEHXvhXX\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.cryptocoinpay.co\",\n \"name\": \"CryptoCoinPay\",\n \"nativeCurrency\": {\n \"name\": \"CryptoCoinPay\",\n \"symbol\": \"CCP\",\n \"decimals\": 18\n },\n \"networkId\": 10823,\n \"rpc\": [\"https://cryptocoinpay.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10823.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://node106.cryptocoinpay.info:8545\", \"ws://node106.cryptocoinpay.info:8546\"],\n \"shortName\": \"CCP\",\n \"slug\": \"cryptocoinpay\",\n \"testnet\": false\n};\n\nvar c10946 = {\n \"chain\": \"QDC\",\n \"chainId\": 10946,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.quadrans.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://quadrans.io\",\n \"name\": \"Quadrans Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"Quadrans Coin\",\n \"symbol\": \"QDC\",\n \"decimals\": 18\n },\n \"networkId\": 10946,\n \"rpc\": [\"https://quadrans-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10946.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.quadrans.io\", \"https://rpcna.quadrans.io\", \"https://rpceu.quadrans.io\"],\n \"shortName\": \"quadrans\",\n \"slug\": \"quadrans-blockchain\",\n \"testnet\": false\n};\n\nvar c10947 = {\n \"chain\": \"tQDC\",\n \"chainId\": 10947,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://explorer.testnet.quadrans.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucetpage.quadrans.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://quadrans.io\",\n \"name\": \"Quadrans Blockchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Quadrans Testnet Coin\",\n \"symbol\": \"tQDC\",\n \"decimals\": 18\n },\n \"networkId\": 10947,\n \"rpc\": [\"https://quadrans-blockchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10947.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpctest.quadrans.io\", \"https://rpctest2.quadrans.io\"],\n \"shortName\": \"quadranstestnet\",\n \"slug\": \"quadrans-blockchain-testnet\",\n \"testnet\": true\n};\n\nvar c11110 = {\n \"chain\": \"Astra\",\n \"chainId\": 11110,\n \"explorers\": [{\n \"name\": \"Astra EVM Explorer (Blockscout)\",\n \"url\": \"https://explorer.astranaut.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Astra PingPub Explorer\",\n \"url\": \"https://ping.astranaut.io/astra\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://astranaut.io\",\n \"name\": \"Astra\",\n \"nativeCurrency\": {\n \"name\": \"Astra\",\n \"symbol\": \"ASA\",\n \"decimals\": 18\n },\n \"networkId\": 11110,\n \"rpc\": [\"https://astra.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11110.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.astranaut.io\", \"https://rpc1.astranaut.io\"],\n \"shortName\": \"astra\",\n \"slug\": \"astra\",\n \"testnet\": false\n};\n\nvar c11111 = {\n \"chain\": \"WAGMI\",\n \"chainId\": 11111,\n \"explorers\": [{\n \"name\": \"Avalanche Subnet Explorer\",\n \"url\": \"https://subnets-test.avax.network/wagmi\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.avax.network/?subnet=wagmi\"],\n \"icon\": {\n \"url\": \"ipfs://QmNoyUXxnak8B3xgFxErkVfyVEPJUMHBzq7qJcYzkUrPR4\",\n \"width\": 1920,\n \"height\": 1920,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://subnets-test.avax.network/wagmi/details\",\n \"name\": \"WAGMI\",\n \"nativeCurrency\": {\n \"name\": \"WAGMI\",\n \"symbol\": \"WGM\",\n \"decimals\": 18\n },\n \"networkId\": 11111,\n \"rpc\": [\"https://wagmi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/wagmi/wagmi-chain-testnet/rpc\"],\n \"shortName\": \"WAGMI\",\n \"slug\": \"wagmi\",\n \"testnet\": true\n};\n\nvar c11115 = {\n \"chain\": \"Astra\",\n \"chainId\": 11115,\n \"explorers\": [{\n \"name\": \"Astra EVM Explorer\",\n \"url\": \"https://explorer.astranaut.dev\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Astra PingPub Explorer\",\n \"url\": \"https://ping.astranaut.dev/astra\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.astranaut.dev\"],\n \"icon\": {\n \"url\": \"ipfs://QmaBtaukPNNUNjdJSUAwuFFQMLbZX1Pc3fvXKTKQcds7Kf\",\n \"width\": 104,\n \"height\": 80,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://astranaut.io\",\n \"name\": \"Astra Testnet\",\n \"nativeCurrency\": {\n \"name\": \"test-Astra\",\n \"symbol\": \"tASA\",\n \"decimals\": 18\n },\n \"networkId\": 11115,\n \"rpc\": [\"https://astra-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11115.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.astranaut.dev\"],\n \"shortName\": \"astra-testnet\",\n \"slug\": \"astra-testnet\",\n \"testnet\": true\n};\n\nvar c11119 = {\n \"chain\": \"HBIT\",\n \"chainId\": 11119,\n \"explorers\": [{\n \"name\": \"hashbitscan\",\n \"url\": \"https://explorer.hashbit.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://hashbit.org\",\n \"name\": \"HashBit Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"HashBit Native Token\",\n \"symbol\": \"HBIT\",\n \"decimals\": 18\n },\n \"networkId\": 11119,\n \"rpc\": [\"https://hashbit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11119.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.hashbit.org\", \"https://rpc.hashbit.org\"],\n \"shortName\": \"hbit\",\n \"slug\": \"hashbit\",\n \"testnet\": false\n};\n\nvar c11235 = {\n \"chain\": \"Haqq\",\n \"chainId\": 11235,\n \"explorers\": [{\n \"name\": \"Mainnet HAQQ Explorer\",\n \"url\": \"https://explorer.haqq.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://islamiccoin.net\",\n \"name\": \"Haqq Network\",\n \"nativeCurrency\": {\n \"name\": \"Islamic Coin\",\n \"symbol\": \"ISLM\",\n \"decimals\": 18\n },\n \"networkId\": 11235,\n \"rpc\": [\"https://haqq-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11235.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.eth.haqq.network\", \"https://haqq-evm.publicnode.com\", \"wss://haqq-evm.publicnode.com\"],\n \"shortName\": \"ISLM\",\n \"slug\": \"haqq-network\",\n \"testnet\": false\n};\n\nvar c11437 = {\n \"chain\": \"SHYFTT\",\n \"chainId\": 11437,\n \"explorers\": [{\n \"name\": \"Shyft Testnet BX\",\n \"url\": \"https://bx.testnet.shyft.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmUkFZC2ZmoYPTKf7AHdjwRPZoV2h1MCuHaGM4iu8SNFpi\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://shyft.network\",\n \"name\": \"Shyft Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Shyft Test Token\",\n \"symbol\": \"SHYFTT\",\n \"decimals\": 18\n },\n \"networkId\": 11437,\n \"rpc\": [],\n \"shortName\": \"shyftt\",\n \"slug\": \"shyft-testnet\",\n \"testnet\": true\n};\n\nvar c11612 = {\n \"chain\": \"SRDX\",\n \"chainId\": 11612,\n \"explorers\": [{\n \"name\": \"Sardis\",\n \"url\": \"https://testnet.sardisnetwork.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.sardisnetwork.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmdR9QJjQEh1mBnf2WbJfehverxiP5RDPWMtEECbDP2rc3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mysardis.com\",\n \"name\": \"Sardis Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sardis\",\n \"symbol\": \"SRDX\",\n \"decimals\": 18\n },\n \"networkId\": 11612,\n \"rpc\": [\"https://sardis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11612.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.sardisnetwork.com\"],\n \"shortName\": \"SRDXt\",\n \"slug\": \"sardis-testnet\",\n \"testnet\": true\n};\n\nvar c11888 = {\n \"chain\": \"SanRChain\",\n \"chainId\": 11888,\n \"explorers\": [{\n \"name\": \"SanR Chain Explorer\",\n \"url\": \"https://sanrchain-explorer.santiment.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPLMg5mYD8XRknvYbDkD2x7FXxYan7MPTeUWZC2CihwDM\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://sanr.app\",\n \"name\": \"SanR Chain\",\n \"nativeCurrency\": {\n \"name\": \"nSAN\",\n \"symbol\": \"nSAN\",\n \"decimals\": 18\n },\n \"networkId\": 11888,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://sanr.app\"\n }]\n },\n \"rpc\": [\"https://sanr-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sanrchain-node.santiment.net\"],\n \"shortName\": \"SAN\",\n \"slug\": \"sanr-chain\",\n \"testnet\": false\n};\n\nvar c11891 = {\n \"chain\": \"Arianee\",\n \"chainId\": 11891,\n \"explorers\": [{\n \"name\": \"Polygon Supernet Arianee Explorer\",\n \"url\": \"https://polygonsupernet.explorer.arianee.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://arianee.org\",\n \"name\": \"Polygon Supernet Arianee\",\n \"nativeCurrency\": {\n \"name\": \"Arianee\",\n \"symbol\": \"ARIA20\",\n \"decimals\": 18\n },\n \"networkId\": 11891,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\"\n },\n \"rpc\": [\"https://polygon-supernet-arianee.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11891.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.polygonsupernet.public.arianee.net\"],\n \"shortName\": \"Arianee\",\n \"slug\": \"polygon-supernet-arianee\",\n \"testnet\": false\n};\n\nvar c12009 = {\n \"chain\": \"SATS\",\n \"chainId\": 12009,\n \"explorers\": [{\n \"name\": \"SatoshiChain Explorer\",\n \"url\": \"https://satoshiscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRegpZQBW4o1imYNsW3d27MQjygBSU23Gf6JKje26nvs7\",\n \"width\": 1251,\n \"height\": 1251,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://satoshichain.net\",\n \"name\": \"SatoshiChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SatoshiChain Coin\",\n \"symbol\": \"SATS\",\n \"decimals\": 18\n },\n \"networkId\": 12009,\n \"rpc\": [\"https://satoshichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12009.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.satoshichain.io\"],\n \"shortName\": \"sats\",\n \"slug\": \"satoshichain\",\n \"testnet\": false\n};\n\nvar c12035 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 12035,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QI M 11272\",\n \"nativeCurrency\": {\n \"name\": \"QI M 11272 Token\",\n \"symbol\": \"JZW\",\n \"decimals\": 18\n },\n \"networkId\": 12035,\n \"redFlags\": [],\n \"rpc\": [\"https://qi-m-11272.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12035.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/b19c9e32-f359-451f-ad15-7ec784625c04\"],\n \"shortName\": \"QI M 11272\",\n \"slug\": \"qi-m-11272\",\n \"testnet\": true\n};\n\nvar c12051 = {\n \"chain\": \"ZERO\",\n \"chainId\": 12051,\n \"explorers\": [{\n \"name\": \"zeroscan\",\n \"url\": \"https://betaenv.singularity.gold:18002\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://nft.singularity.gold\"],\n \"infoURL\": \"https://www.singularity.gold\",\n \"name\": \"Singularity ZERO Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ZERO\",\n \"symbol\": \"tZERO\",\n \"decimals\": 18\n },\n \"networkId\": 12051,\n \"rpc\": [\"https://singularity-zero-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12051.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://betaenv.singularity.gold:18545\"],\n \"shortName\": \"tZERO\",\n \"slug\": \"singularity-zero-testnet\",\n \"testnet\": true\n};\n\nvar c12052 = {\n \"chain\": \"ZERO\",\n \"chainId\": 12052,\n \"explorers\": [{\n \"name\": \"zeroscan\",\n \"url\": \"https://zeroscan.singularity.gold\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://zeroscan.singularity.gold\"],\n \"infoURL\": \"https://www.singularity.gold\",\n \"name\": \"Singularity ZERO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ZERO\",\n \"symbol\": \"ZERO\",\n \"decimals\": 18\n },\n \"networkId\": 12052,\n \"rpc\": [\"https://singularity-zero.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12052.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://zerorpc.singularity.gold\"],\n \"shortName\": \"ZERO\",\n \"slip44\": 621,\n \"slug\": \"singularity-zero\",\n \"testnet\": false\n};\n\nvar c12123 = {\n \"chain\": \"BRC\",\n \"chainId\": 12123,\n \"explorers\": [{\n \"name\": \"BRC Chain Explorer\",\n \"url\": \"https://scan.brcchain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.brcchain.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmX8qGX7xoZqYUpHxA85uZwQX2fgbTHvmddE1NfseDyBED\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bridge.brcchain.io\",\n \"name\": \"BRC Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"BRC Chain mainnet native token\",\n \"symbol\": \"BRC\",\n \"decimals\": 18\n },\n \"networkId\": 12123,\n \"rpc\": [\"https://brc-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12123.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.brcchain.io\"],\n \"shortName\": \"BRC\",\n \"slug\": \"brc-chain\",\n \"testnet\": false\n};\n\nvar c12306 = {\n \"chain\": \"FIBO\",\n \"chainId\": 12306,\n \"explorers\": [{\n \"name\": \"fiboscan\",\n \"url\": \"https://scan.fibochain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://test.fibochain.org/faucets\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreidiedaz3jugxmh2ylzlc4nympbd5iwab33adhwkcnblyop6vvj25y\",\n \"width\": 1494,\n \"height\": 1494,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fibochain.org\",\n \"name\": \"Fibonacci Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"FIBONACCI UTILITY TOKEN\",\n \"symbol\": \"FIBO\",\n \"decimals\": 18\n },\n \"networkId\": 1230,\n \"rpc\": [\"https://fibonacci.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12306.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.fibo-api.asia\", \"https://node2.fibo-api.asia\", \"https://node3.fibo-api.asia\", \"https://node4.fibo-api.asia\", \"https://node5.fibo-api.asia\", \"https://node6.fibo-api.asia\", \"https://node7.fibo-api.asia\", \"https://node1.fibo-rpc.asia\", \"https://node2.fibo-rpc.asia\", \"https://node3.fibo-rpc.asia\", \"https://node4.fibo-rpc.asia\", \"https://node5.fibo-rpc.asia\", \"https://node6.fibo-rpc.asia\", \"https://node7.fibo-rpc.asia\"],\n \"shortName\": \"fibo\",\n \"slug\": \"fibonacci\",\n \"testnet\": true\n};\n\nvar c12321 = {\n \"chain\": \"BLG\",\n \"chainId\": 12321,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.blgchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmUN5j2cre8GHKv52JE8ag88aAnRmuHMGFxePPvKMogisC\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://blgchain.com\",\n \"name\": \"BLG Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Blg\",\n \"symbol\": \"BLG\",\n \"decimals\": 18\n },\n \"networkId\": 12321,\n \"rpc\": [\"https://blg-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12321.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.blgchain.com\"],\n \"shortName\": \"blgchain\",\n \"slug\": \"blg-testnet\",\n \"testnet\": true\n};\n\nvar c12345 = {\n \"chain\": \"STEP\",\n \"chainId\": 12345,\n \"explorers\": [{\n \"name\": \"StepScan\",\n \"url\": \"https://testnet.stepscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVp9jyb3UFW71867yVtymmiRw7dPY4BTnsp3hEjr9tn8L\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.step.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmVp9jyb3UFW71867yVtymmiRw7dPY4BTnsp3hEjr9tn8L\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://step.network\",\n \"name\": \"Step Testnet\",\n \"nativeCurrency\": {\n \"name\": \"FITFI\",\n \"symbol\": \"FITFI\",\n \"decimals\": 18\n },\n \"networkId\": 12345,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-43113\"\n },\n \"rpc\": [\"https://step-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12345.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.step.network\"],\n \"shortName\": \"steptest\",\n \"slug\": \"step-testnet\",\n \"testnet\": true,\n \"title\": \"Step Test Network\"\n};\n\nvar c12611 = {\n \"chain\": \"ETH\",\n \"chainId\": 12611,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRySLe3su59dE5x5JPm2b1GeZfz6DR9qUzcbp3rt4SD3A\",\n \"width\": 300,\n \"height\": 300,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://astar.network\",\n \"name\": \"Astar zkEVM\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 12611,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": []\n },\n \"rpc\": [],\n \"shortName\": \"astrzk\",\n \"slug\": \"astar-zkevm\",\n \"status\": \"incubating\",\n \"testnet\": false,\n \"title\": \"Astar zkEVM Mainnet\"\n};\n\nvar c12715 = {\n \"chain\": \"Rikeza\",\n \"chainId\": 12715,\n \"explorers\": [{\n \"name\": \"Rikeza Blockchain explorer\",\n \"url\": \"https://testnet.rikscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfJ1Qxpzi6CSLeFeWY1Bwe435CpT5za5WfrLUE7vNzZfy\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rikeza.io\",\n \"name\": \"Rikeza Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Rikeza\",\n \"symbol\": \"RIK\",\n \"decimals\": 18\n },\n \"networkId\": 12715,\n \"rpc\": [\"https://rikeza-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12715.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.rikscan.com\"],\n \"shortName\": \"tRIK\",\n \"slug\": \"rikeza-network-testnet\",\n \"testnet\": true,\n \"title\": \"Rikeza Network Testnet\"\n};\n\nvar c12890 = {\n \"chain\": \"tQNET\",\n \"chainId\": 12890,\n \"explorers\": [{\n \"name\": \"Quantum Scan Testnet\",\n \"url\": \"https://testnet.quantumscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibwywok67uewqbtqdzgr7nlk3lvvg7hxmbgwtn7kdwxe34useucvm\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://quantumnetwork.gg\",\n \"name\": \"Quantum Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Quantum Chain\",\n \"symbol\": \"tQNET\",\n \"decimals\": 18\n },\n \"networkId\": 12890,\n \"rpc\": [\"https://quantum-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://12890.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.quantumscan.org\"],\n \"shortName\": \"tqnet\",\n \"slug\": \"quantum-chain-testnet\",\n \"testnet\": true\n};\n\nvar c13000 = {\n \"chain\": \"SPS\",\n \"chainId\": 13000,\n \"explorers\": [{\n \"name\": \"SPS Explorer\",\n \"url\": \"http://spsscan.ssquad.games\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ssquad.games/\",\n \"name\": \"SPS\",\n \"nativeCurrency\": {\n \"name\": \"ECG\",\n \"symbol\": \"ECG\",\n \"decimals\": 18\n },\n \"networkId\": 13000,\n \"rpc\": [\"https://sps.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ssquad.games\"],\n \"shortName\": \"SPS\",\n \"slug\": \"sps\",\n \"testnet\": false\n};\n\nvar c13308 = {\n \"chain\": \"CREDIT\",\n \"chainId\": 13308,\n \"explorers\": [{\n \"name\": \"Creditscan\",\n \"url\": \"https://scan.creditsmartchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://creditsmartchain.com\",\n \"name\": \"Credit Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"Credit\",\n \"symbol\": \"CREDIT\",\n \"decimals\": 18\n },\n \"networkId\": 13308,\n \"rpc\": [\"https://credit-smart-chain-credit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13308.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.creditsmartchain.com\"],\n \"shortName\": \"Credit\",\n \"slug\": \"credit-smart-chain-credit\",\n \"testnet\": false\n};\n\nvar c13337 = {\n \"chain\": \"BEAM\",\n \"chainId\": 13337,\n \"explorers\": [{\n \"name\": \"Beam Explorer\",\n \"url\": \"https://subnets-test.avax.network/beam\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.avax.network/?subnet=beam\", \"https://faucet.onbeam.com\"],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQJ21NWyGGDraicVEzS1Uqq1yXahM9NCuNZgnfYvtspdt\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.onbeam.com\",\n \"name\": \"Beam Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Beam\",\n \"symbol\": \"BEAM\",\n \"decimals\": 18\n },\n \"networkId\": 13337,\n \"rpc\": [\"https://beam-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13337.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/beam/testnet/rpc\", \"wss://subnets.avax.network/beam/testnet/ws\"],\n \"shortName\": \"beam-testnet\",\n \"slug\": \"beam-testnet\",\n \"testnet\": true\n};\n\nvar c13381 = {\n \"chain\": \"Phoenix\",\n \"chainId\": 13381,\n \"explorers\": [{\n \"name\": \"phoenixplorer\",\n \"url\": \"https://phoenixplorer.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYiLMeKDXMSNuQmtxNdxm53xR588pcRXMf7zuiZLjQnc6\",\n \"width\": 1501,\n \"height\": 1501,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cryptophoenix.org/phoenix\",\n \"name\": \"Phoenix Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Phoenix\",\n \"symbol\": \"PHX\",\n \"decimals\": 18\n },\n \"networkId\": 13381,\n \"rpc\": [\"https://phoenix.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13381.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.phoenixplorer.com/\"],\n \"shortName\": \"Phoenix\",\n \"slug\": \"phoenix\",\n \"testnet\": false\n};\n\nvar c13473 = {\n \"chain\": \"Immutable zkEVM\",\n \"chainId\": 13473,\n \"explorers\": [{\n \"name\": \"Immutable Testnet explorer\",\n \"url\": \"https://explorer.testnet.immutable.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXFUYFW4e6wifbU9LKVq7owM14bnE6ZbbYq3bn1jBP3Mw\",\n \"width\": 1168,\n \"height\": 1168,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://docs.immutable.com/docs/zkEVM/guides/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmXFUYFW4e6wifbU9LKVq7owM14bnE6ZbbYq3bn1jBP3Mw\",\n \"width\": 1168,\n \"height\": 1168,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.immutable.com\",\n \"name\": \"Immutable zkEVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Test IMX\",\n \"symbol\": \"tIMX\",\n \"decimals\": 18\n },\n \"networkId\": 13473,\n \"rpc\": [\"https://immutable-zkevm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13473.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.immutable.com\"],\n \"shortName\": \"imx-testnet\",\n \"slug\": \"immutable-zkevm-testnet\",\n \"testnet\": true\n};\n\nvar c13812 = {\n \"chain\": \"SUS\",\n \"chainId\": 13812,\n \"explorers\": [{\n \"name\": \"Susono\",\n \"url\": \"http://explorer.opn.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"name\": \"Susono\",\n \"nativeCurrency\": {\n \"name\": \"Susono\",\n \"symbol\": \"OPN\",\n \"decimals\": 18\n },\n \"networkId\": 13812,\n \"rpc\": [\"https://susono.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13812.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gateway.opn.network/node/ext/bc/2VsZe5DstWw2bfgdx3YbjKcMsJnNDjni95sZorBEdk9L9Qr9Fr/rpc\"],\n \"shortName\": \"sus\",\n \"slug\": \"susono\",\n \"testnet\": false\n};\n\nvar c14000 = {\n \"chain\": \"SPS-Testnet\",\n \"chainId\": 14000,\n \"explorers\": [{\n \"name\": \"SPS Test Explorer\",\n \"url\": \"https://explorer.3sps.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ssquad.games/\",\n \"name\": \"SPS Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ECG\",\n \"symbol\": \"ECG\",\n \"decimals\": 18\n },\n \"networkId\": 14000,\n \"rpc\": [\"https://sps-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://14000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.3sps.net\"],\n \"shortName\": \"SPS-Test\",\n \"slug\": \"sps-testnet\",\n \"testnet\": true\n};\n\nvar c14853 = {\n \"chain\": \"Humanode Testnet 5\",\n \"chainId\": 14853,\n \"explorers\": [],\n \"faucets\": [\"https://t.me/HumanodeTestnet5FaucetBot\"],\n \"infoURL\": \"https://humanode.io\",\n \"name\": \"Humanode Testnet 5 Israfel\",\n \"nativeCurrency\": {\n \"name\": \"eHMND\",\n \"symbol\": \"eHMND\",\n \"decimals\": 18\n },\n \"networkId\": 14853,\n \"rpc\": [\"https://humanode-testnet-5-israfel.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://14853.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://explorer-rpc-http.testnet5.stages.humanode.io\"],\n \"shortName\": \"hmnd-t5\",\n \"slug\": \"humanode-testnet-5-israfel\",\n \"testnet\": true\n};\n\nvar c15003 = {\n \"chain\": \"Immutable zkEVM\",\n \"chainId\": 15003,\n \"explorers\": [{\n \"name\": \"Immutable Devnet explorer\",\n \"url\": \"https://explorer.dev.immutable.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmXFUYFW4e6wifbU9LKVq7owM14bnE6ZbbYq3bn1jBP3Mw\",\n \"width\": 1168,\n \"height\": 1168,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://docs.immutable.com/docs/zkEVM/guides/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmXFUYFW4e6wifbU9LKVq7owM14bnE6ZbbYq3bn1jBP3Mw\",\n \"width\": 1168,\n \"height\": 1168,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.immutable.com\",\n \"name\": \"Immutable zkEVM Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Dev IMX\",\n \"symbol\": \"dIMX\",\n \"decimals\": 18\n },\n \"networkId\": 15003,\n \"rpc\": [\"https://immutable-zkevm-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dev.immutable.com\"],\n \"shortName\": \"imx-devnet\",\n \"slug\": \"immutable-zkevm-devnet\",\n \"testnet\": false\n};\n\nvar c15535 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 15535,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QI M 11271\",\n \"nativeCurrency\": {\n \"name\": \"QI M 11271 Token\",\n \"symbol\": \"JZW\",\n \"decimals\": 18\n },\n \"networkId\": 15535,\n \"redFlags\": [],\n \"rpc\": [\"https://qi-m-11271.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15535.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/a47e1c06-fa75-4536-a900-1574d198e197\"],\n \"shortName\": \"QI M 11271\",\n \"slug\": \"qi-m-11271\",\n \"testnet\": true\n};\n\nvar c15551 = {\n \"chain\": \"LoopNetwork\",\n \"chainId\": 15551,\n \"explorers\": [{\n \"name\": \"loopscan\",\n \"url\": \"http://explorer.mainnetloop.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"http://theloopnetwork.org/\",\n \"name\": \"LoopNetwork Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LOOP\",\n \"symbol\": \"LOOP\",\n \"decimals\": 18\n },\n \"networkId\": 15551,\n \"rpc\": [\"https://loopnetwork.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15551.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.mainnetloop.com\"],\n \"shortName\": \"loop\",\n \"slug\": \"loopnetwork\",\n \"testnet\": false\n};\n\nvar c15555 = {\n \"chain\": \"Trust EVM Testnet\",\n \"chainId\": 15555,\n \"explorers\": [{\n \"name\": \"Trust EVM Explorer\",\n \"url\": \"https://trustscan.one\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.testnet-dev.trust.one/\"],\n \"infoURL\": \"https://www.trust.one/\",\n \"name\": \"Trust EVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Trust EVM\",\n \"symbol\": \"EVM\",\n \"decimals\": 18\n },\n \"networkId\": 15555,\n \"rpc\": [\"https://trust-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.testnet-dev.trust.one\"],\n \"shortName\": \"TrustTestnet\",\n \"slug\": \"trust-evm-testnet\",\n \"testnet\": true\n};\n\nvar c15557 = {\n \"chain\": \"EOS\",\n \"chainId\": 15557,\n \"explorers\": [{\n \"name\": \"EOS EVM Explorer\",\n \"url\": \"https://explorer.testnet.evm.eosnetwork.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXkK5D5GWizvY1FmL6pV8cYLAbhehKETubktCgh6qDJZb\",\n \"width\": 500,\n \"height\": 750,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eosnetwork.com/eos-evm\",\n \"name\": \"EOS EVM Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"EOS\",\n \"symbol\": \"EOS\",\n \"decimals\": 18\n },\n \"networkId\": 15557,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.testnet.evm.eosnetwork.com\"\n }]\n },\n \"rpc\": [\"https://eos-evm-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://15557.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.testnet.evm.eosnetwork.com\"],\n \"shortName\": \"eos-testnet\",\n \"slug\": \"eos-evm-network-testnet\",\n \"testnet\": true\n};\n\nvar c16000 = {\n \"chain\": \"MTT\",\n \"chainId\": 16000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://metadot.network\",\n \"name\": \"MetaDot Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MetaDot Token\",\n \"symbol\": \"MTT\",\n \"decimals\": 18\n },\n \"networkId\": 16000,\n \"rpc\": [\"https://metadot.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.metadot.network\"],\n \"shortName\": \"mtt\",\n \"slug\": \"metadot\",\n \"testnet\": false\n};\n\nvar c16001 = {\n \"chain\": \"MTTTest\",\n \"chainId\": 16001,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.metadot.network/\"],\n \"infoURL\": \"https://metadot.network\",\n \"name\": \"MetaDot Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MetaDot Token TestNet\",\n \"symbol\": \"MTTest\",\n \"decimals\": 18\n },\n \"networkId\": 16001,\n \"rpc\": [\"https://metadot-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.metadot.network\"],\n \"shortName\": \"mtttest\",\n \"slug\": \"metadot-testnet\",\n \"testnet\": true\n};\n\nvar c16507 = {\n \"chain\": \"Genesys\",\n \"chainId\": 16507,\n \"explorers\": [{\n \"name\": \"GchainExplorer\",\n \"url\": \"https://gchainexplorer.genesys.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreie6nai3yhykcdlsyshn5lbcbyba5y7zwsqg6owcfek2urhoucr6rm\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.genesys.network/\",\n \"name\": \"Genesys Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Genesys\",\n \"symbol\": \"GSYS\",\n \"decimals\": 18\n },\n \"networkId\": 16507,\n \"rpc\": [\"https://genesys.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16507.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.genesys.network\"],\n \"shortName\": \"Genesys\",\n \"slug\": \"genesys\",\n \"testnet\": false\n};\n\nvar c16688 = {\n \"chain\": \"IRIShub\",\n \"chainId\": 16688,\n \"explorers\": [{\n \"name\": \"IRISHub Testnet Cosmos Explorer (IOBScan)\",\n \"url\": \"https://nyancat.iobscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRaSx7AX1VDgcqjwLgSDP4WZmKBHPdHhbjkcEEXPA2Fnc\",\n \"width\": 1062,\n \"height\": 822,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmRaSx7AX1VDgcqjwLgSDP4WZmKBHPdHhbjkcEEXPA2Fnc\",\n \"width\": 1062,\n \"height\": 822,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.irisnet.org\",\n \"name\": \"IRIShub Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Eris\",\n \"symbol\": \"ERIS\",\n \"decimals\": 18\n },\n \"networkId\": 16688,\n \"rpc\": [\"https://irishub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16688.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evmrpc.nyancat.irisnet.org\"],\n \"shortName\": \"nyancat\",\n \"slug\": \"irishub-testnet\",\n \"testnet\": true\n};\n\nvar c16718 = {\n \"chain\": \"ambnet\",\n \"chainId\": 16718,\n \"explorers\": [{\n \"name\": \"AirDAO Network Explorer\",\n \"url\": \"https://airdao.io/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSxXjvWng3Diz4YwXDV2VqSPgMyzLYBNfkjJcr7rzkxom\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://airdao.io\",\n \"name\": \"AirDAO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Amber\",\n \"symbol\": \"AMB\",\n \"decimals\": 18\n },\n \"networkId\": 16718,\n \"rpc\": [\"https://airdao.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16718.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://network.ambrosus.io\"],\n \"shortName\": \"airdao\",\n \"slug\": \"airdao\",\n \"testnet\": false\n};\n\nvar c16888 = {\n \"chain\": \"IVAR\",\n \"chainId\": 16888,\n \"explorers\": [{\n \"name\": \"ivarscan\",\n \"url\": \"https://testnet.ivarscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://tfaucet.ivarex.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmV8UmSwqGF2fxrqVEBTHbkyZueahqyYtkfH2RBF5pNysM\",\n \"width\": 519,\n \"height\": 519,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://ivarex.com\",\n \"name\": \"IVAR Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tIvar\",\n \"symbol\": \"tIVAR\",\n \"decimals\": 18\n },\n \"networkId\": 16888,\n \"rpc\": [\"https://ivar-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.ivarex.com\"],\n \"shortName\": \"tivar\",\n \"slug\": \"ivar-chain-testnet\",\n \"testnet\": true\n};\n\nvar c17000 = {\n \"chain\": \"ETH\",\n \"chainId\": 17000,\n \"explorers\": [{\n \"name\": \"Holesky Explorer\",\n \"url\": \"https://holesky.beaconcha.in\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"otterscan-holesky\",\n \"url\": \"https://holesky.otterscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Holesky Etherscan\",\n \"url\": \"https://holesky.etherscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.holesky.ethpandaops.io\", \"https://holesky-faucet.pk910.de\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://holesky.ethpandaops.io\",\n \"name\": \"Holesky\",\n \"nativeCurrency\": {\n \"name\": \"Testnet ETH\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 17000,\n \"redFlags\": [],\n \"rpc\": [\"https://holesky.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.holesky.ethpandaops.io\", \"https://ethereum-holesky.publicnode.com\", \"wss://ethereum-holesky.publicnode.com\"],\n \"shortName\": \"holesky\",\n \"slug\": \"holesky\",\n \"status\": \"incubating\",\n \"testnet\": true,\n \"title\": \"Ethereum Testnet Holesky\"\n};\n\nvar c17001 = {\n \"chain\": \"ETH\",\n \"chainId\": 17001,\n \"explorers\": [{\n \"name\": \"Redstone Holesky Explorer\",\n \"url\": \"https://explorer.holesky.redstone.xyz\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreieyaqgkgntvxuo5tnhgseladga5q6gutc37dab7kqqfdguhq7vkxq\",\n \"width\": 5836,\n \"height\": 5836,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://redstone.xyz/docs/network-info\",\n \"name\": \"Redstone Holesky Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Redstone Testnet Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 17001,\n \"rpc\": [\"https://redstone-holesky-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.holesky.redstone.xyz\"],\n \"shortName\": \"redstone\",\n \"slug\": \"redstone-holesky-testnet\",\n \"testnet\": true\n};\n\nvar c17026 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 17026,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QI1204I3\",\n \"nativeCurrency\": {\n \"name\": \"QI1204I3 Token\",\n \"symbol\": \"BHOX\",\n \"decimals\": 18\n },\n \"networkId\": 17026,\n \"redFlags\": [],\n \"rpc\": [\"https://qi1204i3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17026.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-test.io/e7aeac38-06b2-4aaa-87b4-2c2da10fa43e\"],\n \"shortName\": \"QI1204I3\",\n \"slug\": \"qi1204i3\",\n \"testnet\": true\n};\n\nvar c17171 = {\n \"chain\": \"G8C\",\n \"chainId\": 17171,\n \"explorers\": [{\n \"name\": \"G8Chain\",\n \"url\": \"https://mainnet.oneg8.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.oneg8.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmbkCVC5vZpVAfq8SuPXR9PhpTRS2m8w6LGqBkhXAvmie6\",\n \"width\": 80,\n \"height\": 80,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oneg8.one\",\n \"name\": \"G8Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"G8Chain\",\n \"symbol\": \"G8C\",\n \"decimals\": 18\n },\n \"networkId\": 17171,\n \"rpc\": [\"https://g8chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17171.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.oneg8.network\"],\n \"shortName\": \"G8Cm\",\n \"slug\": \"g8chain\",\n \"testnet\": false\n};\n\nvar c17180 = {\n \"chain\": \"PLT\",\n \"chainId\": 17180,\n \"explorers\": [{\n \"name\": \"Palettescan\",\n \"url\": \"https://testnet.palettescan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmPCEGZD1p1keTT2YfPp725azx1r9Ci41hejeUuGL2whFA\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPCEGZD1p1keTT2YfPp725azx1r9Ci41hejeUuGL2whFA\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hashpalette.com/\",\n \"name\": \"Palette Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Palette Token\",\n \"symbol\": \"PLT\",\n \"decimals\": 18\n },\n \"networkId\": 17180,\n \"rpc\": [\"https://palette-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17180.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://palette-opennet.com:22000\"],\n \"shortName\": \"PCT\",\n \"slug\": \"palette-chain-testnet\",\n \"testnet\": true\n};\n\nvar c17777 = {\n \"chain\": \"EOS\",\n \"chainId\": 17777,\n \"explorers\": [{\n \"name\": \"EOS EVM Explorer\",\n \"url\": \"https://explorer.evm.eosnetwork.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXkK5D5GWizvY1FmL6pV8cYLAbhehKETubktCgh6qDJZb\",\n \"width\": 500,\n \"height\": 750,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eosnetwork.com/eos-evm\",\n \"name\": \"EOS EVM Network\",\n \"nativeCurrency\": {\n \"name\": \"EOS\",\n \"symbol\": \"EOS\",\n \"decimals\": 18\n },\n \"networkId\": 17777,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.evm.eosnetwork.com\"\n }, {\n \"url\": \"https://app.multichain.org\"\n }]\n },\n \"rpc\": [\"https://eos-evm-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://17777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.evm.eosnetwork.com\"],\n \"shortName\": \"eos\",\n \"slug\": \"eos-evm-network\",\n \"testnet\": false\n};\n\nvar c18000 = {\n \"chain\": \"Game Network\",\n \"chainId\": 18000,\n \"explorers\": [{\n \"name\": \"Game Network\",\n \"url\": \"https://explorer.fod.games\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://goexosphere.com\",\n \"name\": \"Frontier of Dreams Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ZKST\",\n \"symbol\": \"ZKST\",\n \"decimals\": 18\n },\n \"networkId\": 18000,\n \"rpc\": [\"https://frontier-of-dreams-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.fod.games/\"],\n \"shortName\": \"ZKST\",\n \"slug\": \"frontier-of-dreams-testnet\",\n \"testnet\": true\n};\n\nvar c18122 = {\n \"chain\": \"Smart Trade Networks\",\n \"chainId\": 18122,\n \"explorers\": [{\n \"name\": \"stnscan\",\n \"url\": \"https://stnscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmRgZVpjik4cH3Sb6wLRpdnfv9kiMEZ8fugfkzTgk3bpRW\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRgZVpjik4cH3Sb6wLRpdnfv9kiMEZ8fugfkzTgk3bpRW\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.smarttradenetworks.com\",\n \"name\": \"Smart Trade Networks\",\n \"nativeCurrency\": {\n \"name\": \"STN\",\n \"symbol\": \"STN\",\n \"decimals\": 18\n },\n \"networkId\": 18122,\n \"rpc\": [\"https://smart-trade-networks.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18122.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://beefledgerwallet.com:8544\"],\n \"shortName\": \"STN\",\n \"slug\": \"smart-trade-networks\",\n \"testnet\": false\n};\n\nvar c18159 = {\n \"chain\": \"POM\",\n \"chainId\": 18159,\n \"explorers\": [{\n \"name\": \"explorer-proofofmemes\",\n \"url\": \"https://memescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://proofofmemes.org\",\n \"name\": \"Proof Of Memes\",\n \"nativeCurrency\": {\n \"name\": \"Proof Of Memes\",\n \"symbol\": \"POM\",\n \"decimals\": 18\n },\n \"networkId\": 18159,\n \"rpc\": [\"https://proof-of-memes.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18159.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.memescan.io\", \"https://mainnet-rpc2.memescan.io\", \"https://mainnet-rpc3.memescan.io\", \"https://mainnet-rpc4.memescan.io\"],\n \"shortName\": \"pom\",\n \"slug\": \"proof-of-memes\",\n \"testnet\": false,\n \"title\": \"Proof Of Memes Mainnet\"\n};\n\nvar c18181 = {\n \"chain\": \"G8C\",\n \"chainId\": 18181,\n \"explorers\": [{\n \"name\": \"G8Chain\",\n \"url\": \"https://testnet.oneg8.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.oneg8.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmbkCVC5vZpVAfq8SuPXR9PhpTRS2m8w6LGqBkhXAvmie6\",\n \"width\": 80,\n \"height\": 80,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oneg8.one\",\n \"name\": \"G8Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"G8Coin\",\n \"symbol\": \"G8C\",\n \"decimals\": 18\n },\n \"networkId\": 18181,\n \"rpc\": [\"https://g8chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18181.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.oneg8.network\"],\n \"shortName\": \"G8Ct\",\n \"slug\": \"g8chain-testnet\",\n \"testnet\": true\n};\n\nvar c18686 = {\n \"chain\": \"MXC zkEVM\",\n \"chainId\": 18686,\n \"explorers\": [{\n \"name\": \"MXC zkEVM Mainnet\",\n \"url\": \"https://explorer.mxc.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdGCthKA11K9kCZJdbTP5WPAyq1wiRZ3REn6KG58MrWaE\",\n \"width\": 159,\n \"height\": 159,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://doc.mxc.com/docs/intro\",\n \"name\": \"MXC zkEVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MXC zkEVM Mainnet\",\n \"symbol\": \"MXC\",\n \"decimals\": 18\n },\n \"networkId\": 18686,\n \"rpc\": [\"https://mxc-zkevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18686.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mxc.com\"],\n \"shortName\": \"MXCzkEVM\",\n \"slug\": \"mxc-zkevm\",\n \"testnet\": false\n};\n\nvar c19011 = {\n \"chain\": \"HOME Verse\",\n \"chainId\": 19011,\n \"explorers\": [{\n \"name\": \"HOME Verse Explorer\",\n \"url\": \"https://explorer.oasys.homeverse.games\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeGb65zSworzoHmwK3jdkPtEsQZMUSJRxf8K8Feg56soU\",\n \"width\": 597,\n \"height\": 597,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.homeverse.games/\",\n \"name\": \"HOME Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 19011,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://home-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://19011.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mainnet.oasys.homeverse.games/\"],\n \"shortName\": \"HMV\",\n \"slug\": \"home-verse\",\n \"testnet\": false\n};\n\nvar c19683 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 19683,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"ST 12-07 V1\",\n \"nativeCurrency\": {\n \"name\": \"ST 12-07 V1 Token\",\n \"symbol\": \"XRL\",\n \"decimals\": 18\n },\n \"networkId\": 19683,\n \"redFlags\": [],\n \"rpc\": [\"https://st-12-07-v1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://19683.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-test.io/d26b972e-1832-4d3a-bf7b-d0ce1f4331c2\"],\n \"shortName\": \"ST 12-07 V1\",\n \"slug\": \"st-12-07-v1\",\n \"testnet\": true\n};\n\nvar c19845 = {\n \"chain\": \"BTCIX\",\n \"chainId\": 19845,\n \"explorers\": [{\n \"name\": \"BTCIXScan\",\n \"url\": \"https://btcixscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bitcolojix.org\",\n \"name\": \"BTCIX Network\",\n \"nativeCurrency\": {\n \"name\": \"BTCIX Network\",\n \"symbol\": \"BTCIX\",\n \"decimals\": 18\n },\n \"networkId\": 19845,\n \"rpc\": [\"https://btcix-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://19845.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seed.btcix.org/rpc\"],\n \"shortName\": \"btcix\",\n \"slug\": \"btcix-network\",\n \"testnet\": false\n};\n\nvar c20001 = {\n \"chain\": \"ETHW\",\n \"chainId\": 20001,\n \"explorers\": [{\n \"name\": \"CamelarkScan\",\n \"url\": \"https://scan.camelark.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeJerrsURFNt2LL7DE7TxeunjrQXiuezdfHyqmsbwX3MZ\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.camelark.com\",\n \"name\": \"Camelark Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EthereumPoW\",\n \"symbol\": \"ETHW\",\n \"decimals\": 18\n },\n \"networkId\": 20001,\n \"rpc\": [\"https://camelark.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-http-rpc.camelark.com\"],\n \"shortName\": \"Camelark\",\n \"slug\": \"camelark\",\n \"testnet\": false\n};\n\nvar c20729 = {\n \"chain\": \"CLO\",\n \"chainId\": 20729,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.callisto.network/\"],\n \"infoURL\": \"https://callisto.network\",\n \"name\": \"Callisto Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Callisto\",\n \"symbol\": \"CLO\",\n \"decimals\": 18\n },\n \"networkId\": 79,\n \"rpc\": [\"https://callisto-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20729.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.callisto.network/\"],\n \"shortName\": \"CLOTestnet\",\n \"slug\": \"callisto-testnet\",\n \"testnet\": true\n};\n\nvar c20736 = {\n \"chain\": \"P12\",\n \"chainId\": 20736,\n \"explorers\": [{\n \"name\": \"P12 Chain Explorer\",\n \"url\": \"https://explorer.p12.games\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreieiro4imoujeewc4r4thf5hxj47l56j2iwuz6d6pdj6ieb6ub3h7e\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://p12.network\",\n \"name\": \"P12 Chain\",\n \"nativeCurrency\": {\n \"name\": \"Hooked P2\",\n \"symbol\": \"hP2\",\n \"decimals\": 18\n },\n \"networkId\": 20736,\n \"rpc\": [\"https://p12-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20736.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-chain.p12.games\"],\n \"shortName\": \"p12\",\n \"slug\": \"p12-chain\",\n \"testnet\": false\n};\n\nvar c21337 = {\n \"chain\": \"CENNZnet\",\n \"chainId\": 21337,\n \"explorers\": [{\n \"name\": \"UNcover\",\n \"url\": \"https://uncoverexplorer.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWhNm7tTi6SYbiumULDRk956hxgqaZSX77vcxBNn8fvnw\",\n \"width\": 112,\n \"height\": 112,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://cennz.net\",\n \"name\": \"CENNZnet Azalea\",\n \"nativeCurrency\": {\n \"name\": \"CPAY\",\n \"symbol\": \"CPAY\",\n \"decimals\": 18\n },\n \"networkId\": 21337,\n \"rpc\": [\"https://cennznet-azalea.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://21337.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cennznet.unfrastructure.io/public\"],\n \"shortName\": \"cennz-a\",\n \"slug\": \"cennznet-azalea\",\n \"testnet\": false\n};\n\nvar c21816 = {\n \"chain\": \"OML\",\n \"chainId\": 21816,\n \"explorers\": [{\n \"name\": \"omChain Explorer\",\n \"url\": \"https://explorer.omchain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQtEHaejiDbmiCvbBYw9jNQv3DLK5XHCQwLRfnLNpdN5j\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://omchain.io\",\n \"name\": \"omChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"omChain\",\n \"symbol\": \"OMC\",\n \"decimals\": 18\n },\n \"networkId\": 21816,\n \"rpc\": [\"https://omchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://21816.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://seed.omchain.io\"],\n \"shortName\": \"omc\",\n \"slug\": \"omchain\",\n \"testnet\": false\n};\n\nvar c21912 = {\n \"chain\": \"BSL\",\n \"chainId\": 21912,\n \"explorers\": [{\n \"name\": \"BSL Mainnet Explorer\",\n \"url\": \"https://scan.nftruth.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://bsquarelab.com/\",\n \"name\": \"BSL Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Origin NFT\",\n \"symbol\": \"ONF\",\n \"decimals\": 18\n },\n \"networkId\": 21912,\n \"rpc\": [\"https://bsl.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://21912.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://rpc-mainnet.nftruth.io:8545\", \"ws://rpc-mainnet.nftruth.io:8645\"],\n \"shortName\": \"onf\",\n \"slug\": \"bsl\",\n \"testnet\": false\n};\n\nvar c22023 = {\n \"chain\": \"Taycan\",\n \"chainId\": 22023,\n \"explorers\": [{\n \"name\": \"Taycan Explorer(Blockscout)\",\n \"url\": \"https://taycan-evmscan.hupayx.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Taycan Cosmos Explorer(BigDipper)\",\n \"url\": \"https://taycan-cosmoscan.hupayx.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidvjcc73v747lqlyrhgbnkvkdepdvepo6baj6hmjsmjtvdyhmzzmq\",\n \"width\": 1000,\n \"height\": 1206,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hupayx.io\",\n \"name\": \"Taycan\",\n \"nativeCurrency\": {\n \"name\": \"shuffle\",\n \"symbol\": \"SFL\",\n \"decimals\": 18\n },\n \"networkId\": 22023,\n \"rpc\": [\"https://taycan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://22023.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://taycan-rpc.hupayx.io:8545\"],\n \"shortName\": \"SFL\",\n \"slug\": \"taycan\",\n \"testnet\": false\n};\n\nvar c22040 = {\n \"chain\": \"ambnet-test\",\n \"chainId\": 22040,\n \"explorers\": [{\n \"name\": \"AirDAO Network Explorer\",\n \"url\": \"https://testnet.airdao.io/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSxXjvWng3Diz4YwXDV2VqSPgMyzLYBNfkjJcr7rzkxom\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://testnet.airdao.io\",\n \"name\": \"AirDAO Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Amber\",\n \"symbol\": \"AMB\",\n \"decimals\": 18\n },\n \"networkId\": 22040,\n \"rpc\": [\"https://airdao-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://22040.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://network.ambrosus-test.io\"],\n \"shortName\": \"airdao-test\",\n \"slug\": \"airdao-testnet\",\n \"testnet\": true\n};\n\nvar c22222 = {\n \"chain\": \"ETH\",\n \"chainId\": 22222,\n \"explorers\": [{\n \"name\": \"Nautscan\",\n \"url\": \"https://nautscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNutSgM7n6aJPPDiofe9Dm1epy1RcYTMvugukLUK2vmPM\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNutSgM7n6aJPPDiofe9Dm1epy1RcYTMvugukLUK2vmPM\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.nautchain.xyz\",\n \"name\": \"Nautilus Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Zebec\",\n \"symbol\": \"ZBC\",\n \"decimals\": 18\n },\n \"networkId\": 22222,\n \"rpc\": [\"https://nautilus.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://22222.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.nautilus.nautchain.xyz\"],\n \"shortName\": \"NAUTCHAIN\",\n \"slug\": \"nautilus\",\n \"testnet\": false\n};\n\nvar c22776 = {\n \"chain\": \"MAP\",\n \"chainId\": 22776,\n \"explorers\": [{\n \"name\": \"mapscan\",\n \"url\": \"https://mapscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcLdQ8gM4iHv3CCKA9HuxmzTxY4WhjWtepUVCc3dpzKxD\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://maplabs.io\",\n \"name\": \"MAP Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MAPO\",\n \"symbol\": \"MAPO\",\n \"decimals\": 18\n },\n \"networkId\": 22776,\n \"rpc\": [\"https://map.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://22776.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.maplabs.io\"],\n \"shortName\": \"map\",\n \"slip44\": 60,\n \"slug\": \"map\",\n \"testnet\": false\n};\n\nvar c23006 = {\n \"chain\": \"ABN\",\n \"chainId\": 23006,\n \"explorers\": [{\n \"name\": \"Antofy Testnet\",\n \"url\": \"https://test.antofyscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.antofy.io\"],\n \"icon\": {\n \"url\": \"ipfs://QmdTfku81ohnG9ECU1Xswmeumt678cBhwHWuFYZ7i1Qsto\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://antofy.io\",\n \"name\": \"Antofy Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Antofy\",\n \"symbol\": \"ABN\",\n \"decimals\": 18\n },\n \"networkId\": 23006,\n \"rpc\": [\"https://antofy-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23006.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.antofy.io\"],\n \"shortName\": \"ABNt\",\n \"slug\": \"antofy-testnet\",\n \"testnet\": true\n};\n\nvar c23118 = {\n \"chain\": \"Opside\",\n \"chainId\": 23118,\n \"explorers\": [{\n \"name\": \"opsideInfo\",\n \"url\": \"https://opside.info\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.opside.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmeCyZeibUoHNoYGzy1GkzH2uhxyRHKvH51PdaUMer4VTo\",\n \"width\": 591,\n \"height\": 591,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://opside.network\",\n \"name\": \"Opside Testnet\",\n \"nativeCurrency\": {\n \"name\": \"IDE\",\n \"symbol\": \"IDE\",\n \"decimals\": 18\n },\n \"networkId\": 23118,\n \"rpc\": [\"https://opside-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23118.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testrpc.opside.network\"],\n \"shortName\": \"opside\",\n \"slug\": \"opside-testnet\",\n \"testnet\": true\n};\n\nvar c23294 = {\n \"chain\": \"Sapphire\",\n \"chainId\": 23294,\n \"explorers\": [{\n \"name\": \"Oasis Sapphire Explorer\",\n \"url\": \"https://explorer.sapphire.oasis.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiespupb52akiwrexxg7g72mh7m7h7lum5hmqijmpdh3kmuunzclha\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.oasis.io/dapp/sapphire\",\n \"name\": \"Oasis Sapphire\",\n \"nativeCurrency\": {\n \"name\": \"Sapphire Rose\",\n \"symbol\": \"ROSE\",\n \"decimals\": 18\n },\n \"networkId\": 23294,\n \"rpc\": [\"https://oasis-sapphire.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23294.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sapphire.oasis.io\", \"wss://sapphire.oasis.io/ws\"],\n \"shortName\": \"sapphire\",\n \"slug\": \"oasis-sapphire\",\n \"testnet\": false\n};\n\nvar c23295 = {\n \"chain\": \"Sapphire\",\n \"chainId\": 23295,\n \"explorers\": [{\n \"name\": \"Oasis Sapphire Testnet Explorer\",\n \"url\": \"https://testnet.explorer.sapphire.oasis.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiespupb52akiwrexxg7g72mh7m7h7lum5hmqijmpdh3kmuunzclha\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.oasis.io/dapp/sapphire\",\n \"name\": \"Oasis Sapphire Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sapphire Test Rose\",\n \"symbol\": \"TEST\",\n \"decimals\": 18\n },\n \"networkId\": 23295,\n \"rpc\": [\"https://oasis-sapphire-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23295.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.sapphire.oasis.dev\", \"wss://testnet.sapphire.oasis.dev/ws\"],\n \"shortName\": \"sapphire-testnet\",\n \"slug\": \"oasis-sapphire-testnet\",\n \"testnet\": true\n};\n\nvar c23934 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 23934,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"ST 11-16 v7 Regression\",\n \"nativeCurrency\": {\n \"name\": \"ST 11-16 v7 Regression Token\",\n \"symbol\": \"WLA\",\n \"decimals\": 18\n },\n \"networkId\": 23934,\n \"redFlags\": [],\n \"rpc\": [\"https://st-11-16-v7-regression.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23934.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc\"],\n \"shortName\": \"ST 11-16 v7 Regression\",\n \"slug\": \"st-11-16-v7-regression\",\n \"testnet\": true\n};\n\nvar c24484 = {\n \"chain\": \"WEB\",\n \"chainId\": 24484,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://webchain.network\",\n \"name\": \"Webchain\",\n \"nativeCurrency\": {\n \"name\": \"Webchain Ether\",\n \"symbol\": \"WEB\",\n \"decimals\": 18\n },\n \"networkId\": 37129,\n \"rpc\": [],\n \"shortName\": \"web\",\n \"slip44\": 227,\n \"slug\": \"webchain\",\n \"testnet\": false\n};\n\nvar c24734 = {\n \"chain\": \"MINTME\",\n \"chainId\": 24734,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.mintme.com\",\n \"name\": \"MintMe.com Coin\",\n \"nativeCurrency\": {\n \"name\": \"MintMe.com Coin\",\n \"symbol\": \"MINTME\",\n \"decimals\": 18\n },\n \"networkId\": 37480,\n \"rpc\": [\"https://mintme-com-coin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://24734.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node1.mintme.com\"],\n \"shortName\": \"mintme\",\n \"slug\": \"mintme-com-coin\",\n \"testnet\": false\n};\n\nvar c25888 = {\n \"chain\": \"HammerChain\",\n \"chainId\": 25888,\n \"explorers\": [{\n \"name\": \"Hammer Chain Explorer\",\n \"url\": \"https://www.hammerchain.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.hammerchain.io\",\n \"name\": \"Hammer Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GOLDT\",\n \"symbol\": \"GOLDT\",\n \"decimals\": 18\n },\n \"networkId\": 25888,\n \"rpc\": [\"https://hammer-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://25888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://www.hammerchain.io/rpc\"],\n \"shortName\": \"GOLDT\",\n \"slug\": \"hammer-chain\",\n \"testnet\": false\n};\n\nvar c25925 = {\n \"chain\": \"BKC\",\n \"chainId\": 25925,\n \"explorers\": [{\n \"name\": \"bkcscan-testnet\",\n \"url\": \"https://testnet.bkcscan.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmYFYwyquipwc9gURQGcEd4iAq7pq15chQrJ3zJJe9HuFT\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.bitkubchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmYFYwyquipwc9gURQGcEd4iAq7pq15chQrJ3zJJe9HuFT\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.bitkubchain.com/\",\n \"name\": \"Bitkub Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitkub Coin\",\n \"symbol\": \"tKUB\",\n \"decimals\": 18\n },\n \"networkId\": 25925,\n \"rpc\": [\"https://bitkub-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://25925.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.bitkubchain.io\", \"wss://wss-testnet.bitkubchain.io\"],\n \"shortName\": \"bkct\",\n \"slug\": \"bitkub-chain-testnet\",\n \"testnet\": true\n};\n\nvar c26026 = {\n \"chain\": \"tFRM\",\n \"chainId\": 26026,\n \"explorers\": [{\n \"name\": \"polkadotjs\",\n \"url\": \"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.dev.svcs.ferrumnetwork.io#/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://testnet.faucet.ferrumnetwork.io\"],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://ferrum.network\",\n \"name\": \"Ferrum Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ferrum\",\n \"symbol\": \"tFRM\",\n \"decimals\": 18\n },\n \"networkId\": 26026,\n \"rpc\": [\"https://ferrum-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://26026.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet.dev.svcs.ferrumnetwork.io:9933\"],\n \"shortName\": \"frm\",\n \"slug\": \"ferrum-testnet\",\n \"testnet\": true\n};\n\nvar c26600 = {\n \"chain\": \"HTZ\",\n \"chainId\": 26600,\n \"explorers\": [{\n \"name\": \"Hertz Scan\",\n \"url\": \"https://hertzscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmf3GYbPXmTDpSP6t7Ug2j5HjEwrY5oGhBDP7d4TQHvGnG\",\n \"width\": 162,\n \"height\": 129,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://Qmf3GYbPXmTDpSP6t7Ug2j5HjEwrY5oGhBDP7d4TQHvGnG\",\n \"width\": 162,\n \"height\": 129,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.hertz-network.com\",\n \"name\": \"Hertz Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Hertz\",\n \"symbol\": \"HTZ\",\n \"decimals\": 18\n },\n \"networkId\": 26600,\n \"rpc\": [\"https://hertz-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://26600.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.hertzscan.com\"],\n \"shortName\": \"HTZ\",\n \"slug\": \"hertz-network\",\n \"testnet\": false\n};\n\nvar c26863 = {\n \"chain\": \"OasisChain\",\n \"chainId\": 26863,\n \"explorers\": [{\n \"name\": \"OasisChain Explorer\",\n \"url\": \"https://scan.oasischain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://faucet.oasischain.io\"],\n \"infoURL\": \"https://scan.oasischain.io\",\n \"name\": \"OasisChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAC\",\n \"symbol\": \"OAC\",\n \"decimals\": 18\n },\n \"networkId\": 26863,\n \"rpc\": [\"https://oasischain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://26863.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.oasischain.io\", \"https://rpc2.oasischain.io\", \"https://rpc3.oasischain.io\"],\n \"shortName\": \"OAC\",\n \"slug\": \"oasischain\",\n \"testnet\": false\n};\n\nvar c28528 = {\n \"chain\": \"ETH\",\n \"chainId\": 28528,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockscout.com/optimism/bedrock-alpha\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://community.optimism.io/docs/developers/bedrock\",\n \"name\": \"Optimism Bedrock (Goerli Alpha Testnet)\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 28528,\n \"rpc\": [\"https://optimism-bedrock-goerli-alpha-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://28528.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://alpha-1-replica-0.bedrock-goerli.optimism.io\", \"https://alpha-1-replica-1.bedrock-goerli.optimism.io\", \"https://alpha-1-replica-2.bedrock-goerli.optimism.io\", \"https://alpha-1-replica-2.bedrock-goerli.optimism.io\"],\n \"shortName\": \"obgor\",\n \"slug\": \"optimism-bedrock-goerli-alpha-testnet\",\n \"testnet\": true\n};\n\nvar c29548 = {\n \"chain\": \"MCH Verse\",\n \"chainId\": 29548,\n \"explorers\": [{\n \"name\": \"MCH Verse Explorer\",\n \"url\": \"https://explorer.oasys.mycryptoheroes.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZZnwR1y6cU1sare2TQmwqkNDLXQxD4GdPrmHLmUoPtbU\",\n \"width\": 4000,\n \"height\": 4000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.mycryptoheroes.net/verse\",\n \"name\": \"MCH Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 29548,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://mch-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://29548.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.oasys.mycryptoheroes.net\"],\n \"shortName\": \"MCHV\",\n \"slug\": \"mch-verse\",\n \"testnet\": false\n};\n\nvar c30067 = {\n \"chain\": \"PieceNetwork\",\n \"chainId\": 30067,\n \"explorers\": [{\n \"name\": \"Piece Scan\",\n \"url\": \"https://testnet-scan.piecenetwork.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://piecenetwork.com/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmWAU39z1kcYshAqkENRH8qUjfR5CJehCxA4GiC33p3HpH\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://piecenetwork.com\",\n \"name\": \"Piece testnet\",\n \"nativeCurrency\": {\n \"name\": \"ECE\",\n \"symbol\": \"ECE\",\n \"decimals\": 18\n },\n \"networkId\": 30067,\n \"rpc\": [\"https://piece-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://30067.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc0.piecenetwork.com\"],\n \"shortName\": \"Piece\",\n \"slug\": \"piece-testnet\",\n \"testnet\": true\n};\n\nvar c30103 = {\n \"chain\": \"CAU\",\n \"chainId\": 30103,\n \"explorers\": [{\n \"name\": \"canxium explorer\",\n \"url\": \"https://cerium-explorer.canxium.net\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXHSbtVNCJVfe2CvRH7njdyf2SrX5u5bNTfvhqjLeFN2A\",\n \"width\": 938,\n \"height\": 938,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://canxium.org\",\n \"name\": \"Cerium Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Canxium\",\n \"symbol\": \"CAU\",\n \"decimals\": 18\n },\n \"networkId\": 30103,\n \"rpc\": [\"https://cerium-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://30103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cerium-rpc.canxium.net\"],\n \"shortName\": \"ceri\",\n \"slug\": \"cerium-testnet\",\n \"testnet\": true\n};\n\nvar c30891 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 30891,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"Jambon's Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Jambon's Testnet Token\",\n \"symbol\": \"CXY\",\n \"decimals\": 18\n },\n \"networkId\": 30891,\n \"redFlags\": [],\n \"rpc\": [\"https://jambon-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://30891.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/e8b04790-d50c-4bb1-89ba-7bd140b674f3\"],\n \"shortName\": \"Jambon's Testnet\",\n \"slug\": \"jambon-s-testnet\",\n \"testnet\": true\n};\n\nvar c31102 = {\n \"chain\": \"ESN\",\n \"chainId\": 31102,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://ethersocial.org\",\n \"name\": \"Ethersocial Network\",\n \"nativeCurrency\": {\n \"name\": \"Ethersocial Network Ether\",\n \"symbol\": \"ESN\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://ethersocial-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://31102.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.esn.gonspool.com\"],\n \"shortName\": \"esn\",\n \"slip44\": 31102,\n \"slug\": \"ethersocial-network\",\n \"testnet\": false\n};\n\nvar c31223 = {\n \"chain\": \"CLD\",\n \"chainId\": 31223,\n \"explorers\": [{\n \"name\": \"cloudtxscan\",\n \"url\": \"https://scan.cloudtx.finance\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSEsi71AdA5HYH6VNC5QUQezFg1C7BiVQJdx1VVfGz3g3\",\n \"width\": 713,\n \"height\": 830,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cloudtx.finance\",\n \"name\": \"CloudTx Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CloudTx\",\n \"symbol\": \"CLD\",\n \"decimals\": 18\n },\n \"networkId\": 31223,\n \"rpc\": [\"https://cloudtx.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://31223.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.cloudtx.finance\"],\n \"shortName\": \"CLDTX\",\n \"slug\": \"cloudtx\",\n \"testnet\": false\n};\n\nvar c31224 = {\n \"chain\": \"CloudTx\",\n \"chainId\": 31224,\n \"explorers\": [{\n \"name\": \"cloudtxexplorer\",\n \"url\": \"https://explorer.cloudtx.finance\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.cloudtx.finance\"],\n \"icon\": {\n \"url\": \"ipfs://QmSEsi71AdA5HYH6VNC5QUQezFg1C7BiVQJdx1VVfGz3g3\",\n \"width\": 713,\n \"height\": 830,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cloudtx.finance/\",\n \"name\": \"CloudTx Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CloudTx\",\n \"symbol\": \"CLD\",\n \"decimals\": 18\n },\n \"networkId\": 31224,\n \"rpc\": [\"https://cloudtx-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://31224.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.cloudtx.finance\"],\n \"shortName\": \"CLD\",\n \"slug\": \"cloudtx-testnet\",\n \"testnet\": true\n};\n\nvar c31337 = {\n \"chain\": \"GO\",\n \"chainId\": 31337,\n \"explorers\": [{\n \"name\": \"GoChain Testnet Explorer\",\n \"url\": \"https://testnet-explorer.gochain.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://gochain.io\",\n \"name\": \"GoChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"GoChain Coin\",\n \"symbol\": \"GO\",\n \"decimals\": 18\n },\n \"networkId\": 31337,\n \"rpc\": [\"https://gochain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://31337.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.gochain.io\"],\n \"shortName\": \"got\",\n \"slip44\": 6060,\n \"slug\": \"gochain-testnet\",\n \"testnet\": true\n};\n\nvar c31415 = {\n \"chain\": \"FIL\",\n \"chainId\": 31415,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Wallaby testnet\",\n \"nativeCurrency\": {\n \"name\": \"testnet filecoin\",\n \"symbol\": \"tFIL\",\n \"decimals\": 18\n },\n \"networkId\": 31415,\n \"rpc\": [],\n \"shortName\": \"filecoin-wallaby\",\n \"slip44\": 1,\n \"slug\": \"filecoin-wallaby-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c32520 = {\n \"chain\": \"Brise\",\n \"chainId\": 32520,\n \"explorers\": [{\n \"name\": \"Brise Scan\",\n \"url\": \"https://brisescan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmY3vKe1rG9AyHSGH1ouP3ER3EVUZRtRrFbFZEfEpMSd4V\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmY3vKe1rG9AyHSGH1ouP3ER3EVUZRtRrFbFZEfEpMSd4V\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bitgert.com/\",\n \"name\": \"Bitgert Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitrise Token\",\n \"symbol\": \"Brise\",\n \"decimals\": 18\n },\n \"networkId\": 32520,\n \"rpc\": [\"https://bitgert.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://32520.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.icecreamswap.com\", \"https://mainnet-rpc.brisescan.com\", \"https://chainrpc.com\", \"https://serverrpc.com\"],\n \"shortName\": \"Brise\",\n \"slug\": \"bitgert\",\n \"testnet\": false\n};\n\nvar c32659 = {\n \"chain\": \"FSN\",\n \"chainId\": 32659,\n \"explorers\": [{\n \"name\": \"fsnscan\",\n \"url\": \"https://fsnscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSAFx34SKNi7a139agX12f68oBMo2Ktt9c8yD8aFa14gd\",\n \"width\": 48,\n \"height\": 51,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmX3tsEoj7SdaBLLV8VyyCUAmymdEGiSGeuTbxMrEMVvth\",\n \"width\": 31,\n \"height\": 31,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://fusion.org\",\n \"name\": \"Fusion Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Fusion\",\n \"symbol\": \"FSN\",\n \"decimals\": 18\n },\n \"networkId\": 32659,\n \"rpc\": [\"https://fusion.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://32659.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.fusionnetwork.io\", \"wss://mainnet.fusionnetwork.io\"],\n \"shortName\": \"fsn\",\n \"slip44\": 288,\n \"slug\": \"fusion\",\n \"testnet\": false\n};\n\nvar c32769 = {\n \"chain\": \"ZIL\",\n \"chainId\": 32769,\n \"explorers\": [{\n \"name\": \"Zilliqa EVM Explorer\",\n \"url\": \"https://evmx.zilliqa.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTREXNgGtUhSoxFsrkhTe5LUnDBTKL5byaX8kpET6UuKp\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.zilliqa.com/\",\n \"name\": \"Zilliqa EVM\",\n \"nativeCurrency\": {\n \"name\": \"Zilliqa\",\n \"symbol\": \"ZIL\",\n \"decimals\": 18\n },\n \"networkId\": 32769,\n \"rpc\": [\"https://zilliqa-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://32769.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.zilliqa.com\"],\n \"shortName\": \"zil\",\n \"slug\": \"zilliqa-evm\",\n \"testnet\": false\n};\n\nvar c32990 = {\n \"chain\": \"ZIL\",\n \"chainId\": 32990,\n \"explorers\": [{\n \"name\": \"Zilliqa EVM Isolated Server Explorer\",\n \"url\": \"https://devex.zilliqa.com/?network=https://zilliqa-isolated-server.zilliqa.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://dev-wallet.zilliqa.com/faucet?network=isolated_server\"],\n \"icon\": {\n \"url\": \"ipfs://QmTREXNgGtUhSoxFsrkhTe5LUnDBTKL5byaX8kpET6UuKp\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.zilliqa.com/\",\n \"name\": \"Zilliqa EVM Isolated Server\",\n \"nativeCurrency\": {\n \"name\": \"Zilliqa\",\n \"symbol\": \"ZIL\",\n \"decimals\": 18\n },\n \"networkId\": 32990,\n \"rpc\": [\"https://zilliqa-evm-isolated-server.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://32990.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://zilliqa-isolated-server.zilliqa.com/\"],\n \"shortName\": \"zil-isolated-server\",\n \"slug\": \"zilliqa-evm-isolated-server\",\n \"testnet\": false\n};\n\nvar c33101 = {\n \"chain\": \"ZIL\",\n \"chainId\": 33101,\n \"explorers\": [{\n \"name\": \"Zilliqa EVM Explorer\",\n \"url\": \"https://evmx.zilliqa.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://dev-wallet.zilliqa.com/faucet?network=testnet\"],\n \"infoURL\": \"https://www.zilliqa.com/\",\n \"name\": \"Zilliqa EVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Zilliqa\",\n \"symbol\": \"ZIL\",\n \"decimals\": 18\n },\n \"networkId\": 33101,\n \"rpc\": [\"https://zilliqa-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dev-api.zilliqa.com\"],\n \"shortName\": \"zil-testnet\",\n \"slug\": \"zilliqa-evm-testnet\",\n \"testnet\": true\n};\n\nvar c33210 = {\n \"chain\": \"CLOUDVERSE\",\n \"chainId\": 33210,\n \"explorers\": [{\n \"name\": \"CLOUDVERSE Explorer\",\n \"url\": \"https://subnets.avax.network/cloudverse\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://muadao.build/\",\n \"name\": \"Cloudverse Subnet\",\n \"nativeCurrency\": {\n \"name\": \"XCLOUD\",\n \"symbol\": \"XCLOUD\",\n \"decimals\": 18\n },\n \"networkId\": 33210,\n \"rpc\": [\"https://cloudverse-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33210.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/cloudverse/mainnet/rpc\"],\n \"shortName\": \"cloudverse\",\n \"slug\": \"cloudverse-subnet\",\n \"testnet\": false\n};\n\nvar c33333 = {\n \"chain\": \"AVS\",\n \"chainId\": 33333,\n \"explorers\": [{\n \"name\": \"avescan\",\n \"url\": \"https://avescan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeKQVv2QneHaaggw2NfpZ7DGMdjVhPywTdse5RzCs4oGn\",\n \"width\": 232,\n \"height\": 232,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmeKQVv2QneHaaggw2NfpZ7DGMdjVhPywTdse5RzCs4oGn\",\n \"width\": 232,\n \"height\": 232,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://avescoin.io\",\n \"name\": \"Aves Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Aves\",\n \"symbol\": \"AVS\",\n \"decimals\": 18\n },\n \"networkId\": 33333,\n \"rpc\": [\"https://aves.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33333.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.avescoin.io\"],\n \"shortName\": \"avs\",\n \"slug\": \"aves\",\n \"testnet\": false\n};\n\nvar c33385 = {\n \"chain\": \"ZIL\",\n \"chainId\": 33385,\n \"explorers\": [{\n \"name\": \"Zilliqa EVM Devnet Explorer\",\n \"url\": \"https://otterscan.devnet.zilliqa.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.devnet.zilliqa.com/\"],\n \"icon\": {\n \"url\": \"ipfs://QmTREXNgGtUhSoxFsrkhTe5LUnDBTKL5byaX8kpET6UuKp\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.zilliqa.com/\",\n \"name\": \"Zilliqa EVM Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Zilliqa\",\n \"symbol\": \"ZIL\",\n \"decimals\": 18\n },\n \"networkId\": 33385,\n \"rpc\": [\"https://zilliqa-evm-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33385.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.devnet.zilliqa.com/\"],\n \"shortName\": \"zil-devnet\",\n \"slug\": \"zilliqa-evm-devnet\",\n \"testnet\": false\n};\n\nvar c33469 = {\n \"chain\": \"ZIL\",\n \"chainId\": 33469,\n \"explorers\": [{\n \"name\": \"Zilliqa 2 EVM Devnet Explorer\",\n \"url\": \"https://explorer.zq2-devnet.zilstg.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.zq2-devnet.zilstg.dev\"],\n \"icon\": {\n \"url\": \"ipfs://QmTREXNgGtUhSoxFsrkhTe5LUnDBTKL5byaX8kpET6UuKp\",\n \"width\": 2048,\n \"height\": 2048,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.zilliqa.com/\",\n \"name\": \"Zilliqa 2 EVM Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Zilliqa\",\n \"symbol\": \"ZIL\",\n \"decimals\": 18\n },\n \"networkId\": 33469,\n \"rpc\": [\"https://zilliqa-2-evm-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33469.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.zq2-devnet.zilstg.dev\"],\n \"shortName\": \"zq2-devnet\",\n \"slug\": \"zilliqa-2-evm-devnet\",\n \"testnet\": false\n};\n\nvar c33909 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 33909,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"Reg1116test\",\n \"nativeCurrency\": {\n \"name\": \"Reg1116test Token\",\n \"symbol\": \"JUO\",\n \"decimals\": 18\n },\n \"networkId\": 33909,\n \"redFlags\": [],\n \"rpc\": [\"https://reg1116test.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://33909.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc\"],\n \"shortName\": \"Reg1116test\",\n \"slug\": \"reg1116test\",\n \"testnet\": true\n};\n\nvar c34443 = {\n \"chain\": \"ETH\",\n \"chainId\": 34443,\n \"explorers\": [{\n \"name\": \"modescout\",\n \"url\": \"https://explorer.mode.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidi5y7afj5z4xrz7uz5rkg2mcsv2p2n4ui4g7q4k4ecdz65i2agou\",\n \"width\": 2160,\n \"height\": 2160,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.mode.network/\",\n \"name\": \"Mode\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 34443,\n \"rpc\": [\"https://mode.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://34443.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.mode.network\"],\n \"shortName\": \"mode\",\n \"slug\": \"mode\",\n \"testnet\": false\n};\n\nvar c35011 = {\n \"chain\": \"TARO\",\n \"chainId\": 35011,\n \"explorers\": [{\n \"name\": \"J2O Taro Explorer\",\n \"url\": \"https://exp.j2o.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdUYi8fjnvdM9iFQ7dwE2YvmhDtavSB3bKhCD2GhPxPks\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://j2o.io\",\n \"name\": \"J2O Taro\",\n \"nativeCurrency\": {\n \"name\": \"TARO Coin\",\n \"symbol\": \"taro\",\n \"decimals\": 18\n },\n \"networkId\": 35011,\n \"rpc\": [\"https://j2o-taro.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35011.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.j2o.io\"],\n \"shortName\": \"j2o\",\n \"slug\": \"j2o-taro\",\n \"testnet\": false\n};\n\nvar c35441 = {\n \"chain\": \"Q\",\n \"chainId\": 35441,\n \"explorers\": [{\n \"name\": \"Q explorer\",\n \"url\": \"https://explorer.q.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmQUQKe8VEtSthhgXnJ3EmEz94YhpVCpUDZAiU9KYyNLya\",\n \"width\": 585,\n \"height\": 603,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQUQKe8VEtSthhgXnJ3EmEz94YhpVCpUDZAiU9KYyNLya\",\n \"width\": 585,\n \"height\": 603,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://q.org\",\n \"name\": \"Q Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Q token\",\n \"symbol\": \"Q\",\n \"decimals\": 18\n },\n \"networkId\": 35441,\n \"rpc\": [\"https://q.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35441.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.q.org\"],\n \"shortName\": \"q\",\n \"slug\": \"q\",\n \"testnet\": false\n};\n\nvar c35443 = {\n \"chain\": \"Q\",\n \"chainId\": 35443,\n \"explorers\": [{\n \"name\": \"Q explorer\",\n \"url\": \"https://explorer.qtestnet.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmQUQKe8VEtSthhgXnJ3EmEz94YhpVCpUDZAiU9KYyNLya\",\n \"width\": 585,\n \"height\": 603,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQUQKe8VEtSthhgXnJ3EmEz94YhpVCpUDZAiU9KYyNLya\",\n \"width\": 585,\n \"height\": 603,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://q.org/\",\n \"name\": \"Q Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Q token\",\n \"symbol\": \"Q\",\n \"decimals\": 18\n },\n \"networkId\": 35443,\n \"rpc\": [\"https://q-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35443.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.qtestnet.org\"],\n \"shortName\": \"q-testnet\",\n \"slug\": \"q-testnet\",\n \"testnet\": true\n};\n\nvar c35730 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 35730,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QR1129I1\",\n \"nativeCurrency\": {\n \"name\": \"QR1129I1 Token\",\n \"symbol\": \"YXAX\",\n \"decimals\": 18\n },\n \"networkId\": 35730,\n \"redFlags\": [],\n \"rpc\": [\"https://qr1129i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35730.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/qr1129i1/testnet/rpc\"],\n \"shortName\": \"QR1129I1\",\n \"slug\": \"qr1129i1\",\n \"testnet\": true\n};\n\nvar c36908 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 36908,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QR1205s1\",\n \"nativeCurrency\": {\n \"name\": \"QR1205s1 Token\",\n \"symbol\": \"MDN\",\n \"decimals\": 18\n },\n \"networkId\": 36908,\n \"redFlags\": [],\n \"rpc\": [\"https://qr1205s1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://36908.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/qr1205s1/testnet/rpc\"],\n \"shortName\": \"QR1205s1\",\n \"slug\": \"qr1205s1\",\n \"testnet\": true\n};\n\nvar c38400 = {\n \"chain\": \"Rangers\",\n \"chainId\": 38400,\n \"explorers\": [{\n \"name\": \"rangersscan\",\n \"url\": \"https://scan.rangersprotocol.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXR5e5SDABWfQn6XT9uMsVYAo5Bv7vUv4jVs8DFqatZWG\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rangersprotocol.com\",\n \"name\": \"ConnectorManager\",\n \"nativeCurrency\": {\n \"name\": \"Rangers Protocol Gas\",\n \"symbol\": \"cmRPG\",\n \"decimals\": 18\n },\n \"networkId\": 38400,\n \"rpc\": [\"https://connectormanager.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://38400.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://cm.rangersprotocol.com/api/jsonrpc\"],\n \"shortName\": \"cmrpg\",\n \"slug\": \"connectormanager\",\n \"testnet\": false\n};\n\nvar c38401 = {\n \"chain\": \"Rangers\",\n \"chainId\": 38401,\n \"explorers\": [{\n \"name\": \"rangersscan-robin\",\n \"url\": \"https://robin-rangersscan.rangersprotocol.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://robin-faucet.rangersprotocol.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmXR5e5SDABWfQn6XT9uMsVYAo5Bv7vUv4jVs8DFqatZWG\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://rangersprotocol.com\",\n \"name\": \"ConnectorManager Robin\",\n \"nativeCurrency\": {\n \"name\": \"Rangers Protocol Gas\",\n \"symbol\": \"ttRPG\",\n \"decimals\": 18\n },\n \"networkId\": 38401,\n \"rpc\": [\"https://connectormanager-robin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://38401.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://robin-cm.rangersprotocol.com/api/jsonrpc\"],\n \"shortName\": \"ttrpg\",\n \"slug\": \"connectormanager-robin\",\n \"testnet\": false\n};\n\nvar c39797 = {\n \"chain\": \"NRG\",\n \"chainId\": 39797,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.energi.world/\",\n \"name\": \"Energi Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Energi\",\n \"symbol\": \"NRG\",\n \"decimals\": 18\n },\n \"networkId\": 39797,\n \"rpc\": [\"https://energi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://39797.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nodeapi.energi.network\"],\n \"shortName\": \"nrg\",\n \"slip44\": 39797,\n \"slug\": \"energi\",\n \"testnet\": false\n};\n\nvar c39815 = {\n \"chain\": \"OHO\",\n \"chainId\": 39815,\n \"explorers\": [{\n \"name\": \"ohoscan\",\n \"url\": \"https://ohoscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZt75xixnEtFzqHTrJa8kJkV4cTXmUZqeMeHM8BcvomQc\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZt75xixnEtFzqHTrJa8kJkV4cTXmUZqeMeHM8BcvomQc\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oho.ai\",\n \"name\": \"OHO Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OHO\",\n \"symbol\": \"OHO\",\n \"decimals\": 18\n },\n \"networkId\": 39815,\n \"rpc\": [\"https://oho.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://39815.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.oho.ai\"],\n \"shortName\": \"oho\",\n \"slug\": \"oho\",\n \"testnet\": false\n};\n\nvar c41500 = {\n \"chain\": \"Opulent-X\",\n \"chainId\": 41500,\n \"explorers\": [{\n \"name\": \"Opulent-X BETA Explorer\",\n \"url\": \"https://explorer.opulent-x.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://beta.opulent-x.com\",\n \"name\": \"Opulent-X BETA\",\n \"nativeCurrency\": {\n \"name\": \"Oxyn Gas\",\n \"symbol\": \"OXYN\",\n \"decimals\": 18\n },\n \"networkId\": 41500,\n \"rpc\": [\"https://opulent-x-beta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://41500.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://connect.opulent-x.com\"],\n \"shortName\": \"ox-beta\",\n \"slug\": \"opulent-x-beta\",\n \"testnet\": false\n};\n\nvar c42069 = {\n \"chain\": \"42069\",\n \"chainId\": 42069,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://teampeggle.com\",\n \"name\": \"pegglecoin\",\n \"nativeCurrency\": {\n \"name\": \"pegglecoin\",\n \"symbol\": \"peggle\",\n \"decimals\": 18\n },\n \"networkId\": 42069,\n \"rpc\": [],\n \"shortName\": \"PC\",\n \"slug\": \"pegglecoin\",\n \"testnet\": false\n};\n\nvar c42161 = {\n \"chain\": \"ETH\",\n \"chainId\": 42161,\n \"explorers\": [{\n \"name\": \"Arbiscan\",\n \"url\": \"https://arbiscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Arbitrum Explorer\",\n \"url\": \"https://explorer.arbitrum.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://arbitrum.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/arbitrum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://arbitrum.io\",\n \"name\": \"Arbitrum One\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 42161,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.arbitrum.io\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://arbitrum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42161.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}\", \"https://arb-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}\", \"https://arb1.arbitrum.io/rpc\", \"https://arbitrum-one.publicnode.com\", \"wss://arbitrum-one.publicnode.com\"],\n \"shortName\": \"arb1\",\n \"slug\": \"arbitrum\",\n \"testnet\": false\n};\n\nvar c42170 = {\n \"chain\": \"ETH\",\n \"chainId\": 42170,\n \"explorers\": [{\n \"name\": \"Arbitrum Nova Chain Explorer\",\n \"url\": \"https://nova-explorer.arbitrum.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://nova.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://arbitrum.io\",\n \"name\": \"Arbitrum Nova\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 42170,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.arbitrum.io\"\n }]\n },\n \"rpc\": [\"https://arbitrum-nova.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42170.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nova.arbitrum.io/rpc\", \"https://arbitrum-nova.publicnode.com\", \"wss://arbitrum-nova.publicnode.com\"],\n \"shortName\": \"arb-nova\",\n \"slug\": \"arbitrum-nova\",\n \"testnet\": false\n};\n\nvar c42220 = {\n \"chain\": \"CELO\",\n \"chainId\": 42220,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.celo.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Celoscan\",\n \"url\": \"https://celoscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.celo.org/\",\n \"name\": \"Celo Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"CELO\",\n \"symbol\": \"CELO\",\n \"decimals\": 18\n },\n \"networkId\": 42220,\n \"rpc\": [\"https://celo.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42220.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://forno.celo.org\", \"wss://forno.celo.org/ws\"],\n \"shortName\": \"celo\",\n \"slug\": \"celo\",\n \"testnet\": false\n};\n\nvar c42261 = {\n \"chain\": \"Emerald\",\n \"chainId\": 42261,\n \"explorers\": [{\n \"name\": \"Oasis Emerald Testnet Explorer\",\n \"url\": \"https://testnet.explorer.emerald.oasis.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.testnet.oasis.dev/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiespupb52akiwrexxg7g72mh7m7h7lum5hmqijmpdh3kmuunzclha\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.oasis.io/dapp/emerald\",\n \"name\": \"Oasis Emerald Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Emerald Rose\",\n \"symbol\": \"ROSE\",\n \"decimals\": 18\n },\n \"networkId\": 42261,\n \"rpc\": [\"https://oasis-emerald-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42261.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.emerald.oasis.dev/\", \"wss://testnet.emerald.oasis.dev/ws\"],\n \"shortName\": \"emerald-testnet\",\n \"slug\": \"oasis-emerald-testnet\",\n \"testnet\": true\n};\n\nvar c42262 = {\n \"chain\": \"Emerald\",\n \"chainId\": 42262,\n \"explorers\": [{\n \"name\": \"Oasis Emerald Explorer\",\n \"url\": \"https://explorer.emerald.oasis.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreiespupb52akiwrexxg7g72mh7m7h7lum5hmqijmpdh3kmuunzclha\",\n \"width\": 2000,\n \"height\": 2000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.oasis.io/dapp/emerald\",\n \"name\": \"Oasis Emerald\",\n \"nativeCurrency\": {\n \"name\": \"Emerald Rose\",\n \"symbol\": \"ROSE\",\n \"decimals\": 18\n },\n \"networkId\": 42262,\n \"rpc\": [\"https://oasis-emerald.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42262.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://emerald.oasis.dev\", \"wss://emerald.oasis.dev/ws\"],\n \"shortName\": \"emerald\",\n \"slug\": \"oasis-emerald\",\n \"testnet\": false\n};\n\nvar c42801 = {\n \"chain\": \"Gesoten Verse\",\n \"chainId\": 42801,\n \"explorers\": [{\n \"name\": \"Gesoten Verse Testnet Explorer\",\n \"url\": \"https://explorer.testnet.verse.gesoten.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmb7oJY9zd9sTzxNNQNTVZQz2hkd1aA94mWm4cvXfJ9QxV\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gesoten.com/\",\n \"name\": \"Gesoten Verse Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 42801,\n \"rpc\": [\"https://gesoten-verse-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42801.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.verse.gesoten.com/\"],\n \"shortName\": \"GST\",\n \"slug\": \"gesoten-verse-testnet\",\n \"testnet\": true\n};\n\nvar c42888 = {\n \"chain\": \"ETH\",\n \"chainId\": 42888,\n \"explorers\": [{\n \"name\": \"kintoscan\",\n \"url\": \"http://35.215.120.180:4000\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://ethereum.org\",\n \"name\": \"Kinto Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 42888,\n \"rpc\": [\"https://kinto-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://42888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://35.215.120.180:8545\"],\n \"shortName\": \"keth\",\n \"slug\": \"kinto-testnet\",\n \"testnet\": true,\n \"title\": \"Kinto Testnet\"\n};\n\nvar c43110 = {\n \"chain\": \"ATH\",\n \"chainId\": 43110,\n \"explorers\": [],\n \"faucets\": [\"http://athfaucet.ava.network//?address=${ADDRESS}\"],\n \"infoURL\": \"https://athereum.ava.network\",\n \"name\": \"Athereum\",\n \"nativeCurrency\": {\n \"name\": \"Athereum Ether\",\n \"symbol\": \"ATH\",\n \"decimals\": 18\n },\n \"networkId\": 43110,\n \"rpc\": [\"https://athereum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43110.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ava.network:21015/ext/evm/rpc\"],\n \"shortName\": \"avaeth\",\n \"slug\": \"athereum\",\n \"testnet\": false\n};\n\nvar c43113 = {\n \"chain\": \"AVAX\",\n \"chainId\": 43113,\n \"explorers\": [{\n \"name\": \"snowtrace\",\n \"url\": \"https://testnet.snowtrace.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.avax-test.network/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/avalanche/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cchain.explorer.avax-test.network\",\n \"name\": \"Avalanche Fuji Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Avalanche\",\n \"symbol\": \"AVAX\",\n \"decimals\": 18\n },\n \"networkId\": 43113,\n \"redFlags\": [],\n \"rpc\": [\"https://avalanche-fuji.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43113.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.avax-test.network/ext/bc/C/rpc\", \"https://avalanche-fuji-c-chain.publicnode.com\", \"wss://avalanche-fuji-c-chain.publicnode.com\"],\n \"shortName\": \"Fuji\",\n \"slug\": \"avalanche-fuji\",\n \"testnet\": true\n};\n\nvar c43114 = {\n \"chain\": \"AVAX\",\n \"chainId\": 43114,\n \"explorers\": [{\n \"name\": \"snowtrace\",\n \"url\": \"https://snowtrace.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/avalanche/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.avax.network/\",\n \"name\": \"Avalanche C-Chain\",\n \"nativeCurrency\": {\n \"name\": \"Avalanche\",\n \"symbol\": \"AVAX\",\n \"decimals\": 18\n },\n \"networkId\": 43114,\n \"redFlags\": [],\n \"rpc\": [\"https://avalanche.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43114.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://avalanche-mainnet.infura.io/v3/${INFURA_API_KEY}\", \"https://api.avax.network/ext/bc/C/rpc\", \"https://avalanche-c-chain.publicnode.com\", \"wss://avalanche-c-chain.publicnode.com\"],\n \"shortName\": \"avax\",\n \"slip44\": 9005,\n \"slug\": \"avalanche\",\n \"testnet\": false\n};\n\nvar c43288 = {\n \"chain\": \"Boba Avax\",\n \"chainId\": 43288,\n \"explorers\": [{\n \"name\": \"Boba Avax Explorer\",\n \"url\": \"https://blockexplorer.avax.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.boba.network/for-developers/network-avalanche\",\n \"name\": \"Boba Avax\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 43288,\n \"rpc\": [\"https://boba-avax.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43288.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://avax.boba.network\", \"wss://wss.avax.boba.network\", \"https://replica.avax.boba.network\", \"wss://replica-wss.avax.boba.network\"],\n \"shortName\": \"bobaavax\",\n \"slug\": \"boba-avax\",\n \"testnet\": false\n};\n\nvar c43851 = {\n \"chain\": \"ETH\",\n \"chainId\": 43851,\n \"explorers\": [{\n \"name\": \"ZKFair Testnet Info\",\n \"url\": \"https://testnet-scan.zkfair.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVb682D4mUXkKNP28xxJDNgSYbDLvEc3kVYx7TQxEa6Cw\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"jpg\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmVb682D4mUXkKNP28xxJDNgSYbDLvEc3kVYx7TQxEa6Cw\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"jpg\"\n },\n \"infoURL\": \"https://zkfair.io\",\n \"name\": \"ZKFair Testnet\",\n \"nativeCurrency\": {\n \"name\": \"USDC Token\",\n \"symbol\": \"USDC\",\n \"decimals\": 18\n },\n \"networkId\": 43851,\n \"rpc\": [\"https://zkfair-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43851.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.zkfair.io\"],\n \"shortName\": \"ZKFair-Testnet\",\n \"slug\": \"zkfair-testnet\",\n \"testnet\": true\n};\n\nvar c44444 = {\n \"chain\": \"fren\",\n \"chainId\": 44444,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://frenscan.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmQk41bYX6WpYyUAdRgomZekxP5mbvZXhfxLEEqtatyJv4\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQk41bYX6WpYyUAdRgomZekxP5mbvZXhfxLEEqtatyJv4\",\n \"width\": 128,\n \"height\": 128,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://frenchain.app\",\n \"name\": \"Frenchain\",\n \"nativeCurrency\": {\n \"name\": \"FREN\",\n \"symbol\": \"FREN\",\n \"decimals\": 18\n },\n \"networkId\": 44444,\n \"rpc\": [\"https://frenchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://44444.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-02.frenscan.io\"],\n \"shortName\": \"FREN\",\n \"slug\": \"frenchain\",\n \"testnet\": false\n};\n\nvar c44787 = {\n \"chain\": \"CELO\",\n \"chainId\": 44787,\n \"explorers\": [{\n \"name\": \"Alfajoresscan\",\n \"url\": \"https://alfajores.celoscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://celo.org/developers/faucet\", \"https://cauldron.pretoriaresearchlab.io/alfajores-faucet\"],\n \"features\": [],\n \"infoURL\": \"https://docs.celo.org/\",\n \"name\": \"Celo Alfajores Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CELO\",\n \"symbol\": \"CELO\",\n \"decimals\": 18\n },\n \"networkId\": 44787,\n \"redFlags\": [],\n \"rpc\": [\"https://celo-alfajores-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://44787.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://alfajores-forno.celo-testnet.org\", \"wss://alfajores-forno.celo-testnet.org/ws\"],\n \"shortName\": \"ALFA\",\n \"slug\": \"celo-alfajores-testnet\",\n \"testnet\": true\n};\n\nvar c45000 = {\n \"chain\": \"TXL\",\n \"chainId\": 45000,\n \"explorers\": [{\n \"name\": \"autobahn explorer\",\n \"url\": \"https://explorer.autobahn.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZP19pbqTco4vaP9siduLWP8pdYArFK3onfR55tvjr12s\",\n \"width\": 489,\n \"height\": 489,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZP19pbqTco4vaP9siduLWP8pdYArFK3onfR55tvjr12s\",\n \"width\": 489,\n \"height\": 489,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://autobahn.network\",\n \"name\": \"Autobahn Network\",\n \"nativeCurrency\": {\n \"name\": \"TXL\",\n \"symbol\": \"TXL\",\n \"decimals\": 18\n },\n \"networkId\": 45000,\n \"rpc\": [\"https://autobahn-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://45000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.autobahn.network\"],\n \"shortName\": \"AutobahnNetwork\",\n \"slug\": \"autobahn-network\",\n \"testnet\": false\n};\n\nvar c46688 = {\n \"chain\": \"FSN\",\n \"chainId\": 46688,\n \"explorers\": [{\n \"name\": \"fsnscan\",\n \"url\": \"https://testnet.fsnscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSAFx34SKNi7a139agX12f68oBMo2Ktt9c8yD8aFa14gd\",\n \"width\": 48,\n \"height\": 51,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmX3tsEoj7SdaBLLV8VyyCUAmymdEGiSGeuTbxMrEMVvth\",\n \"width\": 31,\n \"height\": 31,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://fusion.org\",\n \"name\": \"Fusion Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Fusion\",\n \"symbol\": \"T-FSN\",\n \"decimals\": 18\n },\n \"networkId\": 46688,\n \"rpc\": [\"https://fusion-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://46688.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.fusionnetwork.io\", \"wss://testnet.fusionnetwork.io\"],\n \"shortName\": \"tfsn\",\n \"slip44\": 288,\n \"slug\": \"fusion-testnet\",\n \"testnet\": true\n};\n\nvar c47805 = {\n \"chain\": \"REI\",\n \"chainId\": 47805,\n \"explorers\": [{\n \"name\": \"rei-scan\",\n \"url\": \"https://scan.rei.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://rei.network/\",\n \"name\": \"REI Network\",\n \"nativeCurrency\": {\n \"name\": \"REI\",\n \"symbol\": \"REI\",\n \"decimals\": 18\n },\n \"networkId\": 47805,\n \"rpc\": [\"https://rei-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://47805.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.rei.network\", \"wss://rpc.rei.network\"],\n \"shortName\": \"REI\",\n \"slug\": \"rei-network\",\n \"testnet\": false\n};\n\nvar c49049 = {\n \"chain\": \"Wireshape\",\n \"chainId\": 49049,\n \"explorers\": [{\n \"name\": \"Wire Explorer\",\n \"url\": \"https://floripa-explorer.wireshape.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTAyT3YrW2654CBRqRkec2cCznv6EBsbsRc2y6WQPbvXx\",\n \"width\": 1280,\n \"height\": 1280,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://wireshape.org\",\n \"name\": \"Wireshape Floripa Testnet\",\n \"nativeCurrency\": {\n \"name\": \"WIRE\",\n \"symbol\": \"WIRE\",\n \"decimals\": 18\n },\n \"networkId\": 49049,\n \"rpc\": [\"https://wireshape-floripa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://49049.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-floripa.wireshape.org\"],\n \"shortName\": \"floripa\",\n \"slug\": \"wireshape-floripa-testnet\",\n \"testnet\": true,\n \"title\": \"Wireshape Floripa Testnet\"\n};\n\nvar c49088 = {\n \"chain\": \"BFC\",\n \"chainId\": 49088,\n \"explorers\": [{\n \"name\": \"explorer-thebifrost\",\n \"url\": \"https://explorer.testnet.thebifrost.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYxniqbiFD7nXBNjN8boUhoXYEAW23YquArD2Rnkq8WHS\",\n \"width\": 480,\n \"height\": 480,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://thebifrost.io\",\n \"name\": \"Bifrost Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Bifrost\",\n \"symbol\": \"BFC\",\n \"decimals\": 18\n },\n \"networkId\": 49088,\n \"rpc\": [\"https://bifrost-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://49088.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://public-01.testnet.thebifrost.io/rpc\", \"https://public-02.testnet.thebifrost.io/rpc\"],\n \"shortName\": \"tbfc\",\n \"slug\": \"bifrost-testnet\",\n \"testnet\": true,\n \"title\": \"Bifrost Network Testnet\"\n};\n\nvar c49797 = {\n \"chain\": \"NRG\",\n \"chainId\": 49797,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.energi.world/\",\n \"name\": \"Energi Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Energi\",\n \"symbol\": \"NRG\",\n \"decimals\": 18\n },\n \"networkId\": 49797,\n \"rpc\": [\"https://energi-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://49797.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nodeapi.test.energi.network\"],\n \"shortName\": \"tnrg\",\n \"slip44\": 49797,\n \"slug\": \"energi-testnet\",\n \"testnet\": true\n};\n\nvar c50001 = {\n \"chain\": \"Liveplex OracleEVM Network\",\n \"chainId\": 50001,\n \"explorers\": [],\n \"faucets\": [],\n \"name\": \"Liveplex OracleEVM\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 50001,\n \"rpc\": [\"https://liveplex-oracleevm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://50001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.oracle.liveplex.io\"],\n \"shortName\": \"LOE\",\n \"slug\": \"liveplex-oracleevm\",\n \"testnet\": false\n};\n\nvar c50021 = {\n \"chain\": \"GTON Testnet\",\n \"chainId\": 50021,\n \"explorers\": [{\n \"name\": \"GTON Testnet Network Explorer\",\n \"url\": \"https://explorer.testnet.gton.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://gton.capital\",\n \"name\": \"GTON Testnet\",\n \"nativeCurrency\": {\n \"name\": \"GCD\",\n \"symbol\": \"GCD\",\n \"decimals\": 18\n },\n \"networkId\": 50021,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-3\"\n },\n \"rpc\": [\"https://gton-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://50021.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.gton.network/\"],\n \"shortName\": \"tgton\",\n \"slug\": \"gton-testnet\",\n \"testnet\": true\n};\n\nvar c51178 = {\n \"chain\": \"ETH\",\n \"chainId\": 51178,\n \"explorers\": [{\n \"name\": \"LumozTestnetInfo\",\n \"url\": \"https://lumoz.info\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmZnE2ygPL2ZGuzHGvFCHmrqxwdurrhz3K1yPnwLzKbgay\",\n \"width\": 401,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmZnE2ygPL2ZGuzHGvFCHmrqxwdurrhz3K1yPnwLzKbgay\",\n \"width\": 401,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lumoz.org\",\n \"name\": \"Lumoz Testnet Alpha\",\n \"nativeCurrency\": {\n \"name\": \"Lumoz Test Token\",\n \"symbol\": \"MOZ\",\n \"decimals\": 18\n },\n \"networkId\": 51178,\n \"rpc\": [\"https://lumoz-testnet-alpha.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://51178.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://alpha-us-http-geth.lumoz.org\", \"https://alpha-hk-http-geth.lumoz.org\"],\n \"shortName\": \"Lumoz-Testnet\",\n \"slug\": \"lumoz-testnet-alpha\",\n \"testnet\": true\n};\n\nvar c51712 = {\n \"chain\": \"SRDX\",\n \"chainId\": 51712,\n \"explorers\": [{\n \"name\": \"Sardis\",\n \"url\": \"https://contract-mainnet.sardisnetwork.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.sardisnetwork.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmdR9QJjQEh1mBnf2WbJfehverxiP5RDPWMtEECbDP2rc3\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mysardis.com\",\n \"name\": \"Sardis Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Sardis\",\n \"symbol\": \"SRDX\",\n \"decimals\": 18\n },\n \"networkId\": 51712,\n \"rpc\": [\"https://sardis.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://51712.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.sardisnetwork.com\"],\n \"shortName\": \"SRDXm\",\n \"slug\": \"sardis\",\n \"testnet\": false\n};\n\nvar c52014 = {\n \"chain\": \"Electroneum\",\n \"chainId\": 52014,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockexplorer.electroneum.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVgFqXA3kkCrVYGcWFF7Mhx8JUSe9vSCauNamuKWSvCym\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmVgFqXA3kkCrVYGcWFF7Mhx8JUSe9vSCauNamuKWSvCym\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://electroneum.com\",\n \"name\": \"Electroneum Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Electroneum\",\n \"symbol\": \"ETN\",\n \"decimals\": 18\n },\n \"networkId\": 52014,\n \"rpc\": [\"https://electroneum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://52014.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.electroneum.com\"],\n \"shortName\": \"etn-mainnet\",\n \"slug\": \"electroneum\",\n \"testnet\": false\n};\n\nvar c53935 = {\n \"chain\": \"DFK\",\n \"chainId\": 53935,\n \"explorers\": [{\n \"name\": \"ethernal\",\n \"url\": \"https://explorer.dfkchain.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQB48m15TzhUFrmu56QCRQjkrkgUaKfgCmKE8o3RzmuPJ\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://defikingdoms.com\",\n \"name\": \"DFK Chain\",\n \"nativeCurrency\": {\n \"name\": \"Jewel\",\n \"symbol\": \"JEWEL\",\n \"decimals\": 18\n },\n \"networkId\": 53935,\n \"rpc\": [\"https://dfk-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://53935.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc\"],\n \"shortName\": \"DFK\",\n \"slug\": \"dfk-chain\",\n \"testnet\": false\n};\n\nvar c54211 = {\n \"chain\": \"TestEdge2\",\n \"chainId\": 54211,\n \"explorers\": [{\n \"name\": \"TestEdge HAQQ Explorer\",\n \"url\": \"https://explorer.testedge2.haqq.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testedge2.haqq.network\"],\n \"infoURL\": \"https://islamiccoin.net\",\n \"name\": \"Haqq Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Islamic Coin\",\n \"symbol\": \"ISLMT\",\n \"decimals\": 18\n },\n \"networkId\": 54211,\n \"rpc\": [\"https://haqq-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://54211.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.eth.testedge2.haqq.network\"],\n \"shortName\": \"ISLMT\",\n \"slug\": \"haqq-chain-testnet\",\n \"testnet\": true\n};\n\nvar c54321 = {\n \"chain\": \"Toronet\",\n \"chainId\": 54321,\n \"ens\": {\n \"registry\": \"0x059C474f26D65B0458F9da10A649a7322aB02C09\"\n },\n \"explorers\": [{\n \"name\": \"toronet_explorer\",\n \"url\": \"https://testnet.toronet.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmciSvgLatP6jhgdazuiyD3fSrhipfAN7wC943v1qxcrpv\",\n \"width\": 846,\n \"height\": 733,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://toronet.org\",\n \"name\": \"Toronet Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Toro\",\n \"symbol\": \"TORO\",\n \"decimals\": 18\n },\n \"networkId\": 54321,\n \"rpc\": [\"https://toronet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://54321.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet.toronet.org/rpc\"],\n \"shortName\": \"ToronetTestnet\",\n \"slug\": \"toronet-testnet\",\n \"testnet\": true\n};\n\nvar c55004 = {\n \"chain\": \"ETH\",\n \"chainId\": 55004,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.titan.tokamak.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://tokamak.network\",\n \"name\": \"Titan\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 55004,\n \"rpc\": [\"https://titan.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://55004.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.titan.tokamak.network\", \"wss://rpc.titan.tokamak.network\"],\n \"shortName\": \"teth\",\n \"slug\": \"titan\",\n \"testnet\": false\n};\n\nvar c55555 = {\n \"chain\": \"REI\",\n \"chainId\": 55555,\n \"explorers\": [{\n \"name\": \"reiscan\",\n \"url\": \"https://reiscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://kururu.finance/faucet?chainId=55555\"],\n \"icon\": {\n \"url\": \"ipfs://QmNy5d5knHVjJJS9g4kLsh9i73RTjckpKL6KZvRk6ptbhf\",\n \"width\": 591,\n \"height\": 591,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://reichain.io\",\n \"name\": \"REI Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Rei\",\n \"symbol\": \"REI\",\n \"decimals\": 18\n },\n \"networkId\": 55555,\n \"rpc\": [\"https://rei-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://55555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rei-rpc.moonrhythm.io\"],\n \"shortName\": \"reichain\",\n \"slug\": \"rei-chain\",\n \"testnet\": false\n};\n\nvar c55556 = {\n \"chain\": \"REI\",\n \"chainId\": 55556,\n \"explorers\": [{\n \"name\": \"reiscan\",\n \"url\": \"https://testnet.reiscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://kururu.finance/faucet?chainId=55556\"],\n \"icon\": {\n \"url\": \"ipfs://QmNy5d5knHVjJJS9g4kLsh9i73RTjckpKL6KZvRk6ptbhf\",\n \"width\": 591,\n \"height\": 591,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://reichain.io\",\n \"name\": \"REI Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tRei\",\n \"symbol\": \"tREI\",\n \"decimals\": 18\n },\n \"networkId\": 55556,\n \"rpc\": [\"https://rei-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://55556.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rei-testnet-rpc.moonrhythm.io\"],\n \"shortName\": \"trei\",\n \"slug\": \"rei-chain-testnet\",\n \"testnet\": true\n};\n\nvar c56288 = {\n \"chain\": \"Boba BNB Mainnet\",\n \"chainId\": 56288,\n \"explorers\": [{\n \"name\": \"Boba BNB block explorer\",\n \"url\": \"https://blockexplorer.bnb.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba BNB Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 56288,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://gateway.boba.network\"\n }]\n },\n \"rpc\": [\"https://boba-bnb.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://56288.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://bnb.boba.network\", \"https://boba-bnb.gateway.tenderly.co/\", \"https://gateway.tenderly.co/public/boba-bnb\", \"https://replica.bnb.boba.network\", \"wss://boba-bnb.gateway.tenderly.co/\", \"wss://gateway.tenderly.co/public/boba-bnb\"],\n \"shortName\": \"BobaBnb\",\n \"slug\": \"boba-bnb\",\n \"testnet\": false\n};\n\nvar c56789 = {\n \"chain\": \"NOVA chain\",\n \"chainId\": 56789,\n \"explorers\": [{\n \"name\": \"novascan\",\n \"url\": \"https://novascan.velo.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://nova-faucet.velo.org\"],\n \"icon\": {\n \"url\": \"ipfs://QmYqvnW2jwPEKUv8BdaV4sbL8Audcwosat6SPn4GqYtKxc\",\n \"width\": 225,\n \"height\": 225,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://velo.org\",\n \"name\": \"VELO Labs Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Nova\",\n \"symbol\": \"NOVA\",\n \"decimals\": 18\n },\n \"networkId\": 56789,\n \"rpc\": [\"https://velo-labs.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://56789.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://nova.velo.org\"],\n \"shortName\": \"VELO\",\n \"slug\": \"velo-labs\",\n \"testnet\": false\n};\n\nvar c56914 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 56914,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"KK1223\",\n \"nativeCurrency\": {\n \"name\": \"KK1223 Token\",\n \"symbol\": \"KLK\",\n \"decimals\": 18\n },\n \"networkId\": 56914,\n \"redFlags\": [],\n \"rpc\": [\"https://kk1223.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://56914.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/bf540c23-4601-4768-9e26-f2e5f0f89c18\"],\n \"shortName\": \"KK1223\",\n \"slug\": \"kk1223\",\n \"testnet\": true\n};\n\nvar c57000 = {\n \"chain\": \"SYS\",\n \"chainId\": 57000,\n \"explorers\": [{\n \"name\": \"Rollux Testnet Explorer\",\n \"url\": \"https://rollux.tanenbaum.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://rollux.id/faucetapp\"],\n \"infoURL\": \"https://rollux.com\",\n \"name\": \"Rollux Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Testnet Syscoin\",\n \"symbol\": \"TSYS\",\n \"decimals\": 18\n },\n \"networkId\": 57000,\n \"rpc\": [\"https://rollux-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://57000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-tanenbaum.rollux.com\", \"https://rpc.ankr.com/rollux_testnet/${ANKR_API_KEY}\", \"wss://rpc-tanenbaum.rollux.com/wss\"],\n \"shortName\": \"tsys-rollux\",\n \"slug\": \"rollux-testnet\",\n \"testnet\": true\n};\n\nvar c58008 = {\n \"chain\": \"ETH\",\n \"chainId\": 58008,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.sepolia.publicgoods.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmUVJ7MLCEAfq3pHVPFLscqRMiyAY5biVgTkeDQCmAhHNS\",\n \"width\": 574,\n \"height\": 574,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://publicgoods.network/\",\n \"name\": \"Sepolia PGN (Public Goods Network)\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 58008,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://pgn-bridge.vercel.app/bridge\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://sepolia-pgn-public-goods-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://58008.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.publicgoods.network\"],\n \"shortName\": \"sepPGN\",\n \"slug\": \"sepolia-pgn-public-goods-network\",\n \"testnet\": true\n};\n\nvar c59140 = {\n \"chain\": \"ETH\",\n \"chainId\": 59140,\n \"explorers\": [{\n \"name\": \"Etherscan\",\n \"url\": \"https://goerli.lineascan.build\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n }\n }, {\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.goerli.linea.build\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://faucetlink.to/goerli\"],\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://linea.build\",\n \"name\": \"Linea Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Linea Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 59140,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://goerli.hop.exchange/#/send?token=ETH&sourceNetwork=ethereum&destNetwork=linea\"\n }]\n },\n \"rpc\": [\"https://linea-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://59140.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.goerli.linea.build\", \"wss://rpc.goerli.linea.build\", \"https://linea-goerli.infura.io/v3/${INFURA_API_KEY}\", \"wss://linea-goerli.infura.io/ws/v3/${INFURA_API_KEY}\"],\n \"shortName\": \"linea-testnet\",\n \"slug\": \"linea-testnet\",\n \"status\": \"active\",\n \"testnet\": true,\n \"title\": \"Linea Goerli Testnet\"\n};\n\nvar c59144 = {\n \"chain\": \"ETH\",\n \"chainId\": 59144,\n \"explorers\": [{\n \"name\": \"lineascan\",\n \"url\": \"https://lineascan.build\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.linea.build\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n }\n }, {\n \"name\": \"L2scan\",\n \"url\": \"https://linea.l2scan.co\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmURjritnHL7a8TwZgsFwp3f272DJmG5paaPtWDZ98QZwH\",\n \"width\": 97,\n \"height\": 102,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://linea.build\",\n \"name\": \"Linea\",\n \"nativeCurrency\": {\n \"name\": \"Linea Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 59144,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://bridge.linea.build\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://linea.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://59144.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://linea-mainnet.infura.io/v3/${INFURA_API_KEY}\", \"wss://linea-mainnet.infura.io/ws/v3/${INFURA_API_KEY}\", \"https://rpc.linea.build\", \"wss://rpc.linea.build\"],\n \"shortName\": \"linea\",\n \"slug\": \"linea\",\n \"status\": \"active\",\n \"testnet\": false,\n \"title\": \"Linea Mainnet\"\n};\n\nvar c59971 = {\n \"chain\": \"GCODE\",\n \"chainId\": 59971,\n \"explorers\": [{\n \"name\": \"Genesys Scan\",\n \"url\": \"https://genesysscan.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreihgmpaceze7rxpajv7yrlx3cb6daqubippkpvgryzairtaubsjjoe\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihgmpaceze7rxpajv7yrlx3cb6daqubippkpvgryzairtaubsjjoe\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://genesyscode.io\",\n \"name\": \"Genesys Code Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"GenesysCode\",\n \"symbol\": \"GCODE\",\n \"decimals\": 18\n },\n \"networkId\": 59971,\n \"rpc\": [\"https://genesys-code.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://59971.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.genesyscode.io/\"],\n \"shortName\": \"gcode\",\n \"slug\": \"genesys-code\",\n \"testnet\": false\n};\n\nvar c60000 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 60000,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://test0.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.thinkiumdev.net/faucet\"],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Testnet Chain 0\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 60000,\n \"rpc\": [\"https://thinkium-testnet-chain-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://60000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test.thinkiumrpc.net/\"],\n \"shortName\": \"TKM-test0\",\n \"slug\": \"thinkium-testnet-chain-0\",\n \"testnet\": true\n};\n\nvar c60001 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 60001,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://test1.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.thinkiumdev.net/faucet\"],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Testnet Chain 1\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 60001,\n \"rpc\": [\"https://thinkium-testnet-chain-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://60001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test1.thinkiumrpc.net/\"],\n \"shortName\": \"TKM-test1\",\n \"slug\": \"thinkium-testnet-chain-1\",\n \"testnet\": true\n};\n\nvar c60002 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 60002,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://test2.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.thinkiumdev.net/faucet\"],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Testnet Chain 2\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 60002,\n \"rpc\": [\"https://thinkium-testnet-chain-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://60002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test2.thinkiumrpc.net/\"],\n \"shortName\": \"TKM-test2\",\n \"slug\": \"thinkium-testnet-chain-2\",\n \"testnet\": true\n};\n\nvar c60103 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 60103,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://test103.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://www.thinkiumdev.net/faucet\"],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Testnet Chain 103\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 60103,\n \"rpc\": [\"https://thinkium-testnet-chain-103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://60103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test103.thinkiumrpc.net/\"],\n \"shortName\": \"TKM-test103\",\n \"slug\": \"thinkium-testnet-chain-103\",\n \"testnet\": true\n};\n\nvar c61800 = {\n \"chain\": \"AXEL\",\n \"chainId\": 61800,\n \"explorers\": [{\n \"name\": \"AxelChain Dev-Net Explorer\",\n \"url\": \"https://devexplorer2.viacube.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNx8FRacfNeawhkjk5p57EKzDHkLGMaBBmK2VRL5CB2P2\",\n \"width\": 40,\n \"height\": 40,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://www.axel.org\",\n \"name\": \"AxelChain Dev-Net\",\n \"nativeCurrency\": {\n \"name\": \"Axelium\",\n \"symbol\": \"AIUM\",\n \"decimals\": 18\n },\n \"networkId\": 61800,\n \"rpc\": [\"https://axelchain-dev-net.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://61800.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://aium-rpc-dev.viacube.com\"],\n \"shortName\": \"aium-dev\",\n \"slug\": \"axelchain-dev-net\",\n \"testnet\": false\n};\n\nvar c61803 = {\n \"chain\": \"Etica Protocol (ETI/EGAZ)\",\n \"chainId\": 61803,\n \"explorers\": [{\n \"name\": \"eticascan\",\n \"url\": \"https://eticascan.org\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"eticastats\",\n \"url\": \"http://explorer.etica-stats.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://faucet.etica-stats.org/\"],\n \"icon\": {\n \"url\": \"ipfs://QmYSyhUqm6ArWyALBe3G64823ZpEUmFdkzKZ93hUUhNKgU\",\n \"width\": 360,\n \"height\": 361,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eticaprotocol.org\",\n \"name\": \"Etica Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"EGAZ\",\n \"symbol\": \"EGAZ\",\n \"decimals\": 18\n },\n \"networkId\": 61803,\n \"rpc\": [\"https://etica.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://61803.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eticamainnet.eticascan.org\", \"https://eticamainnet.eticaprotocol.org\"],\n \"shortName\": \"Etica\",\n \"slug\": \"etica\",\n \"testnet\": false\n};\n\nvar c61916 = {\n \"chain\": \"DoKEN Super Chain\",\n \"chainId\": 61916,\n \"explorers\": [{\n \"name\": \"DSC Scan\",\n \"url\": \"https://explore.doken.dev\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreifms4eio6v56oyeemnnu5luq3sc44hptan225lr45itgzu3u372iu\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifms4eio6v56oyeemnnu5luq3sc44hptan225lr45itgzu3u372iu\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://doken.dev/\",\n \"name\": \"DoKEN Super Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"DoKEN\",\n \"symbol\": \"DKN\",\n \"decimals\": 18\n },\n \"networkId\": 61916,\n \"rpc\": [\"https://doken-super-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://61916.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sgrpc.doken.dev\", \"https://nyrpc.doken.dev\", \"https://ukrpc.doken.dev\"],\n \"shortName\": \"DoKEN\",\n \"slug\": \"doken-super-chain\",\n \"testnet\": false\n};\n\nvar c62278 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 62278,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"qi1121i1\",\n \"nativeCurrency\": {\n \"name\": \"qi1121i1 Token\",\n \"symbol\": \"SJOX\",\n \"decimals\": 18\n },\n \"networkId\": 62278,\n \"redFlags\": [],\n \"rpc\": [\"https://qi1121i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://62278.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc\"],\n \"shortName\": \"qi1121i1\",\n \"slug\": \"qi1121i1\",\n \"testnet\": true\n};\n\nvar c62320 = {\n \"chain\": \"CELO\",\n \"chainId\": 62320,\n \"explorers\": [],\n \"faucets\": [\"https://docs.google.com/forms/d/e/1FAIpQLSdfr1BwUTYepVmmvfVUDRCwALejZ-TUva2YujNpvrEmPAX2pg/viewform\", \"https://cauldron.pretoriaresearchlab.io/baklava-faucet\"],\n \"infoURL\": \"https://docs.celo.org/\",\n \"name\": \"Celo Baklava Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CELO\",\n \"symbol\": \"CELO\",\n \"decimals\": 18\n },\n \"networkId\": 62320,\n \"rpc\": [\"https://celo-baklava-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://62320.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://baklava-forno.celo-testnet.org\"],\n \"shortName\": \"BKLV\",\n \"slug\": \"celo-baklava-testnet\",\n \"testnet\": true\n};\n\nvar c62621 = {\n \"chain\": \"MultiVAC\",\n \"chainId\": 62621,\n \"explorers\": [{\n \"name\": \"MultiVAC Explorer\",\n \"url\": \"https://e.mtv.ac\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWb1gthhbzkiLdgcP8ccZprGbJVjFcW8Rn4uJjrw4jd3B\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mtv.ac\",\n \"name\": \"MultiVAC Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"MultiVAC\",\n \"symbol\": \"MTV\",\n \"decimals\": 18\n },\n \"networkId\": 62621,\n \"rpc\": [\"https://multivac.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://62621.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.mtv.ac\", \"https://rpc-eu.mtv.ac\"],\n \"shortName\": \"mtv\",\n \"slug\": \"multivac\",\n \"testnet\": false\n};\n\nvar c63000 = {\n \"chain\": \"ECS\",\n \"chainId\": 63000,\n \"explorers\": [{\n \"name\": \"eCredits MainNet Explorer\",\n \"url\": \"https://explorer.ecredits.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmU9H9JE1KtLh2Fxrd8EWTMjKGJBpgRWKUeEx7u6ic4kBY\",\n \"width\": 32,\n \"height\": 32,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmU9H9JE1KtLh2Fxrd8EWTMjKGJBpgRWKUeEx7u6ic4kBY\",\n \"width\": 32,\n \"height\": 32,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ecredits.com\",\n \"name\": \"eCredits Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"eCredits\",\n \"symbol\": \"ECS\",\n \"decimals\": 18\n },\n \"networkId\": 63000,\n \"rpc\": [\"https://ecredits.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://63000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ecredits.com\"],\n \"shortName\": \"ecs\",\n \"slug\": \"ecredits\",\n \"testnet\": false\n};\n\nvar c63001 = {\n \"chain\": \"ECS\",\n \"chainId\": 63001,\n \"explorers\": [{\n \"name\": \"eCredits TestNet Explorer\",\n \"url\": \"https://explorer.tst.ecredits.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmU9H9JE1KtLh2Fxrd8EWTMjKGJBpgRWKUeEx7u6ic4kBY\",\n \"width\": 32,\n \"height\": 32,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.tst.ecredits.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmU9H9JE1KtLh2Fxrd8EWTMjKGJBpgRWKUeEx7u6ic4kBY\",\n \"width\": 32,\n \"height\": 32,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ecredits.com\",\n \"name\": \"eCredits Testnet\",\n \"nativeCurrency\": {\n \"name\": \"eCredits\",\n \"symbol\": \"ECS\",\n \"decimals\": 18\n },\n \"networkId\": 63001,\n \"rpc\": [\"https://ecredits-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://63001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tst.ecredits.com\"],\n \"shortName\": \"ecs-testnet\",\n \"slug\": \"ecredits-testnet\",\n \"testnet\": true\n};\n\nvar c63079 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 63079,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"MT 1121-2\",\n \"nativeCurrency\": {\n \"name\": \"MT 1121-2 Token\",\n \"symbol\": \"RCE\",\n \"decimals\": 18\n },\n \"networkId\": 63079,\n \"redFlags\": [],\n \"rpc\": [\"https://mt-1121-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://63079.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-test.io/d76ea66a-e423-49f6-8ef1-4355260b47f1\"],\n \"shortName\": \"MT 1121-2\",\n \"slug\": \"mt-1121-2\",\n \"testnet\": true\n};\n\nvar c65450 = {\n \"chain\": \"SCOLWEI\",\n \"chainId\": 65450,\n \"explorers\": [{\n \"name\": \"Scolscan Explorer\",\n \"url\": \"https://explorer.scolcoin.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVES1eqDXhP8SdeCpM85wvjmhrQDXGRquQebDrSdvJqpt\",\n \"width\": 792,\n \"height\": 822,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://scolcoin.com\",\n \"name\": \"Scolcoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Scolcoin\",\n \"symbol\": \"SCOL\",\n \"decimals\": 18\n },\n \"networkId\": 65450,\n \"rpc\": [\"https://scolcoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://65450.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.scolcoin.com\"],\n \"shortName\": \"SRC\",\n \"slug\": \"scolcoin\",\n \"testnet\": false\n};\n\nvar c66988 = {\n \"chain\": \"JanusNetwork\",\n \"chainId\": 66988,\n \"explorers\": [{\n \"name\": \"JanusNetwork Testnet Explorer\",\n \"url\": \"https://beta.scan.janusnetwork.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifc3vnwf4hj3bo6fg4u5qlqmjgajjgezyeg236qjcihl4ha42siuq\",\n \"width\": 819,\n \"height\": 792,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://janus-network.gitbook.io/janus\",\n \"name\": \"Janus Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Janus\",\n \"symbol\": \"JNS\",\n \"decimals\": 18\n },\n \"networkId\": 66988,\n \"rpc\": [\"https://janus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://66988.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.test.janusnetwork.io\"],\n \"shortName\": \"janusnetwork-testnet\",\n \"slug\": \"janus-testnet\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c67390 = {\n \"chain\": \"SIN\",\n \"chainId\": 67390,\n \"explorers\": [{\n \"name\": \"siriusnetscan\",\n \"url\": \"https://siriusnet.tryethernal.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://macaucasinolisboa.xyz\",\n \"name\": \"SiriusNet\",\n \"nativeCurrency\": {\n \"name\": \"MCD\",\n \"symbol\": \"MCD\",\n \"decimals\": 18\n },\n \"networkId\": 67390,\n \"rpc\": [\"https://siriusnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://67390.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://u0tnafcv6j:o2T045sxuCNXL878RDQLp5__Zj-es2cvdjtgkl4etn0@u0v7kwtvtg-u0wj114sve-rpc.us0-aws.kaleido.io/\"],\n \"shortName\": \"mcl\",\n \"slug\": \"siriusnet\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c67588 = {\n \"chain\": \"COSMIC\",\n \"chainId\": 67588,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://cosmicchain.site\",\n \"name\": \"Cosmic Chain\",\n \"nativeCurrency\": {\n \"name\": \"Cosmic Chain\",\n \"symbol\": \"COSMIC\",\n \"decimals\": 18\n },\n \"networkId\": 3344,\n \"rpc\": [\"https://cosmic-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://67588.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet.cosmicchain.site:3344\"],\n \"shortName\": \"Cosmic\",\n \"slug\": \"cosmic-chain\",\n \"testnet\": true\n};\n\nvar c68770 = {\n \"chain\": \"DM2 Verse\",\n \"chainId\": 68770,\n \"explorers\": [{\n \"name\": \"DM2Verse Explorer\",\n \"url\": \"https://explorer.dm2verse.dmm.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPMqjf5XKZ4Cxa1u8qc8Zj9mmVLBoqK7N5h2zFr3Rsyzw\",\n \"width\": 260,\n \"height\": 260,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://seamoon.dmm.com\",\n \"name\": \"DM2 Verse Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 68770,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-248\"\n },\n \"rpc\": [\"https://dm2-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://68770.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dm2verse.dmm.com\"],\n \"shortName\": \"dm2\",\n \"slug\": \"dm2-verse\",\n \"testnet\": false\n};\n\nvar c69420 = {\n \"chain\": \"ETH\",\n \"chainId\": 69420,\n \"explorers\": [{\n \"name\": \"Condrieu explorer\",\n \"url\": \"https://explorer.condrieu.ethdevops.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.condrieu.ethdevops.io\"],\n \"infoURL\": \"https://condrieu.ethdevops.io\",\n \"name\": \"Condrieu\",\n \"nativeCurrency\": {\n \"name\": \"Condrieu Testnet Ether\",\n \"symbol\": \"CTE\",\n \"decimals\": 18\n },\n \"networkId\": 69420,\n \"rpc\": [\"https://condrieu.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://69420.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.condrieu.ethdevops.io:8545\"],\n \"shortName\": \"cndr\",\n \"slug\": \"condrieu\",\n \"testnet\": true,\n \"title\": \"Ethereum Verkle Testnet Condrieu\"\n};\n\nvar c69740 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 69740,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"Will's Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Will's Testnet Token\",\n \"symbol\": \"WLDVNT\",\n \"decimals\": 18\n },\n \"networkId\": 69740,\n \"redFlags\": [],\n \"rpc\": [\"https://will-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://69740.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc\"],\n \"shortName\": \"Will's Testnet\",\n \"slug\": \"will-s-testnet\",\n \"testnet\": true\n};\n\nvar c70000 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 70000,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://chain0.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Mainnet Chain 0\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 70000,\n \"rpc\": [\"https://thinkium-chain-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://proxy.thinkiumrpc.net/\"],\n \"shortName\": \"TKM0\",\n \"slug\": \"thinkium-chain-0\",\n \"testnet\": false\n};\n\nvar c70001 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 70001,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://chain1.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Mainnet Chain 1\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 70001,\n \"rpc\": [\"https://thinkium-chain-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://proxy1.thinkiumrpc.net/\"],\n \"shortName\": \"TKM1\",\n \"slug\": \"thinkium-chain-1\",\n \"testnet\": false\n};\n\nvar c70002 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 70002,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://chain2.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Mainnet Chain 2\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 70002,\n \"rpc\": [\"https://thinkium-chain-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://proxy2.thinkiumrpc.net/\"],\n \"shortName\": \"TKM2\",\n \"slug\": \"thinkium-chain-2\",\n \"testnet\": false\n};\n\nvar c70103 = {\n \"chain\": \"Thinkium\",\n \"chainId\": 70103,\n \"explorers\": [{\n \"name\": \"thinkiumscan\",\n \"url\": \"https://chain103.thinkiumscan.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://thinkium.net/\",\n \"name\": \"Thinkium Mainnet Chain 103\",\n \"nativeCurrency\": {\n \"name\": \"TKM\",\n \"symbol\": \"TKM\",\n \"decimals\": 18\n },\n \"networkId\": 70103,\n \"rpc\": [\"https://thinkium-chain-103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70103.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://proxy103.thinkiumrpc.net/\"],\n \"shortName\": \"TKM103\",\n \"slug\": \"thinkium-chain-103\",\n \"testnet\": false\n};\n\nvar c70466 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 70466,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"Cohan test3\",\n \"nativeCurrency\": {\n \"name\": \"Cohan test3 Token\",\n \"symbol\": \"HYN\",\n \"decimals\": 18\n },\n \"networkId\": 70466,\n \"redFlags\": [],\n \"rpc\": [\"https://cohan-test3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://70466.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/f44b72ee-0574-44d2-a10b-363a74964145\"],\n \"shortName\": \"Cohan test3\",\n \"slug\": \"cohan-test3\",\n \"testnet\": true\n};\n\nvar c71111 = {\n \"chain\": \"GuapcoinX\",\n \"chainId\": 71111,\n \"explorers\": [{\n \"name\": \"GuapcoinX Explorer\",\n \"url\": \"http://explorer.guapcoinx.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmcDTR7982VQKDDz2Mh4fZbnE9hn67MuFPWQv1MimCqPvB\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcDTR7982VQKDDz2Mh4fZbnE9hn67MuFPWQv1MimCqPvB\",\n \"width\": 800,\n \"height\": 800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://guapcoin.org/\",\n \"name\": \"GuapcoinX\",\n \"nativeCurrency\": {\n \"name\": \"GuapcoinX\",\n \"symbol\": \"GuapX\",\n \"decimals\": 18\n },\n \"networkId\": 71111,\n \"rpc\": [\"https://guapcoinx.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://71111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mainnet.guapcoinx.com/\", \"https://rpc-mainnet-1.guapcoinx.com/\", \"https://rpc-mainnet-2.guapcoinx.com/\"],\n \"shortName\": \"GuapX\",\n \"slug\": \"guapcoinx\",\n \"testnet\": false\n};\n\nvar c71393 = {\n \"chain\": \"CKB\",\n \"chainId\": 71393,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.nervos.org/\"],\n \"icon\": {\n \"url\": \"ipfs://QmZ5gFWUxLFqqT3DkefYfRsVksMwMTc5VvBjkbHpeFMsNe\",\n \"width\": 1001,\n \"height\": 1629,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/nervosnetwork/godwoken\",\n \"name\": \"Polyjuice Testnet\",\n \"nativeCurrency\": {\n \"name\": \"CKB\",\n \"symbol\": \"CKB\",\n \"decimals\": 8\n },\n \"networkId\": 1,\n \"rpc\": [\"https://polyjuice-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://71393.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://godwoken-testnet-web3-rpc.ckbapp.dev\", \"ws://godwoken-testnet-web3-rpc.ckbapp.dev/ws\"],\n \"shortName\": \"ckb\",\n \"slug\": \"polyjuice-testnet\",\n \"testnet\": true\n};\n\nvar c71401 = {\n \"chain\": \"GWT\",\n \"chainId\": 71401,\n \"explorers\": [{\n \"name\": \"GWScan Block Explorer\",\n \"url\": \"https://v1.testnet.gwscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://testnet.bridge.godwoken.io\"],\n \"infoURL\": \"https://www.nervos.org\",\n \"name\": \"Godwoken Testnet v1\",\n \"nativeCurrency\": {\n \"name\": \"pCKB\",\n \"symbol\": \"pCKB\",\n \"decimals\": 18\n },\n \"networkId\": 71401,\n \"rpc\": [\"https://godwoken-testnet-v1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://71401.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://godwoken-testnet-v1.ckbapp.dev\", \"https://v1.testnet.godwoken.io/rpc\"],\n \"shortName\": \"gw-testnet-v1\",\n \"slug\": \"godwoken-testnet-v1\",\n \"testnet\": true\n};\n\nvar c71402 = {\n \"chain\": \"GWT\",\n \"chainId\": 71402,\n \"explorers\": [{\n \"name\": \"GWScan Block Explorer\",\n \"url\": \"https://v1.gwscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.nervos.org\",\n \"name\": \"Godwoken Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"pCKB\",\n \"symbol\": \"pCKB\",\n \"decimals\": 18\n },\n \"networkId\": 71402,\n \"rpc\": [\"https://godwoken.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://71402.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://v1.mainnet.godwoken.io/rpc\"],\n \"shortName\": \"gw-mainnet-v1\",\n \"slug\": \"godwoken\",\n \"testnet\": false\n};\n\nvar c72605 = {\n \"chain\": \"Jambon's Devnet\",\n \"chainId\": 72605,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"name\": \"Jambon's Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Jambon's Devnet\",\n \"symbol\": \"DOB\",\n \"decimals\": 18\n },\n \"networkId\": 72605,\n \"redFlags\": [],\n \"rpc\": [],\n \"shortName\": \"Jambon's Devnet\",\n \"slug\": \"jambon-s-devnet\",\n \"testnet\": true\n};\n\nvar c73799 = {\n \"chain\": \"Volta\",\n \"chainId\": 73799,\n \"explorers\": [],\n \"faucets\": [\"https://voltafaucet.energyweb.org\"],\n \"infoURL\": \"https://energyweb.org\",\n \"name\": \"Energy Web Volta Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Volta Token\",\n \"symbol\": \"VT\",\n \"decimals\": 18\n },\n \"networkId\": 73799,\n \"rpc\": [\"https://energy-web-volta-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://73799.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://volta-rpc.energyweb.org\", \"wss://volta-rpc.energyweb.org/ws\"],\n \"shortName\": \"vt\",\n \"slug\": \"energy-web-volta-testnet\",\n \"testnet\": true\n};\n\nvar c73927 = {\n \"chain\": \"MVM\",\n \"chainId\": 73927,\n \"explorers\": [{\n \"name\": \"mvmscan\",\n \"url\": \"https://scan.mvm.dev\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeuDgSprukzfV7fi9XYHYcfmT4aZZZU7idgShtRS8Vf6V\",\n \"width\": 471,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeuDgSprukzfV7fi9XYHYcfmT4aZZZU7idgShtRS8Vf6V\",\n \"width\": 471,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mvm.dev\",\n \"name\": \"Mixin Virtual Machine\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 73927,\n \"rpc\": [\"https://mixin-virtual-machine.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://73927.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://geth.mvm.dev\"],\n \"shortName\": \"mvm\",\n \"slug\": \"mixin-virtual-machine\",\n \"testnet\": false\n};\n\nvar c75000 = {\n \"chain\": \"RESIN\",\n \"chainId\": 75000,\n \"explorers\": [{\n \"name\": \"ResinScan\",\n \"url\": \"https://explorer.resincoin.dev\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTBszPzBeWPhjozf4TxpL2ws1NkG9yJvisx9h6MFii1zb\",\n \"width\": 460,\n \"height\": 460,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://resincoin.dev\",\n \"name\": \"ResinCoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"RESIN\",\n \"decimals\": 18\n },\n \"networkId\": 75000,\n \"rpc\": [],\n \"shortName\": \"resin\",\n \"slug\": \"resincoin\",\n \"testnet\": false\n};\n\nvar c77238 = {\n \"chain\": \"tFNC\",\n \"chainId\": 77238,\n \"explorers\": [{\n \"name\": \"Foundry Scan Testnet\",\n \"url\": \"https://testnet-explorer.foundryscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.foundryscan.org\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreifx4vef7ubqz4iiaxckcvkdwjrp2hbliljwjlwu2vytlngg3r4pg4\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://foundrychain.org\",\n \"name\": \"Foundry Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Foundry Chain Testnet\",\n \"symbol\": \"tFNC\",\n \"decimals\": 18\n },\n \"networkId\": 77238,\n \"rpc\": [\"https://foundry-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://77238.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.foundryscan.org/\"],\n \"shortName\": \"fnc\",\n \"slug\": \"foundry-chain-testnet\",\n \"testnet\": true\n};\n\nvar c77612 = {\n \"chain\": \"VSC\",\n \"chainId\": 77612,\n \"explorers\": [{\n \"name\": \"ventionscan\",\n \"url\": \"https://ventionscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.vention.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmcNepHmbmHW1BZYM3MFqJW4awwhmDqhUPRXXmRnXwg1U4\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ventionscan.io\",\n \"name\": \"Vention Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"VNT\",\n \"symbol\": \"VNT\",\n \"decimals\": 18\n },\n \"networkId\": 77612,\n \"rpc\": [\"https://vention-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://77612.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.vention.network\"],\n \"shortName\": \"vscm\",\n \"slug\": \"vention-smart-chain\",\n \"testnet\": false\n};\n\nvar c77777 = {\n \"chain\": \"Toronet\",\n \"chainId\": 77777,\n \"ens\": {\n \"registry\": \"0x1f45a71f4aAD769E27c969c4359E0e250C67165c\"\n },\n \"explorers\": [{\n \"name\": \"toronet_explorer\",\n \"url\": \"https://toronet.org/explorer\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmciSvgLatP6jhgdazuiyD3fSrhipfAN7wC943v1qxcrpv\",\n \"width\": 846,\n \"height\": 733,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://toronet.org\",\n \"name\": \"Toronet Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Toro\",\n \"symbol\": \"TORO\",\n \"decimals\": 18\n },\n \"networkId\": 77777,\n \"rpc\": [\"https://toronet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://77777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://toronet.org/rpc\"],\n \"shortName\": \"Toronet\",\n \"slug\": \"toronet\",\n \"testnet\": false\n};\n\nvar c78110 = {\n \"chain\": \"ETH\",\n \"chainId\": 78110,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://primusmoney.com\",\n \"name\": \"Firenze test network\",\n \"nativeCurrency\": {\n \"name\": \"Firenze Ether\",\n \"symbol\": \"FIN\",\n \"decimals\": 18\n },\n \"networkId\": 78110,\n \"rpc\": [\"https://firenze-test-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78110.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://ethnode.primusmoney.com/firenze\"],\n \"shortName\": \"firenze\",\n \"slug\": \"firenze-test-network\",\n \"testnet\": true\n};\n\nvar c78281 = {\n \"chain\": \"Dragonfly\",\n \"chainId\": 78281,\n \"explorers\": [{\n \"name\": \"Dragonfly Blockscout\",\n \"url\": \"https://blockscout.dragonfly.hexapod.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmPXhdPGufjcPzZ9Y6nY6QyW8MgA6793L88iPMRh1Q3gjJ\",\n \"width\": 512,\n \"height\": 366,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hexapod.network\",\n \"name\": \"Dragonfly Mainnet (Hexapod)\",\n \"nativeCurrency\": {\n \"name\": \"Dragonfly\",\n \"symbol\": \"DFLY\",\n \"decimals\": 18\n },\n \"networkId\": 78281,\n \"rpc\": [\"https://dragonfly-hexapod.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78281.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dragonfly-rpc.switch.ch\", \"https://dragonfly-rpc.kore-technologies.ch\", \"https://dragonfly-rpc.phoenix-systems.io\", \"https://dragonfly-rpc.block-spirit.ch\"],\n \"shortName\": \"dfly\",\n \"slug\": \"dragonfly-hexapod\",\n \"testnet\": false\n};\n\nvar c78430 = {\n \"chain\": \"AMPLIFY\",\n \"chainId\": 78430,\n \"explorers\": [{\n \"name\": \"AMPLIFY Explorer\",\n \"url\": \"https://subnets-test.avax.network/amplify\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.avax.network\",\n \"name\": \"Amplify Subnet\",\n \"nativeCurrency\": {\n \"name\": \"AMP\",\n \"symbol\": \"AMP\",\n \"decimals\": 18\n },\n \"networkId\": 78430,\n \"rpc\": [\"https://amplify-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78430.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/amplify/testnet/rpc\"],\n \"shortName\": \"amplify\",\n \"slug\": \"amplify-subnet\",\n \"testnet\": true\n};\n\nvar c78431 = {\n \"chain\": \"BULLETIN\",\n \"chainId\": 78431,\n \"explorers\": [{\n \"name\": \"BULLETIN Explorer\",\n \"url\": \"https://subnets-test.avax.network/bulletin\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.avax.network\",\n \"name\": \"Bulletin Subnet\",\n \"nativeCurrency\": {\n \"name\": \"BLT\",\n \"symbol\": \"BLT\",\n \"decimals\": 18\n },\n \"networkId\": 78431,\n \"rpc\": [\"https://bulletin-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78431.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/bulletin/testnet/rpc\"],\n \"shortName\": \"bulletin\",\n \"slug\": \"bulletin-subnet\",\n \"testnet\": true\n};\n\nvar c78432 = {\n \"chain\": \"CONDUIT\",\n \"chainId\": 78432,\n \"explorers\": [{\n \"name\": \"CONDUIT Explorer\",\n \"url\": \"https://subnets-test.avax.network/conduit\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://www.avax.network\",\n \"name\": \"Conduit Subnet\",\n \"nativeCurrency\": {\n \"name\": \"CON\",\n \"symbol\": \"CON\",\n \"decimals\": 18\n },\n \"networkId\": 78432,\n \"rpc\": [\"https://conduit-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://78432.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/conduit/testnet/rpc\"],\n \"shortName\": \"conduit\",\n \"slug\": \"conduit-subnet\",\n \"testnet\": true\n};\n\nvar c79879 = {\n \"chain\": \"STAND\",\n \"chainId\": 79879,\n \"explorers\": [{\n \"name\": \"Gold Smart Chain\",\n \"url\": \"https://testnet.goldsmartchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.goldsmartchain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmPNuymyaKLJhCaXnyrsL8358FeTxabZFsaxMmWNU4Tzt3\",\n \"width\": 396,\n \"height\": 418,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://goldsmartchain.com\",\n \"name\": \"Gold Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Standard in Gold\",\n \"symbol\": \"STAND\",\n \"decimals\": 18\n },\n \"networkId\": 79879,\n \"rpc\": [\"https://gold-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://79879.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.goldsmartchain.com\"],\n \"shortName\": \"STANDt\",\n \"slug\": \"gold-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c80001 = {\n \"chain\": \"Polygon\",\n \"chainId\": 80001,\n \"explorers\": [{\n \"name\": \"polygonscan\",\n \"url\": \"https://mumbai.polygonscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.polygon.technology/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/polygon/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polygon.technology/\",\n \"name\": \"Mumbai\",\n \"nativeCurrency\": {\n \"name\": \"MATIC\",\n \"symbol\": \"MATIC\",\n \"decimals\": 18\n },\n \"networkId\": 80001,\n \"redFlags\": [],\n \"rpc\": [\"https://mumbai.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://80001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-mumbai.maticvigil.com\", \"https://polygon-mumbai-bor.publicnode.com\", \"wss://polygon-mumbai-bor.publicnode.com\", \"https://polygon-mumbai.gateway.tenderly.co\", \"wss://polygon-mumbai.gateway.tenderly.co\"],\n \"shortName\": \"maticmum\",\n \"slug\": \"mumbai\",\n \"testnet\": true,\n \"title\": \"Polygon Testnet Mumbai\"\n};\n\nvar c80182 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 80182,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"QI M 12051\",\n \"nativeCurrency\": {\n \"name\": \"QI M 12051 Token\",\n \"symbol\": \"VTV\",\n \"decimals\": 18\n },\n \"networkId\": 80182,\n \"redFlags\": [],\n \"rpc\": [\"https://qi-m-12051.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://80182.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/b19c9e32-f359-451f-ad15-7ec784625c04\"],\n \"shortName\": \"QI M 12051\",\n \"slug\": \"qi-m-12051\",\n \"testnet\": true\n};\n\nvar c81041 = {\n \"chain\": \"Nordek\",\n \"chainId\": 81041,\n \"explorers\": [{\n \"name\": \"nordek\",\n \"url\": \"https://nordekscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://nordekscan.com\",\n \"name\": \"Nordek Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"NRK\",\n \"symbol\": \"NRK\",\n \"decimals\": 18\n },\n \"networkId\": 81041,\n \"rpc\": [\"https://nordek.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://81041.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.nordekscan.com\"],\n \"shortName\": \"nordek\",\n \"slug\": \"nordek\",\n \"testnet\": false\n};\n\nvar c81341 = {\n \"chain\": \"MEER\",\n \"chainId\": 81341,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Amana Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Amana Testnet\",\n \"symbol\": \"MEER-T\",\n \"decimals\": 18\n },\n \"networkId\": 81341,\n \"rpc\": [],\n \"shortName\": \"amanatest\",\n \"slug\": \"amana-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c81342 = {\n \"chain\": \"MEER\",\n \"chainId\": 81342,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Amana Mixnet\",\n \"nativeCurrency\": {\n \"name\": \"Amana Mixnet\",\n \"symbol\": \"MEER-M\",\n \"decimals\": 18\n },\n \"networkId\": 81342,\n \"rpc\": [],\n \"shortName\": \"amanamix\",\n \"slug\": \"amana-mixnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81343 = {\n \"chain\": \"MEER\",\n \"chainId\": 81343,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Amana Privnet\",\n \"nativeCurrency\": {\n \"name\": \"Amana Privnet\",\n \"symbol\": \"MEER-P\",\n \"decimals\": 18\n },\n \"networkId\": 81343,\n \"rpc\": [],\n \"shortName\": \"amanapriv\",\n \"slug\": \"amana-privnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81351 = {\n \"chain\": \"MEER\",\n \"chainId\": 81351,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Flana Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Flana Testnet\",\n \"symbol\": \"MEER-T\",\n \"decimals\": 18\n },\n \"networkId\": 81351,\n \"rpc\": [],\n \"shortName\": \"flanatest\",\n \"slug\": \"flana-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c81352 = {\n \"chain\": \"MEER\",\n \"chainId\": 81352,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Flana Mixnet\",\n \"nativeCurrency\": {\n \"name\": \"Flana Mixnet\",\n \"symbol\": \"MEER-M\",\n \"decimals\": 18\n },\n \"networkId\": 81352,\n \"rpc\": [],\n \"shortName\": \"flanamix\",\n \"slug\": \"flana-mixnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81353 = {\n \"chain\": \"MEER\",\n \"chainId\": 81353,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Flana Privnet\",\n \"nativeCurrency\": {\n \"name\": \"Flana Privnet\",\n \"symbol\": \"MEER-P\",\n \"decimals\": 18\n },\n \"networkId\": 81353,\n \"rpc\": [],\n \"shortName\": \"flanapriv\",\n \"slug\": \"flana-privnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81361 = {\n \"chain\": \"MEER\",\n \"chainId\": 81361,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Mizana Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Mizana Testnet\",\n \"symbol\": \"MEER-T\",\n \"decimals\": 18\n },\n \"networkId\": 81361,\n \"rpc\": [],\n \"shortName\": \"mizanatest\",\n \"slug\": \"mizana-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c81362 = {\n \"chain\": \"MEER\",\n \"chainId\": 81362,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Mizana Mixnet\",\n \"nativeCurrency\": {\n \"name\": \"Mizana Mixnet\",\n \"symbol\": \"MEER-M\",\n \"decimals\": 18\n },\n \"networkId\": 81362,\n \"rpc\": [],\n \"shortName\": \"mizanamix\",\n \"slug\": \"mizana-mixnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81363 = {\n \"chain\": \"MEER\",\n \"chainId\": 81363,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmWSbMuCwQzhBB6GRLYqZ87n5cnpzpYCehCAMMQmUXj4mm\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://github.com/Qitmeer\",\n \"name\": \"Mizana Privnet\",\n \"nativeCurrency\": {\n \"name\": \"Mizana Privnet\",\n \"symbol\": \"MEER-P\",\n \"decimals\": 18\n },\n \"networkId\": 81363,\n \"rpc\": [],\n \"shortName\": \"mizanapriv\",\n \"slug\": \"mizana-privnet\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c81720 = {\n \"chain\": \"QNET\",\n \"chainId\": 81720,\n \"explorers\": [{\n \"name\": \"Quantum Scan Mainnet\",\n \"url\": \"https://quantumscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibwywok67uewqbtqdzgr7nlk3lvvg7hxmbgwtn7kdwxe34useucvm\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://quantumnetwork.gg\",\n \"name\": \"Quantum Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Quantum Chain\",\n \"symbol\": \"QNET\",\n \"decimals\": 18\n },\n \"networkId\": 81720,\n \"rpc\": [\"https://quantum-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://81720.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.quantumscan.org\"],\n \"shortName\": \"qnet\",\n \"slug\": \"quantum-chain\",\n \"testnet\": false\n};\n\nvar c82807 = {\n \"chain\": \"zFirst AvaCloud Subnet Thirdweb\",\n \"chainId\": 82807,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"zFirst AvaCloud Subnet Thirdweb\",\n \"nativeCurrency\": {\n \"name\": \"zFirst AvaCloud Subnet Thirdweb\",\n \"symbol\": \"YOOO\",\n \"decimals\": 18\n },\n \"networkId\": 82807,\n \"redFlags\": [],\n \"rpc\": [\"https://zfirst-avacloud-subnet-thirdweb.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://82807.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avacloud-dev.io/f2ea180d-0fda-4b06-9b2e-53a65d3fd789\"],\n \"shortName\": \"zFirst AvaCloud Subnet Thirdweb\",\n \"slug\": \"zfirst-avacloud-subnet-thirdweb\",\n \"testnet\": true\n};\n\nvar c84531 = {\n \"chain\": \"ETH\",\n \"chainId\": 84531,\n \"explorers\": [{\n \"name\": \"basescan\",\n \"url\": \"https://goerli.basescan.org\",\n \"standard\": \"none\"\n }, {\n \"name\": \"basescout\",\n \"url\": \"https://base-goerli.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"dexguru\",\n \"url\": \"https://base-goerli.dex.guru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRaASKRSjQ5btoUQ2rNTJNxKtx2a2RoewgA7DMQkLVEne\",\n \"width\": 83,\n \"height\": 82,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://www.coinbase.com/faucets/base-ethereum-goerli-faucet\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW5Vn15HeRkScMfPcW12ZdZcC2yUASpu6eCsECRdEmjjj/base-512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://base.org\",\n \"name\": \"Base Goerli Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 84531,\n \"redFlags\": [],\n \"rpc\": [\"https://base-goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://84531.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli.base.org\", \"https://base-goerli.gateway.tenderly.co\", \"wss://base-goerli.gateway.tenderly.co\", \"https://base-goerli.publicnode.com\", \"wss://base-goerli.publicnode.com\"],\n \"shortName\": \"basegor\",\n \"slug\": \"base-goerli\",\n \"testnet\": true\n};\n\nvar c84532 = {\n \"chain\": \"ETH\",\n \"chainId\": 84532,\n \"explorers\": [{\n \"name\": \"basescout\",\n \"url\": \"https://base-sepolia.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmaxRoHpxZd8PqccAynherrMznMufG6sdmHZLihkECXmZv\",\n \"width\": 1200,\n \"height\": 1200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://base.org\",\n \"name\": \"Base Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 84532,\n \"rpc\": [\"https://base-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://84532.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.base.org\"],\n \"shortName\": \"basesep\",\n \"slug\": \"base-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c84886 = {\n \"chain\": \"Aerie\",\n \"chainId\": 84886,\n \"explorers\": [{\n \"name\": \"Aerie Explorer\",\n \"url\": \"https://explorer.aerielab.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreig54jss26xllpjbclmfgwvot72m4ku7qxignhlqei6mijvwi2m4pu\",\n \"width\": 1062,\n \"height\": 1069,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreig54jss26xllpjbclmfgwvot72m4ku7qxignhlqei6mijvwi2m4pu\",\n \"width\": 1062,\n \"height\": 1069,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://aerielab.io/\",\n \"name\": \"Aerie Network\",\n \"nativeCurrency\": {\n \"name\": \"Aerie\",\n \"symbol\": \"AER\",\n \"decimals\": 18\n },\n \"networkId\": 84886,\n \"rpc\": [\"https://aerie-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://84886.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.aerielab.io\"],\n \"shortName\": \"Aerie\",\n \"slug\": \"aerie-network\",\n \"testnet\": false\n};\n\nvar c85449 = {\n \"chain\": \"CYBER\",\n \"chainId\": 85449,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://cybertrust.space\",\n \"name\": \"CYBERTRUST\",\n \"nativeCurrency\": {\n \"name\": \"Cyber Trust\",\n \"symbol\": \"CYBER\",\n \"decimals\": 18\n },\n \"networkId\": 48501,\n \"rpc\": [\"https://cybertrust.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://85449.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://testnet.cybertrust.space:48501\"],\n \"shortName\": \"Cyber\",\n \"slug\": \"cybertrust\",\n \"testnet\": true\n};\n\nvar c88002 = {\n \"chain\": \"ETH\",\n \"chainId\": 88002,\n \"explorers\": [{\n \"name\": \"Nautscan\",\n \"url\": \"https://proteus.nautscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNutSgM7n6aJPPDiofe9Dm1epy1RcYTMvugukLUK2vmPM\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://proteusfaucet.nautchain.xyz\"],\n \"icon\": {\n \"url\": \"ipfs://QmNutSgM7n6aJPPDiofe9Dm1epy1RcYTMvugukLUK2vmPM\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.nautchain.xyz\",\n \"name\": \"Nautilus Proteus Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Zebec Test Token\",\n \"symbol\": \"tZBC\",\n \"decimals\": 18\n },\n \"networkId\": 88002,\n \"rpc\": [\"https://nautilus-proteus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.proteus.nautchain.xyz/solana\"],\n \"shortName\": \"NAUTTest\",\n \"slug\": \"nautilus-proteus-testnet\",\n \"testnet\": true\n};\n\nvar c88880 = {\n \"chain\": \"CHZ\",\n \"chainId\": 88880,\n \"explorers\": [{\n \"name\": \"scoville-explorer\",\n \"url\": \"https://scoville-explorer.chiliz.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://scoville-faucet.chiliz.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmYV5xUVZhHRzLy7ie9D8qZeygJHvNZZAxwnB9GXYy6EED\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.chiliz.com/en/chain\",\n \"name\": \"Chiliz Scoville Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Chiliz\",\n \"symbol\": \"CHZ\",\n \"decimals\": 18\n },\n \"networkId\": 88880,\n \"rpc\": [\"https://chiliz-scoville-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88880.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://scoville-rpc.chiliz.com\"],\n \"shortName\": \"chz\",\n \"slug\": \"chiliz-scoville-testnet\",\n \"testnet\": true\n};\n\nvar c88882 = {\n \"chain\": \"Spicy\",\n \"chainId\": 88882,\n \"explorers\": [{\n \"name\": \"Spicy Explorer\",\n \"url\": \"http://spicy-explorer.chiliz.com/\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://spicy-faucet.chiliz.com/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTGYofJ8VLkeNY4J69AvXi8e126kmbHmf34wLFoJ1FKAK\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://chiliz.com/\",\n \"name\": \"Spicy Chain\",\n \"nativeCurrency\": {\n \"name\": \"Chiliz\",\n \"symbol\": \"CHZ\",\n \"decimals\": 18\n },\n \"networkId\": 88882,\n \"redFlags\": [],\n \"rpc\": [\"https://spicy-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88882.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://spicy-rpc.chiliz.com/\"],\n \"shortName\": \"Spicy\",\n \"slug\": \"spicy-chain\",\n \"testnet\": true\n};\n\nvar c88883 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 88883,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"Proj Orc Testnet Alpha\",\n \"nativeCurrency\": {\n \"name\": \"Proj Orc Testnet Alpha Token\",\n \"symbol\": \"STX\",\n \"decimals\": 18\n },\n \"networkId\": 88883,\n \"redFlags\": [],\n \"rpc\": [\"https://proj-orc-testnet-alpha.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88883.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/projorctes/testnet/rpc\"],\n \"shortName\": \"Proj Orc Testnet Alpha\",\n \"slug\": \"proj-orc-testnet-alpha\",\n \"testnet\": true\n};\n\nvar c88888 = {\n \"chain\": \"CC2\",\n \"chainId\": 88888,\n \"explorers\": [{\n \"name\": \"cc2scan\",\n \"url\": \"https://scan.chiliz.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTGYofJ8VLkeNY4J69AvXi8e126kmbHmf34wLFoJ1FKAK\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://chiliz.com/chiliz-chain-2-0/\",\n \"name\": \"Chiliz Chain\",\n \"nativeCurrency\": {\n \"name\": \"Chiliz\",\n \"symbol\": \"CHZ\",\n \"decimals\": 18\n },\n \"networkId\": 88888,\n \"redFlags\": [\"reusedChainId\"],\n \"rpc\": [\"https://chiliz-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ankr.com/chiliz\", \"https://rpc.chiliz.com\"],\n \"shortName\": \"cc2\",\n \"slug\": \"chiliz-chain\",\n \"testnet\": false\n};\n\nvar c90210 = {\n \"chain\": \"ETH\",\n \"chainId\": 90210,\n \"explorers\": [{\n \"name\": \"Beverly Hills explorer\",\n \"url\": \"https://explorer.beverlyhills.ethdevops.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.beverlyhills.ethdevops.io\"],\n \"infoURL\": \"https://beverlyhills.ethdevops.io\",\n \"name\": \"Beverly Hills\",\n \"nativeCurrency\": {\n \"name\": \"Beverly Hills Testnet Ether\",\n \"symbol\": \"BVE\",\n \"decimals\": 18\n },\n \"networkId\": 90210,\n \"rpc\": [\"https://beverly-hills.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://90210.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.beverlyhills.ethdevops.io:8545\"],\n \"shortName\": \"bvhl\",\n \"slug\": \"beverly-hills\",\n \"status\": \"incubating\",\n \"testnet\": true,\n \"title\": \"Ethereum multi-client Verkle Testnet Beverly Hills\"\n};\n\nvar c91002 = {\n \"chain\": \"ETH\",\n \"chainId\": 91002,\n \"explorers\": [{\n \"name\": \"Nautscan\",\n \"url\": \"https://triton.nautscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.eclipse.builders\"],\n \"icon\": {\n \"url\": \"ipfs://QmNutSgM7n6aJPPDiofe9Dm1epy1RcYTMvugukLUK2vmPM\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.nautchain.xyz\",\n \"name\": \"Nautilus Trition Chain\",\n \"nativeCurrency\": {\n \"name\": \"Nautilus Zebec Testnet Tokens\",\n \"symbol\": \"tZBC\",\n \"decimals\": 18\n },\n \"networkId\": 91002,\n \"rpc\": [\"https://nautilus-trition-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://91002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://triton.api.nautchain.xyz\"],\n \"shortName\": \"NAUT\",\n \"slug\": \"nautilus-trition-chain\",\n \"testnet\": true,\n \"title\": \"Nautilus Trition Testnet\"\n};\n\nvar c91003 = {\n \"chain\": \"WRLDS\",\n \"chainId\": 91003,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.evm.worlds.dev.eclipsenetwork.xyz/request_neon\"],\n \"features\": [],\n \"name\": \"Worlds Appchain\",\n \"nativeCurrency\": {\n \"name\": \"WRLDS\",\n \"symbol\": \"WRLDS\",\n \"decimals\": 18\n },\n \"networkId\": 91003,\n \"redFlags\": [],\n \"rpc\": [\"https://worlds-appchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://91003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.evm.worlds.dev.eclipsenetwork.xyz/\"],\n \"shortName\": \"WRLDS\",\n \"slug\": \"worlds-appchain\",\n \"testnet\": true\n};\n\nvar c92001 = {\n \"chain\": \"Lambda\",\n \"chainId\": 92001,\n \"explorers\": [{\n \"name\": \"Lambda EVM Explorer\",\n \"url\": \"https://explorer.lambda.top\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmWsoME6LCghQTpGYf7EnUojaDdYo7kfkWVjE6VvNtkjwy\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.lambda.top\"],\n \"icon\": {\n \"url\": \"ipfs://QmWsoME6LCghQTpGYf7EnUojaDdYo7kfkWVjE6VvNtkjwy\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://lambda.im\",\n \"name\": \"Lambda Testnet\",\n \"nativeCurrency\": {\n \"name\": \"test-Lamb\",\n \"symbol\": \"LAMB\",\n \"decimals\": 18\n },\n \"networkId\": 92001,\n \"rpc\": [\"https://lambda-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://92001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.lambda.top/\"],\n \"shortName\": \"lambda-testnet\",\n \"slug\": \"lambda-testnet\",\n \"testnet\": true\n};\n\nvar c96970 = {\n \"chain\": \"Mantis\",\n \"chainId\": 96970,\n \"explorers\": [{\n \"name\": \"Mantis Blockscout\",\n \"url\": \"https://blockscout.mantis.hexapod.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://mantis.switch.ch/faucet\", \"https://mantis.kore-technologies.ch/faucet\", \"https://mantis.phoenix-systems.io/faucet\", \"https://mantis.block-spirit.ch/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://Qma8dDhxSSVUyzV8Pu5bo252WaZEEikYFndRh7LVktvQEy\",\n \"width\": 512,\n \"height\": 330,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hexapod.network\",\n \"name\": \"Mantis Testnet (Hexapod)\",\n \"nativeCurrency\": {\n \"name\": \"Mantis\",\n \"symbol\": \"MANTIS\",\n \"decimals\": 18\n },\n \"networkId\": 96970,\n \"rpc\": [\"https://mantis-testnet-hexapod.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://96970.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mantis-rpc.switch.ch\", \"https://mantis-rpc.kore-technologies.ch\", \"https://mantis-rpc.phoenix-systems.io\"],\n \"shortName\": \"mantis\",\n \"slug\": \"mantis-testnet-hexapod\",\n \"testnet\": true\n};\n\nvar c97288 = {\n \"chain\": \"Boba BNB Mainnet\",\n \"chainId\": 97288,\n \"explorers\": [{\n \"name\": \"Boba BNB block explorer\",\n \"url\": \"https://blockexplorer.bnb.boba.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://boba.network\",\n \"name\": \"Boba BNB Mainnet Old\",\n \"nativeCurrency\": {\n \"name\": \"Boba Token\",\n \"symbol\": \"BOBA\",\n \"decimals\": 18\n },\n \"networkId\": 97288,\n \"rpc\": [],\n \"shortName\": \"BobaBnbOld\",\n \"slug\": \"boba-bnb-old\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c99099 = {\n \"chain\": \"$EL\",\n \"chainId\": 99099,\n \"explorers\": [{\n \"name\": \"eLiberty Testnet\",\n \"url\": \"https://testnet.eliberty.ngo\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.eliberty.ngo\"],\n \"icon\": {\n \"url\": \"ipfs://Qmcr8US1DZcK3ooiMtE8tEQPgep12abXzxPw1jCkgZhji9\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://eliberty.ngo\",\n \"name\": \"eLiberty Testnet\",\n \"nativeCurrency\": {\n \"name\": \"eLiberty\",\n \"symbol\": \"$EL\",\n \"decimals\": 18\n },\n \"networkId\": 99099,\n \"rpc\": [\"https://eliberty-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://99099.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.eliberty.ngo\"],\n \"shortName\": \"ELt\",\n \"slug\": \"eliberty-testnet\",\n \"testnet\": true\n};\n\nvar c99998 = {\n \"chain\": \"USC\",\n \"chainId\": 99998,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.ubchain.site\",\n \"name\": \"UB Smart Chain(testnet)\",\n \"nativeCurrency\": {\n \"name\": \"UBC\",\n \"symbol\": \"UBC\",\n \"decimals\": 18\n },\n \"networkId\": 99998,\n \"rpc\": [\"https://ub-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://99998.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.rpc.uschain.network\"],\n \"shortName\": \"usctest\",\n \"slug\": \"ub-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c99999 = {\n \"chain\": \"USC\",\n \"chainId\": 99999,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.ubchain.site/\",\n \"name\": \"UB Smart Chain\",\n \"nativeCurrency\": {\n \"name\": \"UBC\",\n \"symbol\": \"UBC\",\n \"decimals\": 18\n },\n \"networkId\": 99999,\n \"rpc\": [\"https://ub-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://99999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.uschain.network\"],\n \"shortName\": \"usc\",\n \"slug\": \"ub-smart-chain\",\n \"testnet\": false\n};\n\nvar c100000 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Root\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100000,\n \"rpc\": [\"https://quarkchain-root.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://jrpc.mainnet.quarkchain.io:38391\"],\n \"shortName\": \"qkc-r\",\n \"slug\": \"quarkchain-root\",\n \"testnet\": false\n};\n\nvar c100001 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100001,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/0\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100001,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s0-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39000\"],\n \"shortName\": \"qkc-s0\",\n \"slug\": \"quarkchain-shard-0\",\n \"testnet\": false\n};\n\nvar c100002 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100002,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/1\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100002,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s1-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39001\"],\n \"shortName\": \"qkc-s1\",\n \"slug\": \"quarkchain-shard-1\",\n \"testnet\": false\n};\n\nvar c100003 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100003,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/2\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 2\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100003,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s2-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39002\"],\n \"shortName\": \"qkc-s2\",\n \"slug\": \"quarkchain-shard-2\",\n \"testnet\": false\n};\n\nvar c100004 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100004,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/3\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 3\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100004,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100004.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s3-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39003\"],\n \"shortName\": \"qkc-s3\",\n \"slug\": \"quarkchain-shard-3\",\n \"testnet\": false\n};\n\nvar c100005 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100005,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/4\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 4\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100005,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-4.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s4-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39004\"],\n \"shortName\": \"qkc-s4\",\n \"slug\": \"quarkchain-shard-4\",\n \"testnet\": false\n};\n\nvar c100006 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100006,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/5\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 5\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100006,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-5.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100006.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s5-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39005\"],\n \"shortName\": \"qkc-s5\",\n \"slug\": \"quarkchain-shard-5\",\n \"testnet\": false\n};\n\nvar c100007 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100007,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/6\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 6\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100007,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-6.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100007.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s6-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39006\"],\n \"shortName\": \"qkc-s6\",\n \"slug\": \"quarkchain-shard-6\",\n \"testnet\": false\n};\n\nvar c100008 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 100008,\n \"explorers\": [{\n \"name\": \"quarkchain-mainnet\",\n \"url\": \"https://mainnet.quarkchain.io/7\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Mainnet Shard 7\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 100008,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-100000\"\n },\n \"rpc\": [\"https://quarkchain-shard-7.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://100008.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-s7-ethapi.quarkchain.io\", \"http://eth-jrpc.mainnet.quarkchain.io:39007\"],\n \"shortName\": \"qkc-s7\",\n \"slug\": \"quarkchain-shard-7\",\n \"testnet\": false\n};\n\nvar c100009 = {\n \"chain\": \"VeChain\",\n \"chainId\": 100009,\n \"explorers\": [{\n \"name\": \"VeChain Stats\",\n \"url\": \"https://vechainstats.com\",\n \"standard\": \"none\"\n }, {\n \"name\": \"VeChain Explorer\",\n \"url\": \"https://explore.vechain.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://vechain.org\",\n \"name\": \"VeChain\",\n \"nativeCurrency\": {\n \"name\": \"VeChain\",\n \"symbol\": \"VET\",\n \"decimals\": 18\n },\n \"networkId\": 100009,\n \"rpc\": [],\n \"shortName\": \"vechain\",\n \"slug\": \"vechain\",\n \"testnet\": false\n};\n\nvar c100010 = {\n \"chain\": \"VeChain\",\n \"chainId\": 100010,\n \"explorers\": [{\n \"name\": \"VeChain Explorer\",\n \"url\": \"https://explore-testnet.vechain.org\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.vecha.in\"],\n \"infoURL\": \"https://vechain.org\",\n \"name\": \"VeChain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"VeChain\",\n \"symbol\": \"VET\",\n \"decimals\": 18\n },\n \"networkId\": 100010,\n \"rpc\": [],\n \"shortName\": \"vechain-testnet\",\n \"slug\": \"vechain-testnet\",\n \"testnet\": true\n};\n\nvar c100100 = {\n \"chain\": \"CHI1\",\n \"chainId\": 100100,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafybeidk4swpgdyqmpz6shd5onvpaujvwiwthrhypufnwr6xh3dausz2dm\",\n \"width\": 1800,\n \"height\": 1800,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.gnosischain.com\",\n \"name\": \"Deprecated CHI\",\n \"nativeCurrency\": {\n \"name\": \"Chiado xDAI\",\n \"symbol\": \"xDAI\",\n \"decimals\": 18\n },\n \"networkId\": 100100,\n \"rpc\": [],\n \"shortName\": \"chi1\",\n \"slug\": \"deprecated-chi\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c101010 = {\n \"chain\": \"SVRN\",\n \"chainId\": 101010,\n \"explorers\": [{\n \"name\": \"Soverun\",\n \"url\": \"https://testnet.soverun.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.soverun.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmTYazUzgY9Nn2mCjWwFUSLy3dG6i2PvALpwCNQvx1zXyi\",\n \"width\": 1154,\n \"height\": 1154,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://soverun.com\",\n \"name\": \"Soverun Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Soverun\",\n \"symbol\": \"SVRN\",\n \"decimals\": 18\n },\n \"networkId\": 101010,\n \"rpc\": [\"https://soverun-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://101010.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.soverun.com\"],\n \"shortName\": \"SVRNt\",\n \"slug\": \"soverun-testnet\",\n \"testnet\": true\n};\n\nvar c103090 = {\n \"chain\": \"crystal\",\n \"chainId\": 103090,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://scan.crystaleum.org\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://Qmbry1Uc6HnXmqFNXW5dFJ7To8EezCCjNr4TqqvAyzXS4h\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmbry1Uc6HnXmqFNXW5dFJ7To8EezCCjNr4TqqvAyzXS4h\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://crystaleum.org\",\n \"name\": \"Crystaleum\",\n \"nativeCurrency\": {\n \"name\": \"CRFI\",\n \"symbol\": \"◈\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://crystaleum.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://103090.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://evm.cryptocurrencydevs.org\", \"https://rpc.crystaleum.org\"],\n \"shortName\": \"CRFI\",\n \"slug\": \"crystaleum\",\n \"testnet\": false\n};\n\nvar c108801 = {\n \"chain\": \"BRO\",\n \"chainId\": 108801,\n \"explorers\": [{\n \"name\": \"BROChain Explorer\",\n \"url\": \"https://explorer.brochain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://brochain.org\",\n \"name\": \"BROChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Brother\",\n \"symbol\": \"BRO\",\n \"decimals\": 18\n },\n \"networkId\": 108801,\n \"rpc\": [\"https://brochain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://108801.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.brochain.org\", \"http://rpc.brochain.org\", \"https://rpc.brochain.org/mainnet\", \"http://rpc.brochain.org/mainnet\"],\n \"shortName\": \"bro\",\n \"slug\": \"brochain\",\n \"testnet\": false\n};\n\nvar c110000 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Root\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110000,\n \"rpc\": [\"https://quarkchain-devnet-root.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://jrpc.devnet.quarkchain.io:38391\"],\n \"shortName\": \"qkc-d-r\",\n \"slug\": \"quarkchain-devnet-root\",\n \"testnet\": false\n};\n\nvar c110001 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110001,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/0\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110001,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s0-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39900\"],\n \"shortName\": \"qkc-d-s0\",\n \"slug\": \"quarkchain-devnet-shard-0\",\n \"testnet\": false\n};\n\nvar c110002 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110002,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/1\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110002,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s1-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39901\"],\n \"shortName\": \"qkc-d-s1\",\n \"slug\": \"quarkchain-devnet-shard-1\",\n \"testnet\": false\n};\n\nvar c110003 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110003,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/2\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 2\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110003,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s2-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39902\"],\n \"shortName\": \"qkc-d-s2\",\n \"slug\": \"quarkchain-devnet-shard-2\",\n \"testnet\": false\n};\n\nvar c110004 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110004,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/3\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 3\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110004,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110004.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s3-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39903\"],\n \"shortName\": \"qkc-d-s3\",\n \"slug\": \"quarkchain-devnet-shard-3\",\n \"testnet\": false\n};\n\nvar c110005 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110005,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/4\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 4\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110005,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-4.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s4-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39904\"],\n \"shortName\": \"qkc-d-s4\",\n \"slug\": \"quarkchain-devnet-shard-4\",\n \"testnet\": false\n};\n\nvar c110006 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110006,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/5\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 5\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110006,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-5.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110006.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s5-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39905\"],\n \"shortName\": \"qkc-d-s5\",\n \"slug\": \"quarkchain-devnet-shard-5\",\n \"testnet\": false\n};\n\nvar c110007 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110007,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/6\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 6\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110007,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-6.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110007.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s6-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39906\"],\n \"shortName\": \"qkc-d-s6\",\n \"slug\": \"quarkchain-devnet-shard-6\",\n \"testnet\": false\n};\n\nvar c110008 = {\n \"chain\": \"QuarkChain\",\n \"chainId\": 110008,\n \"explorers\": [{\n \"name\": \"quarkchain-devnet\",\n \"url\": \"https://devnet.quarkchain.io/7\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.quarkchain.io\",\n \"name\": \"QuarkChain Devnet Shard 7\",\n \"nativeCurrency\": {\n \"name\": \"QKC\",\n \"symbol\": \"QKC\",\n \"decimals\": 18\n },\n \"networkId\": 110008,\n \"parent\": {\n \"type\": \"shard\",\n \"chain\": \"eip155-110000\"\n },\n \"rpc\": [\"https://quarkchain-devnet-shard-7.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://110008.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet-s7-ethapi.quarkchain.io\", \"http://eth-jrpc.devnet.quarkchain.io:39907\"],\n \"shortName\": \"qkc-d-s7\",\n \"slug\": \"quarkchain-devnet-shard-7\",\n \"testnet\": false\n};\n\nvar c111000 = {\n \"chain\": \"SBR\",\n \"chainId\": 111000,\n \"explorers\": [{\n \"name\": \"Siberium Testnet Explorer - blockscout\",\n \"url\": \"https://explorer.test.siberium.net\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYeMdWDZ1iaBFeSPorRyPi7RuSXTdDKTgW3rfnUf3W5ne\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYeMdWDZ1iaBFeSPorRyPi7RuSXTdDKTgW3rfnUf3W5ne\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://siberium.net\",\n \"name\": \"Siberium Test Network\",\n \"nativeCurrency\": {\n \"name\": \"TestSIBR\",\n \"symbol\": \"SIBR\",\n \"decimals\": 18\n },\n \"networkId\": 111000,\n \"rpc\": [\"https://siberium-test-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://111000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.test.siberium.net\"],\n \"shortName\": \"testsbr\",\n \"slug\": \"siberium-test-network\",\n \"testnet\": true\n};\n\nvar c111111 = {\n \"chain\": \"SBR\",\n \"chainId\": 111111,\n \"explorers\": [{\n \"name\": \"Siberium Mainnet Explorer - blockscout - 2\",\n \"url\": \"https://explorer.main.siberium.net.ru\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYeMdWDZ1iaBFeSPorRyPi7RuSXTdDKTgW3rfnUf3W5ne\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYeMdWDZ1iaBFeSPorRyPi7RuSXTdDKTgW3rfnUf3W5ne\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://siberium.net\",\n \"name\": \"Siberium Network\",\n \"nativeCurrency\": {\n \"name\": \"Siberium\",\n \"symbol\": \"SIBR\",\n \"decimals\": 18\n },\n \"networkId\": 111111,\n \"rpc\": [\"https://siberium-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://111111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.main.siberium.net\", \"https://rpc.main.siberium.net.ru\"],\n \"shortName\": \"sbr\",\n \"slug\": \"siberium-network\",\n \"testnet\": false\n};\n\nvar c112358 = {\n \"chain\": \"METAO\",\n \"chainId\": 112358,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.metachain.one\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTmo2QAtX5PbhX96vewnvH4Vc5H83Ft2DJGi6tAqTcFij\",\n \"width\": 1000,\n \"height\": 981,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://metachain.one\",\n \"name\": \"Metachain One Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Metao\",\n \"symbol\": \"METAO\",\n \"decimals\": 18\n },\n \"networkId\": 112358,\n \"rpc\": [\"https://metachain-one.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://112358.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.metachain.one\", \"https://rpc2.metachain.one\"],\n \"shortName\": \"metao\",\n \"slug\": \"metachain-one\",\n \"testnet\": false\n};\n\nvar c123456 = {\n \"chain\": \"ADIL\",\n \"chainId\": 123456,\n \"explorers\": [{\n \"name\": \"ADIL Devnet Explorer\",\n \"url\": \"https://devnet.adilchain-scan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeHNYUx6n8CjUFSLWNT17oAtDYrUq6r8buyvGCUBXCJw6\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://adilchain.io\",\n \"name\": \"ADIL Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Devnet ADIL\",\n \"symbol\": \"ADIL\",\n \"decimals\": 18\n },\n \"networkId\": 123456,\n \"rpc\": [\"https://adil-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://123456.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet.adilchain-rpc.io\"],\n \"shortName\": \"dadil\",\n \"slug\": \"adil-devnet\",\n \"testnet\": false\n};\n\nvar c131419 = {\n \"chain\": \"ETND\",\n \"chainId\": 131419,\n \"explorers\": [{\n \"name\": \"etndscan\",\n \"url\": \"https://scan.etnd.pro\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.etnd.pro\",\n \"name\": \"ETND Chain Mainnets\",\n \"nativeCurrency\": {\n \"name\": \"ETND\",\n \"symbol\": \"ETND\",\n \"decimals\": 18\n },\n \"networkId\": 131419,\n \"rpc\": [\"https://etnd-chain-s.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://131419.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.node1.etnd.pro/\"],\n \"shortName\": \"ETND\",\n \"slug\": \"etnd-chain-s\",\n \"testnet\": false\n};\n\nvar c142857 = {\n \"chain\": \"ICPlaza\",\n \"chainId\": 142857,\n \"explorers\": [{\n \"name\": \"ICPlaza\",\n \"url\": \"https://browsemainnet.ic-plaza.org/index\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQpKKwpqrx77VA4SJLEWhuv9eLFMcVV9uvxRCLb6gdgCX\",\n \"width\": 847,\n \"height\": 906,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://docs.ic-plaza.org/\",\n \"name\": \"ICPlaza Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ict\",\n \"symbol\": \"ict\",\n \"decimals\": 18\n },\n \"networkId\": 142857,\n \"rpc\": [\"https://icplaza.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://142857.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpcmainnet.ic-plaza.org/\"],\n \"shortName\": \"ICPlaza\",\n \"slug\": \"icplaza\",\n \"testnet\": false\n};\n\nvar c167004 = {\n \"chain\": \"ETH\",\n \"chainId\": 167004,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.a2.taiko.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui\",\n \"width\": 288,\n \"height\": 258,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taiko.xyz\",\n \"name\": \"Taiko (Alpha-2 Testnet)\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 167004,\n \"rpc\": [\"https://taiko-alpha-2-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://167004.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.a2.taiko.xyz\"],\n \"shortName\": \"taiko-a2\",\n \"slug\": \"taiko-alpha-2-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c167005 = {\n \"chain\": \"ETH\",\n \"chainId\": 167005,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.test.taiko.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui\",\n \"width\": 288,\n \"height\": 258,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taiko.xyz\",\n \"name\": \"Taiko Grimsvotn L2\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 167005,\n \"rpc\": [\"https://taiko-grimsvotn-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://167005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.test.taiko.xyz\"],\n \"shortName\": \"taiko-l2\",\n \"slug\": \"taiko-grimsvotn-l2\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c167006 = {\n \"chain\": \"ETH\",\n \"chainId\": 167006,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.l3test.taiko.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui\",\n \"width\": 288,\n \"height\": 258,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taiko.xyz\",\n \"name\": \"Taiko Eldfell L3\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 167006,\n \"rpc\": [\"https://taiko-eldfell-l3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://167006.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.l3test.taiko.xyz\"],\n \"shortName\": \"taiko-l3\",\n \"slug\": \"taiko-eldfell-l3\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c167007 = {\n \"chain\": \"ETH\",\n \"chainId\": 167007,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.jolnir.taiko.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui\",\n \"width\": 288,\n \"height\": 258,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://taiko.xyz\",\n \"name\": \"Taiko Jolnir L2\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 167007,\n \"rpc\": [\"https://taiko-jolnir-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://167007.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.jolnir.taiko.xyz\"],\n \"shortName\": \"tko-jolnir\",\n \"slug\": \"taiko-jolnir-l2\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c188710 = {\n \"chain\": \"BDCC\",\n \"chainId\": 188710,\n \"explorers\": [{\n \"name\": \"Bitica DPOS Blockchain Explorer\",\n \"url\": \"https://biticablockchain.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://biticablockchain.com/\",\n \"name\": \"Bitica Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bitica Coin\",\n \"symbol\": \"BDCC\",\n \"decimals\": 18\n },\n \"networkId\": 188710,\n \"rpc\": [\"https://bitica-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://188710.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.biticablockchain.com/\"],\n \"shortName\": \"bdcc\",\n \"slug\": \"bitica-chain\",\n \"testnet\": false\n};\n\nvar c188881 = {\n \"chain\": \"CONDOR\",\n \"chainId\": 188881,\n \"explorers\": [{\n \"name\": \"CondorScan\",\n \"url\": \"https://explorer.condor.systems\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.condor.systems\"],\n \"icon\": {\n \"url\": \"ipfs://QmPRDuEJSTqp2cDUvWCp71Wns6XV8nvdeAVKWH6srpk4xM\",\n \"width\": 752,\n \"height\": 752,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://condor.systems\",\n \"name\": \"Condor Test Network\",\n \"nativeCurrency\": {\n \"name\": \"Condor Native Token\",\n \"symbol\": \"CONDOR\",\n \"decimals\": 18\n },\n \"networkId\": 188881,\n \"rpc\": [\"https://condor-test-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://188881.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.condor.systems/rpc\"],\n \"shortName\": \"condor\",\n \"slug\": \"condor-test-network\",\n \"testnet\": true\n};\n\nvar c200101 = {\n \"chain\": \"milkTAda\",\n \"chainId\": 200101,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer-devnet-cardano-evm.c1.milkomeda.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdoUtvHDybu5ppYBZT8BMRp6AqByVSoQs8nFwKbaS55jd\",\n \"width\": 367,\n \"height\": 367,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://milkomeda.com\",\n \"name\": \"Milkomeda C1 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"milkTAda\",\n \"symbol\": \"mTAda\",\n \"decimals\": 18\n },\n \"networkId\": 200101,\n \"rpc\": [\"https://milkomeda-c1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://200101.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-devnet-cardano-evm.c1.milkomeda.com\", \"wss://rpc-devnet-cardano-evm.c1.milkomeda.com\"],\n \"shortName\": \"milkTAda\",\n \"slug\": \"milkomeda-c1-testnet\",\n \"testnet\": true\n};\n\nvar c200202 = {\n \"chain\": \"milkTAlgo\",\n \"chainId\": 200202,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer-devnet-algorand-rollup.a1.milkomeda.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdoUtvHDybu5ppYBZT8BMRp6AqByVSoQs8nFwKbaS55jd\",\n \"width\": 367,\n \"height\": 367,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://milkomeda.com\",\n \"name\": \"Milkomeda A1 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"milkTAlgo\",\n \"symbol\": \"mTAlgo\",\n \"decimals\": 18\n },\n \"networkId\": 200202,\n \"rpc\": [\"https://milkomeda-a1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://200202.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-devnet-algorand-rollup.a1.milkomeda.com\"],\n \"shortName\": \"milkTAlgo\",\n \"slug\": \"milkomeda-a1-testnet\",\n \"testnet\": true\n};\n\nvar c200625 = {\n \"chain\": \"AKA\",\n \"chainId\": 200625,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://akroma.io\",\n \"name\": \"Akroma\",\n \"nativeCurrency\": {\n \"name\": \"Akroma Ether\",\n \"symbol\": \"AKA\",\n \"decimals\": 18\n },\n \"networkId\": 200625,\n \"rpc\": [\"https://akroma.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://200625.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://remote.akroma.io\"],\n \"shortName\": \"aka\",\n \"slip44\": 200625,\n \"slug\": \"akroma\",\n \"testnet\": false\n};\n\nvar c201018 = {\n \"chain\": \"Alaya\",\n \"chainId\": 201018,\n \"explorers\": [{\n \"name\": \"alaya explorer\",\n \"url\": \"https://scan.alaya.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmci6vPcWAwmq19j98yuQxjV6UPzHtThMdCAUDbKeb8oYu\",\n \"width\": 1140,\n \"height\": 1140,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.alaya.network/\",\n \"name\": \"Alaya Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ATP\",\n \"symbol\": \"atp\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://alaya.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://201018.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://openapi.alaya.network/rpc\", \"wss://openapi.alaya.network/ws\"],\n \"shortName\": \"alaya\",\n \"slug\": \"alaya\",\n \"testnet\": false\n};\n\nvar c201030 = {\n \"chain\": \"Alaya\",\n \"chainId\": 201030,\n \"explorers\": [{\n \"name\": \"alaya explorer\",\n \"url\": \"https://devnetscan.alaya.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.alaya.network/faucet/?id=f93426c0887f11eb83b900163e06151c\"],\n \"icon\": {\n \"url\": \"ipfs://Qmci6vPcWAwmq19j98yuQxjV6UPzHtThMdCAUDbKeb8oYu\",\n \"width\": 1140,\n \"height\": 1140,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.alaya.network/\",\n \"name\": \"Alaya Dev Testnet\",\n \"nativeCurrency\": {\n \"name\": \"ATP\",\n \"symbol\": \"atp\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://alaya-dev-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://201030.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnetopenapi.alaya.network/rpc\", \"wss://devnetopenapi.alaya.network/ws\"],\n \"shortName\": \"alayadev\",\n \"slug\": \"alaya-dev-testnet\",\n \"testnet\": true\n};\n\nvar c201804 = {\n \"chain\": \"MYTH\",\n \"chainId\": 201804,\n \"explorers\": [{\n \"name\": \"Mythical Chain Explorer\",\n \"url\": \"https://explorer.mythicalgames.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreihru6cccfblrjz5bv36znq2l3h67u6xj5ivtc4bj5l6gzofbgtnb4\",\n \"width\": 350,\n \"height\": 350,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreihru6cccfblrjz5bv36znq2l3h67u6xj5ivtc4bj5l6gzofbgtnb4\",\n \"width\": 350,\n \"height\": 350,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://mythicalgames.com/\",\n \"name\": \"Mythical Chain\",\n \"nativeCurrency\": {\n \"name\": \"Mythos\",\n \"symbol\": \"MYTH\",\n \"decimals\": 18\n },\n \"networkId\": 201804,\n \"rpc\": [\"https://mythical-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://201804.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://chain-rpc.mythicalgames.com\"],\n \"shortName\": \"myth\",\n \"slug\": \"mythical-chain\",\n \"testnet\": false\n};\n\nvar c202020 = {\n \"chain\": \"tDSC\",\n \"chainId\": 202020,\n \"explorers\": [{\n \"name\": \"DSC Explorer Testnet\",\n \"url\": \"https://testnet.explorer.decimalchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSgzwKnJJjys3Uq2aVVdwJ3NffLj3CXMVCph9uByTBegc\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmSgzwKnJJjys3Uq2aVVdwJ3NffLj3CXMVCph9uByTBegc\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://decimalchain.com\",\n \"name\": \"Decimal Smart Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Decimal\",\n \"symbol\": \"tDEL\",\n \"decimals\": 18\n },\n \"networkId\": 202020,\n \"rpc\": [\"https://decimal-smart-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://202020.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-val.decimalchain.com/web3/\"],\n \"shortName\": \"tDSC\",\n \"slug\": \"decimal-smart-chain-testnet\",\n \"testnet\": true\n};\n\nvar c202212 = {\n \"chain\": \"X1\",\n \"chainId\": 202212,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.x1-devnet.xen.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.xen.network/x1/\",\n \"name\": \"X1 Devnet\",\n \"nativeCurrency\": {\n \"name\": \"XN\",\n \"symbol\": \"XN\",\n \"decimals\": 18\n },\n \"networkId\": 202212,\n \"rpc\": [\"https://x1-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://202212.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://x1-devnet.xen.network\"],\n \"shortName\": \"x1-devnet\",\n \"slug\": \"x1-devnet\",\n \"testnet\": false\n};\n\nvar c202624 = {\n \"chain\": \"ETH\",\n \"chainId\": 202624,\n \"explorers\": [{\n \"name\": \"Jellie Blockchain Explorer\",\n \"url\": \"https://jellie.twala.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmTXJVhVKvVC7DQEnGKXvydvwpvVaUEBJrMHvsCr4nr1sK\",\n \"width\": 1326,\n \"height\": 1265,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTXJVhVKvVC7DQEnGKXvydvwpvVaUEBJrMHvsCr4nr1sK\",\n \"width\": 1326,\n \"height\": 1265,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://twala.io/\",\n \"name\": \"Jellie\",\n \"nativeCurrency\": {\n \"name\": \"Twala Coin\",\n \"symbol\": \"TWL\",\n \"decimals\": 18\n },\n \"networkId\": 202624,\n \"rpc\": [\"https://jellie.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://202624.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jellie-rpc.twala.io/\", \"wss://jellie-rpc-wss.twala.io/\"],\n \"shortName\": \"twl-jellie\",\n \"slug\": \"jellie\",\n \"testnet\": true,\n \"title\": \"Twala Testnet Jellie\"\n};\n\nvar c204005 = {\n \"chain\": \"X1\",\n \"chainId\": 204005,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.x1-testnet.xen.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://docs.xen.network/go-x1/\",\n \"name\": \"X1 Network\",\n \"nativeCurrency\": {\n \"name\": \"XN\",\n \"symbol\": \"XN\",\n \"decimals\": 18\n },\n \"networkId\": 204005,\n \"rpc\": [\"https://x1-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://204005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://x1-testnet.xen.network\"],\n \"shortName\": \"x1-testnet\",\n \"slug\": \"x1-network\",\n \"testnet\": true\n};\n\nvar c210425 = {\n \"chain\": \"PlatON\",\n \"chainId\": 210425,\n \"explorers\": [{\n \"name\": \"PlatON explorer\",\n \"url\": \"https://scan.platon.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmT7PSXBiVBma6E15hNkivmstqLu3JSnG1jXN5pTmcCGRC\",\n \"width\": 180,\n \"height\": 180,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.platon.network\",\n \"name\": \"PlatON Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"LAT\",\n \"symbol\": \"lat\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://platon.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://210425.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://openapi2.platon.network/rpc\", \"wss://openapi2.platon.network/ws\"],\n \"shortName\": \"platon\",\n \"slug\": \"platon\",\n \"testnet\": false\n};\n\nvar c220315 = {\n \"chain\": \"MAS\",\n \"chainId\": 220315,\n \"explorers\": [{\n \"name\": \"explorer masnet\",\n \"url\": \"https://explorer.masnet.ai\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmZ9njQhhKkpJKGnoYy6XTuDtk5CYiDFUd8atqWthqUT3Q\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://masterbank.org\",\n \"name\": \"Mas Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Master Bank\",\n \"symbol\": \"MAS\",\n \"decimals\": 18\n },\n \"networkId\": 220315,\n \"rpc\": [\"https://mas.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://220315.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://node.masnet.ai:8545\"],\n \"shortName\": \"mas\",\n \"slug\": \"mas\",\n \"testnet\": false\n};\n\nvar c221230 = {\n \"chain\": \"REAP\",\n \"chainId\": 221230,\n \"explorers\": [{\n \"name\": \"Reapchain Dashboard\",\n \"url\": \"https://dashboard.reapchain.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmevQ8jmDWHmdnUQg6BpoMwVB3NhpzS75adbMnKL78Ls2h\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmevQ8jmDWHmdnUQg6BpoMwVB3NhpzS75adbMnKL78Ls2h\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://reapchain.com\",\n \"name\": \"Reapchain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Reap\",\n \"symbol\": \"REAP\",\n \"decimals\": 18\n },\n \"networkId\": 221230,\n \"rpc\": [\"https://reapchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://221230.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://eth.reapchain.org\"],\n \"shortName\": \"reap\",\n \"slug\": \"reapchain\",\n \"testnet\": false\n};\n\nvar c221231 = {\n \"chain\": \"REAP\",\n \"chainId\": 221231,\n \"explorers\": [{\n \"name\": \"Reapchain Testnet Dashboard\",\n \"url\": \"https://test-dashboard.reapchain.org\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmevQ8jmDWHmdnUQg6BpoMwVB3NhpzS75adbMnKL78Ls2h\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"http://faucet.reapchain.com\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmevQ8jmDWHmdnUQg6BpoMwVB3NhpzS75adbMnKL78Ls2h\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://reapchain.com\",\n \"name\": \"Reapchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"test-Reap\",\n \"symbol\": \"tREAP\",\n \"decimals\": 18\n },\n \"networkId\": 221231,\n \"rpc\": [\"https://reapchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://221231.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test-eth.reapchain.org\"],\n \"shortName\": \"reap-testnet\",\n \"slug\": \"reapchain-testnet\",\n \"testnet\": true\n};\n\nvar c224168 = {\n \"chain\": \"Taf ECO Chain\",\n \"chainId\": 224168,\n \"explorers\": [{\n \"name\": \"Taf ECO Chain Mainnet\",\n \"url\": \"https://ecoscan.tafchain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreigpxhu7glccsislhjqpl5fnsfmj2io4cy33blhky642uiuyojossy\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.tafchain.com\",\n \"name\": \"Taf ECO Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Taf ECO Chain Mainnet\",\n \"symbol\": \"TAFECO\",\n \"decimals\": 18\n },\n \"networkId\": 224168,\n \"rpc\": [\"https://taf-eco-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://224168.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.tafchain.com/v1\"],\n \"shortName\": \"TAFECO\",\n \"slug\": \"taf-eco-chain\",\n \"testnet\": false\n};\n\nvar c230315 = {\n \"chain\": \"HashKey\",\n \"chainId\": 230315,\n \"explorers\": [{\n \"name\": \"HashKey Chain Testnet Explorer\",\n \"url\": \"https://testnet.hashkeyscan.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://testnet.hashkeychain/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmNU11AqYB2htrrSyBSP9ct7bPtuZTP7Hrz21PrEcB9nYE\",\n \"width\": 1440,\n \"height\": 448,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.hashkey.com\",\n \"name\": \"HashKey Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"HashKey Token\",\n \"symbol\": \"tHSK\",\n \"decimals\": 18\n },\n \"networkId\": 230315,\n \"rpc\": [\"https://hashkey-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://230315.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.hashkeychain/rpc\"],\n \"shortName\": \"hsktest\",\n \"slug\": \"hashkey-chain-testnet\",\n \"testnet\": true\n};\n\nvar c234666 = {\n \"chain\": \"tHYM\",\n \"chainId\": 234666,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://haymoswap.web.app/\",\n \"name\": \"Haymo Testnet\",\n \"nativeCurrency\": {\n \"name\": \"HAYMO\",\n \"symbol\": \"HYM\",\n \"decimals\": 18\n },\n \"networkId\": 234666,\n \"rpc\": [\"https://haymo-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://234666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet1.haymo.network\"],\n \"shortName\": \"hym\",\n \"slug\": \"haymo-testnet\",\n \"testnet\": true\n};\n\nvar c246529 = {\n \"chain\": \"ARTIS\",\n \"chainId\": 246529,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://artis.eco\",\n \"name\": \"ARTIS sigma1\",\n \"nativeCurrency\": {\n \"name\": \"ARTIS sigma1 Ether\",\n \"symbol\": \"ATS\",\n \"decimals\": 18\n },\n \"networkId\": 246529,\n \"rpc\": [\"https://artis-sigma1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://246529.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.sigma1.artis.network\"],\n \"shortName\": \"ats\",\n \"slip44\": 246529,\n \"slug\": \"artis-sigma1\",\n \"testnet\": false\n};\n\nvar c246785 = {\n \"chain\": \"ARTIS\",\n \"chainId\": 246785,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://artis.network\",\n \"name\": \"ARTIS Testnet tau1\",\n \"nativeCurrency\": {\n \"name\": \"ARTIS tau1 Ether\",\n \"symbol\": \"tATS\",\n \"decimals\": 18\n },\n \"networkId\": 246785,\n \"rpc\": [\"https://artis-testnet-tau1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://246785.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.tau1.artis.network\"],\n \"shortName\": \"atstau\",\n \"slug\": \"artis-testnet-tau1\",\n \"testnet\": true\n};\n\nvar c247253 = {\n \"chain\": \"Saakuru\",\n \"chainId\": 247253,\n \"explorers\": [{\n \"name\": \"saakuru-explorer-testnet\",\n \"url\": \"https://explorer-testnet.saakuru.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmduEdtFobPpZWSc45MU6RKxZfTEzLux2z8ikHFhT8usqv\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://saakuru.network\",\n \"name\": \"Saakuru Testnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 247253,\n \"rpc\": [\"https://saakuru-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://247253.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.saakuru.network\"],\n \"shortName\": \"saakuru-testnet\",\n \"slug\": \"saakuru-testnet\",\n \"testnet\": true\n};\n\nvar c256256 = {\n \"chain\": \"CMP\",\n \"chainId\": 256256,\n \"explorers\": [{\n \"name\": \"Mainnet Scan\",\n \"url\": \"https://mainnet.scan.caduceus.foundation\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://caduceus.foundation/\",\n \"name\": \"CMP-Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Caduceus Token\",\n \"symbol\": \"CMP\",\n \"decimals\": 18\n },\n \"networkId\": 256256,\n \"rpc\": [\"https://cmp.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://256256.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.block.caduceus.foundation\", \"wss://mainnet.block.caduceus.foundation\"],\n \"shortName\": \"cmp-mainnet\",\n \"slug\": \"cmp\",\n \"testnet\": false\n};\n\nvar c266256 = {\n \"chain\": \"GearZero\",\n \"chainId\": 266256,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://token.gearzero.ca/testnet\",\n \"name\": \"Gear Zero Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Gear Zero Network Native Token\",\n \"symbol\": \"GZN\",\n \"decimals\": 18\n },\n \"networkId\": 266256,\n \"rpc\": [\"https://gear-zero-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://266256.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://gzn-test.linksme.info\"],\n \"shortName\": \"gz-testnet\",\n \"slip44\": 266256,\n \"slug\": \"gear-zero-network-testnet\",\n \"testnet\": true\n};\n\nvar c271271 = {\n \"chain\": \"EGON\",\n \"chainId\": 271271,\n \"explorers\": [{\n \"name\": \"EgonCoin Testnet\",\n \"url\": \"https://testnet.egonscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.egonscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmNZiMmzMQYjyGtNSghtzLg4UooYhDgMQsa677DAP5KsBg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://egonscan.com\",\n \"name\": \"EgonCoin Testnet\",\n \"nativeCurrency\": {\n \"name\": \"EgonCoin\",\n \"symbol\": \"EGON\",\n \"decimals\": 18\n },\n \"networkId\": 271271,\n \"rpc\": [\"https://egoncoin-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://271271.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpctest.egonscan.com\"],\n \"shortName\": \"EGONt\",\n \"slug\": \"egoncoin-testnet\",\n \"testnet\": true\n};\n\nvar c281121 = {\n \"chain\": \"SoChain\",\n \"chainId\": 281121,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://digitalnext.business/SocialSmartChain\",\n \"name\": \"Social Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SoChain\",\n \"symbol\": \"$OC\",\n \"decimals\": 18\n },\n \"networkId\": 281121,\n \"rpc\": [\"https://social-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://281121.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://socialsmartchain.digitalnext.business\"],\n \"shortName\": \"SoChain\",\n \"slug\": \"social-smart-chain\",\n \"testnet\": false\n};\n\nvar c314159 = {\n \"chain\": \"FIL\",\n \"chainId\": 314159,\n \"explorers\": [{\n \"name\": \"Filscan - Calibration\",\n \"url\": \"https://calibration.filscan.io\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Filscout - Calibration\",\n \"url\": \"https://calibration.filscout.com/en\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Filfox - Calibration\",\n \"url\": \"https://calibration.filfox.info\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Glif Explorer - Calibration\",\n \"url\": \"https://explorer.glif.io/?network=calibration\",\n \"standard\": \"none\"\n }, {\n \"name\": \"Beryx\",\n \"url\": \"https://beryx.zondax.ch\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.calibration.fildev.network/\"],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Calibration testnet\",\n \"nativeCurrency\": {\n \"name\": \"testnet filecoin\",\n \"symbol\": \"tFIL\",\n \"decimals\": 18\n },\n \"networkId\": 314159,\n \"rpc\": [\"https://filecoin-calibration-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://314159.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.calibration.node.glif.io/rpc/v1\", \"https://rpc.ankr.com/filecoin_testnet\", \"https://filecoin-calibration.chainstacklabs.com/rpc/v1\", \"https://filecoin-calibration.chainup.net/rpc/v1\", \"https://calibration.filfox.info/rpc/v1\"],\n \"shortName\": \"filecoin-calibration\",\n \"slip44\": 1,\n \"slug\": \"filecoin-calibration-testnet\",\n \"testnet\": true\n};\n\nvar c330844 = {\n \"chain\": \"TSC\",\n \"chainId\": 330844,\n \"explorers\": [{\n \"name\": \"TTcoin Smart Chain Explorer\",\n \"url\": \"https://tscscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmS7ipvvyZ16weG1DM7AZbi1v9ixYwU2FjP25Jj5jkLiuf\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.tscscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmS7ipvvyZ16weG1DM7AZbi1v9ixYwU2FjP25Jj5jkLiuf\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ttcoin.info/\",\n \"name\": \"TTcoin Smart Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"TTcoin\",\n \"symbol\": \"TC\",\n \"decimals\": 18\n },\n \"networkId\": 330844,\n \"rpc\": [\"https://ttcoin-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://330844.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.tscscan.com\"],\n \"shortName\": \"tc\",\n \"slug\": \"ttcoin-smart-chain\",\n \"testnet\": false\n};\n\nvar c331769 = {\n \"chain\": \"POPTestnet\",\n \"chainId\": 331769,\n \"explorers\": [{\n \"name\": \"ProofOfPepe Explorer\",\n \"url\": \"https://pepescan.app/\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmP8rYvcc7aJB3c2YZxjxaySvHapHnoK8MnxuSuDT4PtF2\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"name\": \"ProofOfPepe Testnet\",\n \"nativeCurrency\": {\n \"name\": \"POP\",\n \"symbol\": \"POP\",\n \"decimals\": 18\n },\n \"networkId\": 331769,\n \"redFlags\": [],\n \"rpc\": [\"https://proofofpepe-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://331769.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet01.proofofpepe.tech\"],\n \"shortName\": \"POPTestnet\",\n \"slug\": \"proofofpepe-testnet\",\n \"testnet\": true\n};\n\nvar c331771 = {\n \"chain\": \"POP\",\n \"chainId\": 331771,\n \"explorers\": [{\n \"name\": \"Pepescan\",\n \"url\": \"https://pepescan.app\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmP8rYvcc7aJB3c2YZxjxaySvHapHnoK8MnxuSuDT4PtF2\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"name\": \"POP Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Pepe\",\n \"symbol\": \"PEPE\",\n \"decimals\": 18\n },\n \"networkId\": 331771,\n \"redFlags\": [],\n \"rpc\": [\"https://pop.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://331771.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc00.proofofpepe.tech\", \"https://rpc01.proofofpepe.tech\", \"https://rpc02.proofofpepe.tech\"],\n \"shortName\": \"POP\",\n \"slug\": \"pop\",\n \"testnet\": false\n};\n\nvar c333331 = {\n \"chain\": \"AVST\",\n \"chainId\": 333331,\n \"explorers\": [{\n \"name\": \"avescan\",\n \"url\": \"https://testnet.avescoin.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeKQVv2QneHaaggw2NfpZ7DGMdjVhPywTdse5RzCs4oGn\",\n \"width\": 232,\n \"height\": 232,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmeKQVv2QneHaaggw2NfpZ7DGMdjVhPywTdse5RzCs4oGn\",\n \"width\": 232,\n \"height\": 232,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ethereum.org\",\n \"name\": \"Aves Testnet\",\n \"nativeCurrency\": {\n \"name\": \"AvesT\",\n \"symbol\": \"AVST\",\n \"decimals\": 18\n },\n \"networkId\": 333331,\n \"rpc\": [\"https://aves-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333331.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test.rpc.avescoin.io\"],\n \"shortName\": \"avst\",\n \"slug\": \"aves-testnet\",\n \"testnet\": true\n};\n\nvar c333333 = {\n \"chain\": \"N3-Test\",\n \"chainId\": 333333,\n \"explorers\": [{\n \"name\": \"Nativ3 Test Explorer\",\n \"url\": \"https://scantest.nativ3.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVzJDndPui6qBSeJWe5kMLA56C3KpVhqqqk9xvVKE1DGb\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nativ3.network\",\n \"name\": \"Nativ3 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"USNT\",\n \"symbol\": \"USNT\",\n \"decimals\": 18\n },\n \"networkId\": 333333,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-421613\",\n \"bridges\": [{\n \"url\": \"https://bridgetest.nativ3.network\"\n }]\n },\n \"rpc\": [\"https://nativ3-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333333.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpctest.nativ3.network\", \"wss://wstest.nativ3.network\"],\n \"shortName\": \"N3-Test\",\n \"slug\": \"nativ3-testnet\",\n \"testnet\": true\n};\n\nvar c333666 = {\n \"chain\": \"OONE Testnet\",\n \"chainId\": 333666,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet.oonescan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://apps-test.adigium.com/faucet\"],\n \"infoURL\": \"https://oonechain.com\",\n \"name\": \"Oone Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tOONE\",\n \"symbol\": \"tOONE\",\n \"decimals\": 18\n },\n \"networkId\": 333666,\n \"rpc\": [\"https://oone-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.oonechain.com\"],\n \"shortName\": \"oonetest\",\n \"slug\": \"oone-chain-testnet\",\n \"testnet\": true\n};\n\nvar c333777 = {\n \"chain\": \"OONE Devnet\",\n \"chainId\": 333777,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://dev.oonescan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://apps-test.adigium.com/faucet\"],\n \"infoURL\": \"https://oonechain.com\",\n \"name\": \"Oone Chain Devnet\",\n \"nativeCurrency\": {\n \"name\": \"tOONE\",\n \"symbol\": \"tOONE\",\n \"decimals\": 18\n },\n \"networkId\": 333777,\n \"rpc\": [\"https://oone-chain-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.dev.oonechain.com\"],\n \"shortName\": \"oonedev\",\n \"slug\": \"oone-chain-devnet\",\n \"testnet\": true\n};\n\nvar c333888 = {\n \"chain\": \"Sparta\",\n \"chainId\": 333888,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.polis.tech\"],\n \"icon\": {\n \"url\": \"ipfs://QmagWrtyApex28H2QeXcs3jJ2F7p2K7eESz3cDbHdQ3pjG\",\n \"width\": 1050,\n \"height\": 1050,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polis.tech\",\n \"name\": \"Polis Testnet\",\n \"nativeCurrency\": {\n \"name\": \"tPolis\",\n \"symbol\": \"tPOLIS\",\n \"decimals\": 18\n },\n \"networkId\": 333888,\n \"rpc\": [\"https://polis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sparta-rpc.polis.tech\"],\n \"shortName\": \"sparta\",\n \"slug\": \"polis-testnet\",\n \"testnet\": true\n};\n\nvar c333999 = {\n \"chain\": \"Olympus\",\n \"chainId\": 333999,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.polis.tech\"],\n \"icon\": {\n \"url\": \"ipfs://QmagWrtyApex28H2QeXcs3jJ2F7p2K7eESz3cDbHdQ3pjG\",\n \"width\": 1050,\n \"height\": 1050,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://polis.tech\",\n \"name\": \"Polis Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Polis\",\n \"symbol\": \"POLIS\",\n \"decimals\": 18\n },\n \"networkId\": 333999,\n \"rpc\": [\"https://polis.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.polis.tech\"],\n \"shortName\": \"olympus\",\n \"slug\": \"polis\",\n \"testnet\": false\n};\n\nvar c355113 = {\n \"chain\": \"BFT\",\n \"chainId\": 355113,\n \"explorers\": [{\n \"name\": \"Bitfinity Block Explorer\",\n \"url\": \"https://explorer.bitfinity.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiczbhnoc5wpjikskmehexmg3xmqr4fchrny64db4wmk3lrygqik5e\",\n \"width\": 796,\n \"height\": 129,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://bitfinity.network/faucet\"],\n \"infoURL\": \"https://bitfinity.network\",\n \"name\": \"Bitfinity Network Testnet\",\n \"nativeCurrency\": {\n \"name\": \"BITFINITY\",\n \"symbol\": \"BFT\",\n \"decimals\": 18\n },\n \"networkId\": 355113,\n \"rpc\": [\"https://bitfinity-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://355113.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.bitfinity.network\"],\n \"shortName\": \"Bitfinity\",\n \"slug\": \"bitfinity-network-testnet\",\n \"testnet\": true\n};\n\nvar c363636 = {\n \"chain\": \"DS2\",\n \"chainId\": 363636,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRiAUu3xV5uiX6Nk1iXD5w6qjki5ugGFETRVavzJ2h5QF\",\n \"width\": 370,\n \"height\": 320,\n \"format\": \"png\"\n },\n \"name\": \"Digit Soul Smart Chain 2\",\n \"nativeCurrency\": {\n \"name\": \"Digit Coin\",\n \"symbol\": \"DGC\",\n \"decimals\": 18\n },\n \"networkId\": 363636,\n \"rpc\": [\"https://digit-soul-smart-chain-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://363636.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://dgs-rpc.digitsoul.co.th\"],\n \"shortName\": \"DS2\",\n \"slug\": \"digit-soul-smart-chain-2\",\n \"testnet\": false\n};\n\nvar c373737 = {\n \"chain\": \"HAPchain\",\n \"chainId\": 373737,\n \"explorers\": [{\n \"name\": \"HAP EVM Explorer (Blockscout)\",\n \"url\": \"https://blockscout-test.hap.land\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmQ4V9JC25yUrYk2kFJwmKguSsZBQvtGcg6q9zkDV8mkJW\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQ4V9JC25yUrYk2kFJwmKguSsZBQvtGcg6q9zkDV8mkJW\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hap.land\",\n \"name\": \"HAPchain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"HAP\",\n \"symbol\": \"HAP\",\n \"decimals\": 18\n },\n \"networkId\": 373737,\n \"rpc\": [\"https://hapchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://373737.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc-test.hap.land\"],\n \"shortName\": \"hap-testnet\",\n \"slug\": \"hapchain-testnet\",\n \"testnet\": true\n};\n\nvar c381931 = {\n \"chain\": \"Metal\",\n \"chainId\": 381931,\n \"explorers\": [{\n \"name\": \"metalscan\",\n \"url\": \"https://metalscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.metalblockchain.org/\",\n \"name\": \"Metal C-Chain\",\n \"nativeCurrency\": {\n \"name\": \"Metal\",\n \"symbol\": \"METAL\",\n \"decimals\": 18\n },\n \"networkId\": 381931,\n \"rpc\": [\"https://metal-c-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://381931.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.metalblockchain.org/ext/bc/C/rpc\"],\n \"shortName\": \"metal\",\n \"slip44\": 9005,\n \"slug\": \"metal-c-chain\",\n \"testnet\": false\n};\n\nvar c381932 = {\n \"chain\": \"Metal\",\n \"chainId\": 381932,\n \"explorers\": [{\n \"name\": \"metalscan\",\n \"url\": \"https://tahoe.metalscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.metalblockchain.org/\",\n \"name\": \"Metal Tahoe C-Chain\",\n \"nativeCurrency\": {\n \"name\": \"Metal\",\n \"symbol\": \"METAL\",\n \"decimals\": 18\n },\n \"networkId\": 381932,\n \"rpc\": [\"https://metal-tahoe-c-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://381932.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://tahoe.metalblockchain.org/ext/bc/C/rpc\"],\n \"shortName\": \"Tahoe\",\n \"slip44\": 9005,\n \"slug\": \"metal-tahoe-c-chain\",\n \"testnet\": false\n};\n\nvar c404040 = {\n \"chain\": \"TPBX\",\n \"chainId\": 404040,\n \"explorers\": [{\n \"name\": \"Tipboxcoin\",\n \"url\": \"https://tipboxcoin.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.tipboxcoin.net\"],\n \"icon\": {\n \"url\": \"ipfs://QmbiaHnR3fVVofZ7Xq2GYZxwHkLEy3Fh5qDtqnqXD6ACAh\",\n \"width\": 192,\n \"height\": 192,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://tipboxcoin.net\",\n \"name\": \"Tipboxcoin Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Tipboxcoin\",\n \"symbol\": \"TPBX\",\n \"decimals\": 18\n },\n \"networkId\": 404040,\n \"rpc\": [\"https://tipboxcoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://404040.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.tipboxcoin.net\"],\n \"shortName\": \"TPBXm\",\n \"slug\": \"tipboxcoin\",\n \"testnet\": false\n};\n\nvar c420420 = {\n \"chain\": \"kek\",\n \"chainId\": 420420,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://mainnet-explorer.kekchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNzwHAmaaQyuvKudrzGkrTT2GMshcmCmJ9FH8gG2mNJtM\",\n \"width\": 401,\n \"height\": 401,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNzwHAmaaQyuvKudrzGkrTT2GMshcmCmJ9FH8gG2mNJtM\",\n \"width\": 401,\n \"height\": 401,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://kekchain.com\",\n \"name\": \"Kekchain\",\n \"nativeCurrency\": {\n \"name\": \"KEK\",\n \"symbol\": \"KEK\",\n \"decimals\": 18\n },\n \"networkId\": 103090,\n \"rpc\": [\"https://kekchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://420420.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.kekchain.com\"],\n \"shortName\": \"KEK\",\n \"slug\": \"kekchain\",\n \"testnet\": false\n};\n\nvar c420666 = {\n \"chain\": \"kek\",\n \"chainId\": 420666,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet-explorer.kekchain.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmNzwHAmaaQyuvKudrzGkrTT2GMshcmCmJ9FH8gG2mNJtM\",\n \"width\": 401,\n \"height\": 401,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmNzwHAmaaQyuvKudrzGkrTT2GMshcmCmJ9FH8gG2mNJtM\",\n \"width\": 401,\n \"height\": 401,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://kekchain.com\",\n \"name\": \"Kekchain (kektest)\",\n \"nativeCurrency\": {\n \"name\": \"tKEK\",\n \"symbol\": \"tKEK\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://kekchain-kektest.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://420666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.kekchain.com\"],\n \"shortName\": \"tKEK\",\n \"slug\": \"kekchain-kektest\",\n \"testnet\": true\n};\n\nvar c420692 = {\n \"chain\": \"ALT\",\n \"chainId\": 420692,\n \"explorers\": [{\n \"name\": \"Alterium L2 Testnet Explorer\",\n \"url\": \"https://l2-testnet.altscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreid3v7ow4c4t3ljya6aouiwvqbtssb2lzmkwt2eghryk234g7yynrq\",\n \"width\": 756,\n \"height\": 756,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://alteriumprotocol.org\",\n \"name\": \"Alterium L2 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Alterium ETH\",\n \"symbol\": \"AltETH\",\n \"decimals\": 18\n },\n \"networkId\": 420692,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://testnet-bridge.alteriumprotocol.org\"\n }]\n },\n \"rpc\": [\"https://alterium-l2-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://420692.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://l2-testnet-rpc.altscan.org\"],\n \"shortName\": \"alterium\",\n \"slug\": \"alterium-l2-testnet\",\n \"testnet\": true\n};\n\nvar c421611 = {\n \"chain\": \"ETH\",\n \"chainId\": 421611,\n \"explorers\": [{\n \"name\": \"arbiscan-testnet\",\n \"url\": \"https://testnet.arbiscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"arbitrum-rinkeby\",\n \"url\": \"https://rinkeby-explorer.arbitrum.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=421611&address=${ADDRESS}\"],\n \"infoURL\": \"https://arbitrum.io\",\n \"name\": \"Arbitrum Rinkeby\",\n \"nativeCurrency\": {\n \"name\": \"Arbitrum Rinkeby Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 421611,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-4\",\n \"bridges\": [{\n \"url\": \"https://bridge.arbitrum.io\"\n }]\n },\n \"rpc\": [\"https://arbitrum-rinkeby.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://421611.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rinkeby.arbitrum.io/rpc\"],\n \"shortName\": \"arb-rinkeby\",\n \"slug\": \"arbitrum-rinkeby\",\n \"testnet\": true,\n \"title\": \"Arbitrum Testnet Rinkeby\"\n};\n\nvar c421613 = {\n \"chain\": \"ETH\",\n \"chainId\": 421613,\n \"explorers\": [{\n \"name\": \"Arbitrum Goerli Arbiscan\",\n \"url\": \"https://goerli.arbiscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/arbitrum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://arbitrum.io/\",\n \"name\": \"Arbitrum Goerli\",\n \"nativeCurrency\": {\n \"name\": \"Arbitrum Goerli Ether\",\n \"symbol\": \"AGOR\",\n \"decimals\": 18\n },\n \"networkId\": 421613,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": [{\n \"url\": \"https://bridge.arbitrum.io/\"\n }]\n },\n \"redFlags\": [],\n \"rpc\": [\"https://arbitrum-goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://421613.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://goerli-rollup.arbitrum.io/rpc\", \"https://arbitrum-goerli.publicnode.com\", \"wss://arbitrum-goerli.publicnode.com\"],\n \"shortName\": \"arb-goerli\",\n \"slug\": \"arbitrum-goerli\",\n \"testnet\": true,\n \"title\": \"Arbitrum Goerli Rollup Testnet\"\n};\n\nvar c421614 = {\n \"chain\": \"ETH\",\n \"chainId\": 421614,\n \"explorers\": [{\n \"name\": \"Arbitrum Sepolia Rollup Testnet Explorer\",\n \"url\": \"https://sepolia-explorer.arbitrum.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://arbitrum.io\",\n \"name\": \"Arbitrum Sepolia\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 421614,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://bridge.arbitrum.io\"\n }]\n },\n \"rpc\": [\"https://arbitrum-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://421614.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia-rollup.arbitrum.io/rpc\"],\n \"shortName\": \"arb-sep\",\n \"slug\": \"arbitrum-sepolia\",\n \"testnet\": true,\n \"title\": \"Arbitrum Sepolia Rollup Testnet\"\n};\n\nvar c424242 = {\n \"chain\": \"FTN\",\n \"chainId\": 424242,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://testnet.ftnscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"infoURL\": \"https://fastex.com\",\n \"name\": \"Fastex Chain testnet\",\n \"nativeCurrency\": {\n \"name\": \"FTN\",\n \"symbol\": \"FTN\",\n \"decimals\": 18\n },\n \"networkId\": 424242,\n \"rpc\": [\"https://fastex-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://424242.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.fastexchain.com\"],\n \"shortName\": \"fastexTestnet\",\n \"slug\": \"fastex-chain-testnet\",\n \"testnet\": true,\n \"title\": \"Fastex Chain testnet\"\n};\n\nvar c431140 = {\n \"chain\": \"Unified\",\n \"chainId\": 431140,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVMBTZVPawyLBD2B5VbG68dfWLfZ1CnB8V59xduBe2kwh\",\n \"width\": 84,\n \"height\": 84,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.markr.io/\",\n \"name\": \"Markr Go\",\n \"nativeCurrency\": {\n \"name\": \"Avalanche\",\n \"symbol\": \"AVAX\",\n \"decimals\": 18\n },\n \"networkId\": 431140,\n \"rpc\": [\"https://markr-go.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://431140.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.markr.io/ext/\"],\n \"shortName\": \"markr-go\",\n \"slug\": \"markr-go\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c432201 = {\n \"chain\": \"DEXALOT\",\n \"chainId\": 432201,\n \"explorers\": [{\n \"name\": \"Avalanche Subnet Testnet Explorer\",\n \"url\": \"https://subnets-test.avax.network/dexalot\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.avax.network/?subnet=dexalot\"],\n \"icon\": {\n \"url\": \"ipfs://QmfVxdrWjtUKiGzqFDzAxHH2FqwP2aRuZTGcYWdWg519Xy\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dexalot.com\",\n \"name\": \"Dexalot Subnet Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Dexalot\",\n \"symbol\": \"ALOT\",\n \"decimals\": 18\n },\n \"networkId\": 432201,\n \"rpc\": [\"https://dexalot-subnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://432201.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/dexalot/testnet/rpc\"],\n \"shortName\": \"dexalot-testnet\",\n \"slug\": \"dexalot-subnet-testnet\",\n \"testnet\": true\n};\n\nvar c432204 = {\n \"chain\": \"DEXALOT\",\n \"chainId\": 432204,\n \"explorers\": [{\n \"name\": \"Avalanche Subnet Explorer\",\n \"url\": \"https://subnets.avax.network/dexalot\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfVxdrWjtUKiGzqFDzAxHH2FqwP2aRuZTGcYWdWg519Xy\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dexalot.com\",\n \"name\": \"Dexalot Subnet\",\n \"nativeCurrency\": {\n \"name\": \"Dexalot\",\n \"symbol\": \"ALOT\",\n \"decimals\": 18\n },\n \"networkId\": 432204,\n \"rpc\": [\"https://dexalot-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://432204.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/dexalot/mainnet/rpc\"],\n \"shortName\": \"dexalot\",\n \"slug\": \"dexalot-subnet\",\n \"testnet\": false\n};\n\nvar c444900 = {\n \"chain\": \"WLK\",\n \"chainId\": 444900,\n \"explorers\": [{\n \"name\": \"weelink-testnet\",\n \"url\": \"https://weelink.cloud/#/blockView/overview\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.weelink.gw002.oneitfarm.com\"],\n \"infoURL\": \"https://weelink.cloud\",\n \"name\": \"Weelink Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Weelink Chain Token\",\n \"symbol\": \"tWLK\",\n \"decimals\": 18\n },\n \"networkId\": 444900,\n \"rpc\": [\"https://weelink-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://444900.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://weelinknode1c.gw002.oneitfarm.com\"],\n \"shortName\": \"wlkt\",\n \"slug\": \"weelink-testnet\",\n \"testnet\": true\n};\n\nvar c471100 = {\n \"chain\": \"ETH\",\n \"chainId\": 471100,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://patex.io/\",\n \"name\": \"Patex Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 471100,\n \"rpc\": [\"https://patex-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://471100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://test-rpc.patex.io/\"],\n \"shortName\": \"psep\",\n \"slug\": \"patex-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c474142 = {\n \"chain\": \"OpenChain\",\n \"chainId\": 474142,\n \"explorers\": [{\n \"name\": \"SIDE SCAN\",\n \"url\": \"https://sidescan.luniverse.io/1641349324562974539\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.openchain.live\",\n \"name\": \"OpenChain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OpenCoin\",\n \"symbol\": \"OPC\",\n \"decimals\": 10\n },\n \"networkId\": 474142,\n \"rpc\": [\"https://openchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://474142.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://baas-rpc.luniverse.io:18545?lChainId=1641349324562974539\"],\n \"shortName\": \"oc\",\n \"slug\": \"openchain\",\n \"testnet\": false\n};\n\nvar c512512 = {\n \"chain\": \"CMP\",\n \"chainId\": 512512,\n \"explorers\": [{\n \"name\": \"Galaxy Scan\",\n \"url\": \"https://galaxy.scan.caduceus.foundation\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://dev.caduceus.foundation/testNetwork\"],\n \"infoURL\": \"https://caduceus.foundation/\",\n \"name\": \"CMP-Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Caduceus Testnet Token\",\n \"symbol\": \"CMP\",\n \"decimals\": 18\n },\n \"networkId\": 512512,\n \"rpc\": [\"https://cmp-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://512512.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://galaxy.block.caduceus.foundation\", \"wss://galaxy.block.caduceus.foundation\"],\n \"shortName\": \"cmp\",\n \"slug\": \"cmp-testnet\",\n \"testnet\": true\n};\n\nvar c513100 = {\n \"chain\": \"ETHF\",\n \"chainId\": 513100,\n \"explorers\": [{\n \"name\": \"etherfair\",\n \"url\": \"https://www.oklink.com/ethf\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://etherfair.org\",\n \"name\": \"ethereum Fair\",\n \"nativeCurrency\": {\n \"name\": \"EthereumFair\",\n \"symbol\": \"ETHF\",\n \"decimals\": 18\n },\n \"networkId\": 513100,\n \"rpc\": [\"https://ethereum-fair.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://513100.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.etherfair.org\"],\n \"shortName\": \"ethf\",\n \"slug\": \"ethereum-fair\",\n \"testnet\": false\n};\n\nvar c534351 = {\n \"chain\": \"ETH\",\n \"chainId\": 534351,\n \"explorers\": [{\n \"name\": \"Scroll Sepolia Etherscan\",\n \"url\": \"https://sepolia.scrollscan.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Scroll Sepolia Blockscout\",\n \"url\": \"https://sepolia-blockscout.scroll.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://scroll.io\",\n \"name\": \"Scroll Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 534351,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://sepolia.scroll.io/bridge\"\n }]\n },\n \"rpc\": [\"https://scroll-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://534351.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia-rpc.scroll.io\", \"https://rpc.ankr.com/scroll_sepolia_testnet\", \"https://scroll-sepolia.chainstacklabs.com\", \"https://scroll-testnet-public.unifra.io\"],\n \"shortName\": \"scr-sepolia\",\n \"slug\": \"scroll-sepolia-testnet\",\n \"status\": \"active\",\n \"testnet\": true\n};\n\nvar c534352 = {\n \"chain\": \"ETH\",\n \"chainId\": 534352,\n \"explorers\": [{\n \"name\": \"Scrollscan\",\n \"url\": \"https://scrollscan.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Blockscout\",\n \"url\": \"https://blockscout.scroll.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://scroll.io\",\n \"name\": \"Scroll\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 534352,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://scroll.io/bridge\"\n }]\n },\n \"rpc\": [\"https://scroll.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://534352.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.scroll.io\", \"https://rpc-scroll.icecreamswap.com\", \"https://rpc.ankr.com/scroll\", \"https://scroll-mainnet.chainstacklabs.com\"],\n \"shortName\": \"scr\",\n \"slug\": \"scroll\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c534353 = {\n \"chain\": \"ETH\",\n \"chainId\": 534353,\n \"explorers\": [{\n \"name\": \"Scroll Alpha Testnet Block Explorer\",\n \"url\": \"https://alpha-blockscout.scroll.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://scroll.io\",\n \"name\": \"Scroll Alpha Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 534353,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-5\",\n \"bridges\": []\n },\n \"rpc\": [\"https://scroll-alpha-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://534353.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://alpha-rpc.scroll.io/l2\"],\n \"shortName\": \"scr-alpha\",\n \"slug\": \"scroll-alpha-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c534354 = {\n \"chain\": \"ETH\",\n \"chainId\": 534354,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://scroll.io\",\n \"name\": \"Scroll Pre-Alpha Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"TSETH\",\n \"decimals\": 18\n },\n \"networkId\": 534354,\n \"rpc\": [],\n \"shortName\": \"scr-prealpha\",\n \"slug\": \"scroll-pre-alpha-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c534849 = {\n \"chain\": \"Shinarium\",\n \"chainId\": 534849,\n \"explorers\": [{\n \"name\": \"shinascan\",\n \"url\": \"https://shinascan.shinarium.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.shinarium.org\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeiadbavrwcial76vs5ovhyykyaobteltuhliqcthdairbja4klwzhu\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://shinarium.org\",\n \"name\": \"Shinarium Beta\",\n \"nativeCurrency\": {\n \"name\": \"Shina Inu\",\n \"symbol\": \"SHI\",\n \"decimals\": 18\n },\n \"networkId\": 534849,\n \"rpc\": [\"https://shinarium-beta.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://534849.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.shinarium.org\"],\n \"shortName\": \"shi\",\n \"slug\": \"shinarium-beta\",\n \"testnet\": false\n};\n\nvar c535037 = {\n \"chain\": \"BESC\",\n \"chainId\": 535037,\n \"explorers\": [{\n \"name\": \"bescscan\",\n \"url\": \"https://Bescscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"name\": \"BeanEco SmartChain\",\n \"nativeCurrency\": {\n \"name\": \"BeanEco SmartChain\",\n \"symbol\": \"BESC\",\n \"decimals\": 18\n },\n \"networkId\": 535037,\n \"rpc\": [\"https://beaneco-smartchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://535037.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.bescscan.io\"],\n \"shortName\": \"BESC\",\n \"slug\": \"beaneco-smartchain\",\n \"testnet\": false,\n \"title\": \"BESC Mainnet\"\n};\n\nvar c622277 = {\n \"chain\": \"HYP\",\n \"chainId\": 622277,\n \"explorers\": [{\n \"name\": \"hypra\",\n \"url\": \"https://explorer.hypra.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafkreiawlhc2trzyxgnz24vowdymxme2m446uk4vmrplgxsdd74ecpfloq\",\n \"width\": 830,\n \"height\": 830,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.hypra.network\",\n \"name\": \"Hypra Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Hypra\",\n \"symbol\": \"HYP\",\n \"decimals\": 18\n },\n \"networkId\": 622277,\n \"rpc\": [\"https://hypra.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://622277.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.hypra.network\", \"https://rpc.rethereum.org\", \"https://rethereum.rpc.restratagem.com\", \"https://rpc.rthcentral.org\"],\n \"shortName\": \"hyp\",\n \"slug\": \"hypra\",\n \"testnet\": false\n};\n\nvar c641230 = {\n \"chain\": \"BRNKC\",\n \"chainId\": 641230,\n \"explorers\": [{\n \"name\": \"brnkscan\",\n \"url\": \"https://brnkscan.bearnetwork.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQqhH28QpUrreoRw5Gj8YShzdHxxVGMjfVrx3TqJNLSLv\",\n \"width\": 1067,\n \"height\": 1067,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bearnetwork.net\",\n \"name\": \"Bear Network Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Bear Network Chain Native Token\",\n \"symbol\": \"BRNKC\",\n \"decimals\": 18\n },\n \"networkId\": 641230,\n \"rpc\": [\"https://bear-network-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://641230.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://brnkc-mainnet.bearnetwork.net\", \"https://brnkc-mainnet1.bearnetwork.net\"],\n \"shortName\": \"BRNKC\",\n \"slug\": \"bear-network-chain\",\n \"testnet\": false\n};\n\nvar c651940 = {\n \"chain\": \"ALL\",\n \"chainId\": 651940,\n \"explorers\": [{\n \"name\": \"Alltra SmartChain Explorer\",\n \"url\": \"https://alltra.global\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibqe2mgiqezi24sx272kunqt6pv7uzxhpkxuobvpbsptce3q6nn5i\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://alltra.world\",\n \"name\": \"ALL Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ALL\",\n \"symbol\": \"ALL\",\n \"decimals\": 18\n },\n \"networkId\": 651940,\n \"rpc\": [\"https://all.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://651940.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.alltra.global\"],\n \"shortName\": \"ALL\",\n \"slug\": \"all\",\n \"testnet\": false\n};\n\nvar c660868 = {\n \"chain\": \"OCASH\",\n \"chainId\": 660868,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://ipfs.io/ipfs/QmbwuoezvkfZBY9nrZ65n3iHGyhJG6yDRyhPjqE6k3uCiM\",\n \"width\": 350,\n \"height\": 350,\n \"format\": \"PNG\"\n },\n \"infoURL\": \"https://www.overline.network\",\n \"name\": \"Ocash testnet\",\n \"nativeCurrency\": {\n \"name\": \"OCASH\",\n \"symbol\": \"OCASH\",\n \"decimals\": 18\n },\n \"networkId\": 660868,\n \"redFlags\": [],\n \"rpc\": [],\n \"shortName\": \"ocash\",\n \"slug\": \"ocash-testnet\",\n \"testnet\": true\n};\n\nvar c666666 = {\n \"chain\": \"Vision-Vpioneer\",\n \"chainId\": 666666,\n \"explorers\": [],\n \"faucets\": [\"https://vpioneerfaucet.visionscan.org\"],\n \"infoURL\": \"https://visionscan.org\",\n \"name\": \"Vision - Vpioneer Test Chain\",\n \"nativeCurrency\": {\n \"name\": \"VS\",\n \"symbol\": \"VS\",\n \"decimals\": 18\n },\n \"networkId\": 666666,\n \"rpc\": [\"https://vision-vpioneer-test-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://666666.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://vpioneer.infragrid.v.network/ethereum/compatible\"],\n \"shortName\": \"vpioneer\",\n \"slip44\": 60,\n \"slug\": \"vision-vpioneer-test-chain\",\n \"testnet\": true\n};\n\nvar c666888 = {\n \"chain\": \"Hela\",\n \"chainId\": 666888,\n \"explorers\": [{\n \"name\": \"Hela Official Runtime Testnet Explorer\",\n \"url\": \"https://testnet-blockexplorer.helachain.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://testnet-faucet.helachain.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmQbUVcaxFwY8gqMq1Jeup4NEyivo12QYhbLvVRvgXRBFb\",\n \"width\": 719,\n \"height\": 216,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://helalabs.com\",\n \"name\": \"Hela Official Runtime Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Hela HLUSD\",\n \"symbol\": \"HLUSD\",\n \"decimals\": 18\n },\n \"networkId\": 666888,\n \"rpc\": [\"https://hela-official-runtime-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://666888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.helachain.com\"],\n \"shortName\": \"hela-testnet\",\n \"slug\": \"hela-official-runtime-testnet\",\n \"testnet\": true\n};\n\nvar c751230 = {\n \"chain\": \"BRNKCTEST\",\n \"chainId\": 751230,\n \"explorers\": [{\n \"name\": \"brnktestscan\",\n \"url\": \"https://brnktest-scan.bearnetwork.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.bearnetwork.net\"],\n \"icon\": {\n \"url\": \"ipfs://QmQqhH28QpUrreoRw5Gj8YShzdHxxVGMjfVrx3TqJNLSLv\",\n \"width\": 1067,\n \"height\": 1067,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://bearnetwork.net\",\n \"name\": \"Bear Network Chain Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Bear Network Chain Testnet Token\",\n \"symbol\": \"tBRNKC\",\n \"decimals\": 18\n },\n \"networkId\": 751230,\n \"rpc\": [\"https://bear-network-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://751230.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://brnkc-test.bearnetwork.net\"],\n \"shortName\": \"BRNKCTEST\",\n \"slug\": \"bear-network-chain-testnet\",\n \"testnet\": true\n};\n\nvar c761412 = {\n \"chain\": \"MiexsSmartchain\",\n \"chainId\": 761412,\n \"explorers\": [{\n \"name\": \"Miexs Smartchain Explorer\",\n \"url\": \"https://miexs.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreic6tcc6swh5kzljwqnswj6rlemcm7n6ra7xkgttwv5v3fv7ozj5zu\",\n \"width\": 1500,\n \"height\": 1500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://miexs.com\",\n \"name\": \"Miexs Smartchain\",\n \"nativeCurrency\": {\n \"name\": \"Miexs Coin\",\n \"symbol\": \"MIX\",\n \"decimals\": 18\n },\n \"networkId\": 761412,\n \"rpc\": [\"https://miexs-smartchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://761412.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.miexs.com\"],\n \"shortName\": \"Miexs\",\n \"slug\": \"miexs-smartchain\",\n \"testnet\": false\n};\n\nvar c776877 = {\n \"chain\": \"EVMCC\",\n \"chainId\": 776877,\n \"explorers\": [{\n \"name\": \"Tanssi Explorer\",\n \"url\": \"https://tanssi-evmexplorer.netlify.app/?rpcUrl=https://fraa-dancebox-3035-rpc.a.dancebox.tanssi.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.rmrk.app/\",\n \"name\": \"Modularium\",\n \"nativeCurrency\": {\n \"name\": \"Modularium\",\n \"symbol\": \"MDM\",\n \"decimals\": 18\n },\n \"networkId\": 776877,\n \"rpc\": [\"https://modularium.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://776877.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fraa-dancebox-3035-rpc.a.dancebox.tanssi.network\"],\n \"shortName\": \"mdlrm\",\n \"slug\": \"modularium\",\n \"testnet\": false\n};\n\nvar c800001 = {\n \"chain\": \"OCTA\",\n \"chainId\": 800001,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.octa.space\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVhezQHkqSZ5Tvtsw18giA1yBjV1URSsBQ7HenUh6p6oC\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://octa.space\",\n \"name\": \"OctaSpace\",\n \"nativeCurrency\": {\n \"name\": \"OctaSpace\",\n \"symbol\": \"OCTA\",\n \"decimals\": 18\n },\n \"networkId\": 800001,\n \"rpc\": [\"https://octaspace.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://800001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.octa.space\", \"wss://rpc.octa.space\"],\n \"shortName\": \"octa\",\n \"slug\": \"octaspace\",\n \"testnet\": false\n};\n\nvar c827431 = {\n \"chain\": \"CURVE\",\n \"chainId\": 827431,\n \"explorers\": [{\n \"name\": \"CURVE Mainnet\",\n \"url\": \"https://curvescan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTjV3TTR5aLb7fi7tjx8gcDvYtqBpusqhCSaznVxJ7NJg\",\n \"width\": 150,\n \"height\": 150,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://curvescan.io\",\n \"name\": \"CURVE Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Curve\",\n \"symbol\": \"CURVE\",\n \"decimals\": 18\n },\n \"networkId\": 827431,\n \"rpc\": [\"https://curve.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://827431.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.curvescan.io\"],\n \"shortName\": \"CURVEm\",\n \"slug\": \"curve\",\n \"testnet\": false\n};\n\nvar c846000 = {\n \"chain\": \"4GN\",\n \"chainId\": 846000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://bloqs4good.com\",\n \"name\": \"4GoodNetwork\",\n \"nativeCurrency\": {\n \"name\": \"APTA\",\n \"symbol\": \"APTA\",\n \"decimals\": 18\n },\n \"networkId\": 846000,\n \"rpc\": [\"https://4goodnetwork.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://846000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://chain.deptofgood.com\"],\n \"shortName\": \"bloqs4good\",\n \"slug\": \"4goodnetwork\",\n \"testnet\": false\n};\n\nvar c855456 = {\n \"chain\": \"EVMCC\",\n \"chainId\": 855456,\n \"explorers\": [{\n \"name\": \"Dodao Explorer\",\n \"url\": \"https://tanssi-evmexplorer.netlify.app/?rpcUrl=https://fraa-dancebox-3041-rpc.a.dancebox.tanssi.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdWsi6mhs6Agb3LF4uycUwx2fgNmwkuAGb7JmsLPkwd3j\",\n \"width\": 636,\n \"height\": 629,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdWsi6mhs6Agb3LF4uycUwx2fgNmwkuAGb7JmsLPkwd3j\",\n \"width\": 636,\n \"height\": 629,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://dodao.dev/\",\n \"name\": \"Dodao\",\n \"nativeCurrency\": {\n \"name\": \"Dodao\",\n \"symbol\": \"DODAO\",\n \"decimals\": 18\n },\n \"networkId\": 855456,\n \"rpc\": [\"https://dodao.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://855456.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fraa-dancebox-3041-rpc.a.dancebox.tanssi.network\", \"wss://fraa-dancebox-3041-rpc.a.dancebox.tanssi.network\"],\n \"shortName\": \"dodao\",\n \"slug\": \"dodao\",\n \"testnet\": false\n};\n\nvar c888888 = {\n \"chain\": \"Vision\",\n \"chainId\": 888888,\n \"explorers\": [{\n \"name\": \"Visionscan\",\n \"url\": \"https://www.visionscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.v.network\",\n \"name\": \"Vision - Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"VS\",\n \"symbol\": \"VS\",\n \"decimals\": 18\n },\n \"networkId\": 888888,\n \"rpc\": [\"https://vision.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://888888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://infragrid.v.network/ethereum/compatible\"],\n \"shortName\": \"vision\",\n \"slip44\": 60,\n \"slug\": \"vision\",\n \"testnet\": false\n};\n\nvar c894538 = {\n \"chain\": \"TWT\",\n \"chainId\": 894538,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://subnets-test.avax.network/thirdweb\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmXDGoJKuuwQKzY1Y7ZhgULg8hcmveu6PVaDaYQzEjKwkQ/Thirdweb-Icon-Black-BG.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"name\": \"thirdweb test subnet\",\n \"nativeCurrency\": {\n \"name\": \"TWT\",\n \"symbol\": \"TWT\",\n \"decimals\": 18\n },\n \"networkId\": 894538,\n \"redFlags\": [],\n \"rpc\": [\"https://thirdweb-test-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://894538.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/thirdweb/testnet/rpc\"],\n \"shortName\": \"twt\",\n \"slug\": \"thirdweb-test-subnet\",\n \"testnet\": true\n};\n\nvar c900000 = {\n \"chain\": \"PSC\",\n \"chainId\": 900000,\n \"explorers\": [{\n \"name\": \"Posichain Explorer\",\n \"url\": \"https://explorer.posichain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://posichain.org\",\n \"name\": \"Posichain Mainnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"Posichain Native Token\",\n \"symbol\": \"POSI\",\n \"decimals\": 18\n },\n \"networkId\": 900000,\n \"rpc\": [\"https://posichain-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://900000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.posichain.org\", \"https://api.s0.posichain.org\"],\n \"shortName\": \"psc-s0\",\n \"slug\": \"posichain-shard-0\",\n \"testnet\": false\n};\n\nvar c910000 = {\n \"chain\": \"PSC\",\n \"chainId\": 910000,\n \"explorers\": [{\n \"name\": \"Posichain Explorer Testnet\",\n \"url\": \"https://explorer-testnet.posichain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.posichain.org/\"],\n \"infoURL\": \"https://posichain.org\",\n \"name\": \"Posichain Testnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"Posichain Native Token\",\n \"symbol\": \"POSI\",\n \"decimals\": 18\n },\n \"networkId\": 910000,\n \"rpc\": [\"https://posichain-testnet-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://910000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s0.t.posichain.org\"],\n \"shortName\": \"psc-t-s0\",\n \"slug\": \"posichain-testnet-shard-0\",\n \"testnet\": true\n};\n\nvar c920000 = {\n \"chain\": \"PSC\",\n \"chainId\": 920000,\n \"explorers\": [{\n \"name\": \"Posichain Explorer Devnet\",\n \"url\": \"https://explorer-devnet.posichain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.posichain.org/\"],\n \"infoURL\": \"https://posichain.org\",\n \"name\": \"Posichain Devnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"Posichain Native Token\",\n \"symbol\": \"POSI\",\n \"decimals\": 18\n },\n \"networkId\": 920000,\n \"rpc\": [\"https://posichain-devnet-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://920000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s0.d.posichain.org\"],\n \"shortName\": \"psc-d-s0\",\n \"slug\": \"posichain-devnet-shard-0\",\n \"testnet\": false\n};\n\nvar c920001 = {\n \"chain\": \"PSC\",\n \"chainId\": 920001,\n \"explorers\": [{\n \"name\": \"Posichain Explorer Devnet\",\n \"url\": \"https://explorer-devnet.posichain.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.posichain.org/\"],\n \"infoURL\": \"https://posichain.org\",\n \"name\": \"Posichain Devnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"Posichain Native Token\",\n \"symbol\": \"POSI\",\n \"decimals\": 18\n },\n \"networkId\": 920001,\n \"rpc\": [\"https://posichain-devnet-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://920001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s1.d.posichain.org\"],\n \"shortName\": \"psc-d-s1\",\n \"slug\": \"posichain-devnet-shard-1\",\n \"testnet\": false\n};\n\nvar c923018 = {\n \"chain\": \"FNCY\",\n \"chainId\": 923018,\n \"explorers\": [{\n \"name\": \"fncy scan testnet\",\n \"url\": \"https://fncyscan-testnet.fncy.world\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmfXCh6UnaEHn3Evz7RFJ3p2ggJBRm9hunDHegeoquGuhD\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet-testnet.fncy.world\"],\n \"icon\": {\n \"url\": \"ipfs://QmfXCh6UnaEHn3Evz7RFJ3p2ggJBRm9hunDHegeoquGuhD\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://fncyscan-testnet.fncy.world\",\n \"name\": \"FNCY Testnet\",\n \"nativeCurrency\": {\n \"name\": \"FNCY\",\n \"symbol\": \"FNCY\",\n \"decimals\": 18\n },\n \"networkId\": 923018,\n \"rpc\": [\"https://fncy-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://923018.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://fncy-testnet-seed.fncy.world\"],\n \"shortName\": \"tFNCY\",\n \"slug\": \"fncy-testnet\",\n \"testnet\": true\n};\n\nvar c955305 = {\n \"chain\": \"Eluvio\",\n \"chainId\": 955305,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.eluv.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://eluv.io\",\n \"name\": \"Eluvio Content Fabric\",\n \"nativeCurrency\": {\n \"name\": \"ELV\",\n \"symbol\": \"ELV\",\n \"decimals\": 18\n },\n \"networkId\": 955305,\n \"rpc\": [\"https://eluvio-content-fabric.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://955305.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://host-76-74-28-226.contentfabric.io/eth/\", \"https://host-76-74-28-232.contentfabric.io/eth/\", \"https://host-76-74-29-2.contentfabric.io/eth/\", \"https://host-76-74-29-8.contentfabric.io/eth/\", \"https://host-76-74-29-34.contentfabric.io/eth/\", \"https://host-76-74-29-35.contentfabric.io/eth/\", \"https://host-154-14-211-98.contentfabric.io/eth/\", \"https://host-154-14-192-66.contentfabric.io/eth/\", \"https://host-60-240-133-202.contentfabric.io/eth/\", \"https://host-64-235-250-98.contentfabric.io/eth/\"],\n \"shortName\": \"elv\",\n \"slip44\": 1011,\n \"slug\": \"eluvio-content-fabric\",\n \"testnet\": false\n};\n\nvar c988207 = {\n \"chain\": \"Ecrox Chain\",\n \"chainId\": 988207,\n \"explorers\": [{\n \"name\": \"Ecrox Chain Explorer\",\n \"url\": \"https://ecroxscan.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreibnqdlwgotu4hwx6oeu4ye3huobr3eaiuvv55n5tolyxya2q7edmq\",\n \"width\": 300,\n \"height\": 300,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ecroxcoin.io/\",\n \"name\": \"Ecrox Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ECROX COIN\",\n \"symbol\": \"ECROX\",\n \"decimals\": 18\n },\n \"networkId\": 988207,\n \"rpc\": [\"https://ecrox-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://988207.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.ecroxscan.com/\"],\n \"shortName\": \"ecrox\",\n \"slug\": \"ecrox-chain\",\n \"testnet\": false\n};\n\nvar c993535 = {\n \"chain\": \"Avalanche\",\n \"chainId\": 993535,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \".svg\"\n },\n \"infoURL\": \"https://avacloud.io\",\n \"name\": \"qr1120y1\",\n \"nativeCurrency\": {\n \"name\": \"qr1120y1 Token\",\n \"symbol\": \"LMK\",\n \"decimals\": 18\n },\n \"networkId\": 993535,\n \"redFlags\": [],\n \"rpc\": [\"https://qr1120y1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://993535.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/qr1120y1/testnet/rpc\"],\n \"shortName\": \"qr1120y1\",\n \"slug\": \"qr1120y1\",\n \"testnet\": true\n};\n\nvar c1127469 = {\n \"chain\": \"TILTYARD\",\n \"chainId\": 1127469,\n \"explorers\": [{\n \"name\": \"TILTYARD Explorer\",\n \"url\": \"http://testnet-explorer.tiltyard.gg\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP1559\"\n }],\n \"name\": \"Tiltyard Subnet\",\n \"nativeCurrency\": {\n \"name\": \"Tiltyard Token\",\n \"symbol\": \"TILTG\",\n \"decimals\": 18\n },\n \"networkId\": 1127469,\n \"rpc\": [\"https://tiltyard-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1127469.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/tiltyard/testnet/rpc\"],\n \"shortName\": \"tiltyard\",\n \"slug\": \"tiltyard-subnet\",\n \"testnet\": true\n};\n\nvar c1261120 = {\n \"chain\": \"ETH\",\n \"chainId\": 1261120,\n \"explorers\": [{\n \"name\": \"Blockscout zKatana chain explorer\",\n \"url\": \"https://zkatana.blockscout.com\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"Startale zKatana chain explorer\",\n \"url\": \"https://zkatana.explorer.startale.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRySLe3su59dE5x5JPm2b1GeZfz6DR9qUzcbp3rt4SD3A\",\n \"width\": 300,\n \"height\": 300,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://astar.network\",\n \"name\": \"zKatana\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1261120,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-11155111\",\n \"bridges\": [{\n \"url\": \"https://portal.astar.network\"\n }, {\n \"url\": \"https://bridge.zkatana.gelato.digital\"\n }]\n },\n \"rpc\": [\"https://zkatana.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1261120.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zkatana.gelato.digital\", \"https://rpc.startale.com/zkatana\"],\n \"shortName\": \"azktn\",\n \"slug\": \"zkatana\",\n \"status\": \"active\",\n \"testnet\": true,\n \"title\": \"Astar zkEVM Testnet zKatana\"\n};\n\nvar c1313114 = {\n \"chain\": \"ETHO\",\n \"chainId\": 1313114,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://explorer.ethoprotocol.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ethoprotocol.com\",\n \"name\": \"Etho Protocol\",\n \"nativeCurrency\": {\n \"name\": \"Etho Protocol\",\n \"symbol\": \"ETHO\",\n \"decimals\": 18\n },\n \"networkId\": 1313114,\n \"rpc\": [\"https://etho-protocol.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1313114.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ethoprotocol.com\"],\n \"shortName\": \"etho\",\n \"slip44\": 1313114,\n \"slug\": \"etho-protocol\",\n \"testnet\": false\n};\n\nvar c1313500 = {\n \"chain\": \"XERO\",\n \"chainId\": 1313500,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://xerom.org\",\n \"name\": \"Xerom\",\n \"nativeCurrency\": {\n \"name\": \"Xerom Ether\",\n \"symbol\": \"XERO\",\n \"decimals\": 18\n },\n \"networkId\": 1313500,\n \"rpc\": [\"https://xerom.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1313500.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.xerom.org\"],\n \"shortName\": \"xero\",\n \"slug\": \"xerom\",\n \"testnet\": false\n};\n\nvar c1337702 = {\n \"chain\": \"ETH\",\n \"chainId\": 1337702,\n \"explorers\": [{\n \"name\": \"kintsugi explorer\",\n \"url\": \"https://explorer.kintsugi.themerge.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=1337702&address=${ADDRESS}\", \"https://faucet.kintsugi.themerge.dev\"],\n \"infoURL\": \"https://kintsugi.themerge.dev/\",\n \"name\": \"Kintsugi\",\n \"nativeCurrency\": {\n \"name\": \"kintsugi Ethere\",\n \"symbol\": \"kiETH\",\n \"decimals\": 18\n },\n \"networkId\": 1337702,\n \"rpc\": [\"https://kintsugi.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1337702.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.kintsugi.themerge.dev\"],\n \"shortName\": \"kintsugi\",\n \"slug\": \"kintsugi\",\n \"testnet\": true,\n \"title\": \"Kintsugi merge testnet\"\n};\n\nvar c1337802 = {\n \"chain\": \"ETH\",\n \"chainId\": 1337802,\n \"explorers\": [{\n \"name\": \"Kiln Explorer\",\n \"url\": \"https://explorer.kiln.themerge.dev\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.kiln.themerge.dev\", \"https://kiln-faucet.pk910.de\", \"https://kilnfaucet.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://kiln.themerge.dev/\",\n \"name\": \"Kiln\",\n \"nativeCurrency\": {\n \"name\": \"Testnet ETH\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1337802,\n \"rpc\": [\"https://kiln.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1337802.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.kiln.themerge.dev\"],\n \"shortName\": \"kiln\",\n \"slug\": \"kiln\",\n \"testnet\": true\n};\n\nvar c1337803 = {\n \"chain\": \"ETH\",\n \"chainId\": 1337803,\n \"explorers\": [{\n \"name\": \"Zhejiang Explorer\",\n \"url\": \"https://zhejiang.beaconcha.in\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.zhejiang.ethpandaops.io\", \"https://zhejiang-faucet.pk910.de\"],\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://zhejiang.ethpandaops.io\",\n \"name\": \"Zhejiang\",\n \"nativeCurrency\": {\n \"name\": \"Testnet ETH\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1337803,\n \"rpc\": [\"https://zhejiang.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1337803.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zhejiang.ethpandaops.io\"],\n \"shortName\": \"zhejiang\",\n \"slug\": \"zhejiang\",\n \"testnet\": true\n};\n\nvar c1440001 = {\n \"chain\": \"XRPL\",\n \"chainId\": 1440001,\n \"explorers\": [{\n \"name\": \"XRP Ledger Explorer\",\n \"url\": \"https://evm-sidechain.xrpl.org/\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreidmgxjwjircegjkvysgz25b2ukw6h7axoirkxv6idupzzqsdrljgy\",\n \"width\": 780,\n \"height\": 680,\n \"format\": \"png\"\n },\n \"name\": \"XRP Ledger EVM Devnet Sidechain\",\n \"nativeCurrency\": {\n \"name\": \"XRP\",\n \"symbol\": \"XRP\",\n \"decimals\": 18\n },\n \"networkId\": 1440001,\n \"redFlags\": [],\n \"rpc\": [\"https://xrp-ledger-evm-devnet-sidechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1440001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-evm-sidechain.xrpl.org\"],\n \"shortName\": \"XRPL-EVM-Devnet-Sidechain\",\n \"slug\": \"xrp-ledger-evm-devnet-sidechain\",\n \"testnet\": true\n};\n\nvar c2021398 = {\n \"chain\": \"DeBank\",\n \"chainId\": 2021398,\n \"explorers\": [{\n \"name\": \"DeBank Chain Explorer\",\n \"url\": \"https://explorer.testnet.debank.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmW9pBps8WHRRWmyXhjLZrjZJUe8F48hUu7z98bu2RVsjN\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://debank.com\",\n \"name\": \"DeBank Testnet\",\n \"nativeCurrency\": {\n \"name\": \"DeBank USD\",\n \"symbol\": \"USD\",\n \"decimals\": 18\n },\n \"networkId\": 2021398,\n \"rpc\": [\"https://debank-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2021398.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://rpc.testnet.debank.com\"],\n \"shortName\": \"dbk\",\n \"slug\": \"debank-testnet\",\n \"testnet\": true\n};\n\nvar c2099156 = {\n \"chain\": \"Plian\",\n \"chainId\": 2099156,\n \"explorers\": [{\n \"name\": \"piscan\",\n \"url\": \"https://piscan.plian.org/pchain\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://plian.org/\",\n \"name\": \"Plian Mainnet Main\",\n \"nativeCurrency\": {\n \"name\": \"Plian Token\",\n \"symbol\": \"PI\",\n \"decimals\": 18\n },\n \"networkId\": 2099156,\n \"rpc\": [\"https://plian-main.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2099156.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.plian.io/pchain\"],\n \"shortName\": \"plian-mainnet\",\n \"slug\": \"plian-main\",\n \"testnet\": false\n};\n\nvar c2203181 = {\n \"chain\": \"PlatON\",\n \"chainId\": 2203181,\n \"explorers\": [{\n \"name\": \"PlatON explorer\",\n \"url\": \"https://devnetscan.platon.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://devnet2faucet.platon.network/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmT7PSXBiVBma6E15hNkivmstqLu3JSnG1jXN5pTmcCGRC\",\n \"width\": 180,\n \"height\": 180,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.platon.network\",\n \"name\": \"PlatON Dev Testnet Deprecated\",\n \"nativeCurrency\": {\n \"name\": \"LAT\",\n \"symbol\": \"lat\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://platon-dev-testnet-deprecated.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2203181.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnetopenapi2.platon.network/rpc\", \"wss://devnetopenapi2.platon.network/ws\"],\n \"shortName\": \"platondev\",\n \"slug\": \"platon-dev-testnet-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c2206132 = {\n \"chain\": \"PlatON\",\n \"chainId\": 2206132,\n \"explorers\": [{\n \"name\": \"PlatON explorer\",\n \"url\": \"https://devnet2scan.platon.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://devnet2faucet.platon.network/faucet\"],\n \"icon\": {\n \"url\": \"ipfs://QmT7PSXBiVBma6E15hNkivmstqLu3JSnG1jXN5pTmcCGRC\",\n \"width\": 180,\n \"height\": 180,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.platon.network\",\n \"name\": \"PlatON Dev Testnet2\",\n \"nativeCurrency\": {\n \"name\": \"LAT\",\n \"symbol\": \"lat\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://platon-dev-testnet2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2206132.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet2openapi.platon.network/rpc\", \"wss://devnet2openapi.platon.network/ws\"],\n \"shortName\": \"platondev2\",\n \"slug\": \"platon-dev-testnet2\",\n \"testnet\": true\n};\n\nvar c2611555 = {\n \"chain\": \"DPU\",\n \"chainId\": 2611555,\n \"explorers\": [],\n \"faucets\": [],\n \"name\": \"DPU Chain\",\n \"nativeCurrency\": {\n \"name\": \"DGC\",\n \"symbol\": \"DGC\",\n \"decimals\": 18\n },\n \"networkId\": 2611555,\n \"rpc\": [\"https://dpu-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2611555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sc-rpc.dpu.ac.th\"],\n \"shortName\": \"DPU\",\n \"slug\": \"dpu-chain\",\n \"testnet\": false\n};\n\nvar c3141592 = {\n \"chain\": \"FIL\",\n \"chainId\": 3141592,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.butterfly.fildev.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Butterfly testnet\",\n \"nativeCurrency\": {\n \"name\": \"testnet filecoin\",\n \"symbol\": \"tFIL\",\n \"decimals\": 18\n },\n \"networkId\": 3141592,\n \"rpc\": [],\n \"shortName\": \"filecoin-butterfly\",\n \"slip44\": 1,\n \"slug\": \"filecoin-butterfly-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c3441005 = {\n \"chain\": \"Manta Pacific\",\n \"chainId\": 3441005,\n \"explorers\": [{\n \"name\": \"manta-testnet Explorer\",\n \"url\": \"https://manta-testnet.calderaexplorer.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmTckcVTViRZ3NqT36MTt8AvgBSmudrbgU3pi8AaNtthoV\",\n \"width\": 834,\n \"height\": 834,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://manta-testnet.caldera.dev/\",\n \"name\": \"Manta Pacific Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Manta\",\n \"symbol\": \"MANTA\",\n \"decimals\": 18\n },\n \"networkId\": 3441005,\n \"rpc\": [\"https://manta-pacific-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3441005.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://manta-testnet.calderachain.xyz/http\"],\n \"shortName\": \"mantaTestnet\",\n \"slug\": \"manta-pacific-testnet\",\n \"testnet\": true\n};\n\nvar c4000003 = {\n \"chain\": \"ETH\",\n \"chainId\": 4000003,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://zero-explorer.alt.technology\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmcEfZJU7NMn9ycTAcEooQgGNfa2nYBToSUZHdFCFadcjb\",\n \"width\": 1080,\n \"height\": 1025,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://altlayer.io\",\n \"name\": \"AltLayer Zero Gas Network\",\n \"nativeCurrency\": {\n \"name\": \"ZERO\",\n \"symbol\": \"ZERO\",\n \"decimals\": 18\n },\n \"networkId\": 4000003,\n \"rpc\": [\"https://altlayer-zero-gas-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4000003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://zero.alt.technology\"],\n \"shortName\": \"alt-zerogas\",\n \"slug\": \"altlayer-zero-gas-network\",\n \"testnet\": false\n};\n\nvar c4281033 = {\n \"chain\": \"WCal\",\n \"chainId\": 4281033,\n \"explorers\": [],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt\",\n \"width\": 1000,\n \"height\": 1628,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://caldera.xyz/\",\n \"name\": \"Worlds Caldera\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 4281033,\n \"rpc\": [\"https://worlds-caldera.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4281033.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://worlds-test.calderachain.xyz/http\"],\n \"shortName\": \"worldscal\",\n \"slug\": \"worlds-caldera\",\n \"testnet\": true\n};\n\nvar c5167003 = {\n \"chain\": \"MXC zkEVM\",\n \"chainId\": 5167003,\n \"explorers\": [{\n \"name\": \"MXC Wannsee zkEVM Testnet\",\n \"url\": \"https://wannsee-explorer.mxc.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmdGCthKA11K9kCZJdbTP5WPAyq1wiRZ3REn6KG58MrWaE\",\n \"width\": 159,\n \"height\": 159,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://wannsee.mxc.com/docs/intro\",\n \"name\": \"MXC Wannsee zkEVM Testnet\",\n \"nativeCurrency\": {\n \"name\": \"MXC Wannsee zkEVM Testnet\",\n \"symbol\": \"MXC\",\n \"decimals\": 18\n },\n \"networkId\": 5167003,\n \"rpc\": [\"https://mxc-wannsee-zkevm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5167003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://wannsee-rpc.mxc.com\"],\n \"shortName\": \"MXC\",\n \"slug\": \"mxc-wannsee-zkevm-testnet\",\n \"testnet\": true\n};\n\nvar c5201420 = {\n \"chain\": \"Electroneum\",\n \"chainId\": 5201420,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://blockexplorer.thesecurityteam.rocks\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmVgFqXA3kkCrVYGcWFF7Mhx8JUSe9vSCauNamuKWSvCym\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmVgFqXA3kkCrVYGcWFF7Mhx8JUSe9vSCauNamuKWSvCym\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://electroneum.com\",\n \"name\": \"Electroneum Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Electroneum\",\n \"symbol\": \"ETN\",\n \"decimals\": 18\n },\n \"networkId\": 5201420,\n \"rpc\": [\"https://electroneum-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5201420.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.electroneum.com\"],\n \"shortName\": \"etn-testnet\",\n \"slug\": \"electroneum-testnet\",\n \"testnet\": true\n};\n\nvar c5555555 = {\n \"chain\": \"Imversed\",\n \"chainId\": 5555555,\n \"explorers\": [{\n \"name\": \"Imversed EVM explorer (Blockscout)\",\n \"url\": \"https://txe.imversed.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Imversed Cosmos Explorer (Big Dipper)\",\n \"url\": \"https://tex-c.imversed.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://imversed.com\",\n \"name\": \"Imversed Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Imversed Token\",\n \"symbol\": \"IMV\",\n \"decimals\": 18\n },\n \"networkId\": 5555555,\n \"rpc\": [\"https://imversed.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5555555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc.imversed.network\", \"https://ws-jsonrpc.imversed.network\"],\n \"shortName\": \"imversed\",\n \"slug\": \"imversed\",\n \"testnet\": false\n};\n\nvar c5555558 = {\n \"chain\": \"Imversed\",\n \"chainId\": 5555558,\n \"explorers\": [{\n \"name\": \"Imversed EVM Explorer (Blockscout)\",\n \"url\": \"https://txe-test.imversed.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"Imversed Cosmos Explorer (Big Dipper)\",\n \"url\": \"https://tex-t.imversed.com\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmYwvmJZ1bgTdiZUKXk4SifTpTj286CkZjMCshUyJuBFH1\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://imversed.com\",\n \"name\": \"Imversed Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Imversed Token\",\n \"symbol\": \"IMV\",\n \"decimals\": 18\n },\n \"networkId\": 5555558,\n \"rpc\": [\"https://imversed-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://5555558.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc-test.imversed.network\", \"https://ws-jsonrpc-test.imversed.network\"],\n \"shortName\": \"imversed-testnet\",\n \"slug\": \"imversed-testnet\",\n \"testnet\": true\n};\n\nvar c7225878 = {\n \"chain\": \"Saakuru\",\n \"chainId\": 7225878,\n \"explorers\": [{\n \"name\": \"saakuru-explorer\",\n \"url\": \"https://explorer.saakuru.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmduEdtFobPpZWSc45MU6RKxZfTEzLux2z8ikHFhT8usqv\",\n \"width\": 1024,\n \"height\": 1024,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://saakuru.network\",\n \"name\": \"Saakuru Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OAS\",\n \"symbol\": \"OAS\",\n \"decimals\": 18\n },\n \"networkId\": 7225878,\n \"rpc\": [\"https://saakuru.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7225878.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.saakuru.network\"],\n \"shortName\": \"saakuru\",\n \"slug\": \"saakuru\",\n \"testnet\": false\n};\n\nvar c7355310 = {\n \"chain\": \"VSL\",\n \"chainId\": 7355310,\n \"explorers\": [{\n \"name\": \"openvessel-mainnet\",\n \"url\": \"https://mainnet-explorer.openvessel.io\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeknNzGCZXQK7egwfwyxQan7Lw8bLnqYsyoEgEbDNCzJX\",\n \"width\": 600,\n \"height\": 529,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.openvessel.io\",\n \"name\": \"OpenVessel\",\n \"nativeCurrency\": {\n \"name\": \"Vessel ETH\",\n \"symbol\": \"VETH\",\n \"decimals\": 18\n },\n \"networkId\": 7355310,\n \"rpc\": [\"https://openvessel.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7355310.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-external.openvessel.io\"],\n \"shortName\": \"vsl\",\n \"slug\": \"openvessel\",\n \"testnet\": false\n};\n\nvar c7668378 = {\n \"chain\": \"QOM\",\n \"chainId\": 7668378,\n \"explorers\": [{\n \"name\": \"QL1 Testnet Explorer\",\n \"url\": \"https://testnet.qom.one\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRc1kJ7AgcDL1BSoMYudatWHTrz27K6WNTwGifQb5V17D\",\n \"width\": 518,\n \"height\": 518,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.qom.one\"],\n \"icon\": {\n \"url\": \"ipfs://QmRc1kJ7AgcDL1BSoMYudatWHTrz27K6WNTwGifQb5V17D\",\n \"width\": 518,\n \"height\": 518,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://qom.one\",\n \"name\": \"QL1 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Shiba Predator\",\n \"symbol\": \"QOM\",\n \"decimals\": 18\n },\n \"networkId\": 7668378,\n \"rpc\": [\"https://ql1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7668378.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.qom.one\"],\n \"shortName\": \"tqom\",\n \"slug\": \"ql1-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c7762959 = {\n \"chain\": \"MUSIC\",\n \"chainId\": 7762959,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://musicoin.tw\",\n \"name\": \"Musicoin\",\n \"nativeCurrency\": {\n \"name\": \"Musicoin\",\n \"symbol\": \"MUSIC\",\n \"decimals\": 18\n },\n \"networkId\": 7762959,\n \"rpc\": [\"https://musicoin.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7762959.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mewapi.musicoin.tw\"],\n \"shortName\": \"music\",\n \"slip44\": 184,\n \"slug\": \"musicoin\",\n \"testnet\": false\n};\n\nvar c7777777 = {\n \"chain\": \"ETH\",\n \"chainId\": 7777777,\n \"explorers\": [{\n \"name\": \"Zora Network Explorer\",\n \"url\": \"https://explorer.zora.energy\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmZ6qaRwTPFEZUspwMUjaxC6KhmzcELdRQcQzS3P72Dzts/Vector.svg\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://zora.energy\",\n \"name\": \"Zora\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 7777777,\n \"redFlags\": [],\n \"rpc\": [\"https://zora.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://7777777.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.zora.energy/\"],\n \"shortName\": \"zora\",\n \"slug\": \"zora\",\n \"testnet\": false\n};\n\nvar c8007736 = {\n \"chain\": \"Plian\",\n \"chainId\": 8007736,\n \"explorers\": [{\n \"name\": \"piscan\",\n \"url\": \"https://piscan.plian.org/child_0\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://plian.org\",\n \"name\": \"Plian Mainnet Subchain 1\",\n \"nativeCurrency\": {\n \"name\": \"Plian Token\",\n \"symbol\": \"PI\",\n \"decimals\": 18\n },\n \"networkId\": 8007736,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-2099156\"\n },\n \"rpc\": [\"https://plian-subchain-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8007736.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.plian.io/child_0\"],\n \"shortName\": \"plian-mainnet-l2\",\n \"slug\": \"plian-subchain-1\",\n \"testnet\": false\n};\n\nvar c8794598 = {\n \"chain\": \"HAPchain\",\n \"chainId\": 8794598,\n \"explorers\": [{\n \"name\": \"HAP EVM Explorer (Blockscout)\",\n \"url\": \"https://blockscout.hap.land\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmQ4V9JC25yUrYk2kFJwmKguSsZBQvtGcg6q9zkDV8mkJW\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmQ4V9JC25yUrYk2kFJwmKguSsZBQvtGcg6q9zkDV8mkJW\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://hap.land\",\n \"name\": \"HAPchain\",\n \"nativeCurrency\": {\n \"name\": \"HAP\",\n \"symbol\": \"HAP\",\n \"decimals\": 18\n },\n \"networkId\": 8794598,\n \"rpc\": [\"https://hapchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://8794598.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonrpc.hap.land\"],\n \"shortName\": \"hap\",\n \"slug\": \"hapchain\",\n \"testnet\": false\n};\n\nvar c8888881 = {\n \"chain\": \"Quarix\",\n \"chainId\": 8888881,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTw8TyeeNhUFWrck2WCiN17MaHRt5qzRBtaAvmz6L7qq7\",\n \"width\": 669,\n \"height\": 587,\n \"format\": \"png\"\n },\n \"name\": \"Quarix Testnet\",\n \"nativeCurrency\": {\n \"name\": \"QARE\",\n \"symbol\": \"QARE\",\n \"decimals\": 18\n },\n \"networkId\": 8888881,\n \"rpc\": [],\n \"shortName\": \"quarix-testnet\",\n \"slug\": \"quarix-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c8888888 = {\n \"chain\": \"Quarix\",\n \"chainId\": 8888888,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTw8TyeeNhUFWrck2WCiN17MaHRt5qzRBtaAvmz6L7qq7\",\n \"width\": 669,\n \"height\": 587,\n \"format\": \"png\"\n },\n \"name\": \"Quarix\",\n \"nativeCurrency\": {\n \"name\": \"QARE\",\n \"symbol\": \"QARE\",\n \"decimals\": 18\n },\n \"networkId\": 8888888,\n \"rpc\": [],\n \"shortName\": \"quarix\",\n \"slug\": \"quarix\",\n \"status\": \"incubating\",\n \"testnet\": false\n};\n\nvar c9322252 = {\n \"chain\": \"XCAP\",\n \"chainId\": 9322252,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://xcap-mainnet.explorer.xcap.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeTj6tfaw9qf9wnEUQh7PnCpNWyvm56e7kY35kANRWNxj\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xcap.network/\",\n \"name\": \"XCAP\",\n \"nativeCurrency\": {\n \"name\": \"Gas\",\n \"symbol\": \"GAS\",\n \"decimals\": 18\n },\n \"networkId\": 9322252,\n \"rpc\": [\"https://xcap.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9322252.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://xcap-mainnet.relay.xcap.network/znzvh2ueyvm2yts5fv5gnul395jbkfb2/rpc1\"],\n \"shortName\": \"xcap\",\n \"slug\": \"xcap\",\n \"testnet\": false,\n \"title\": \"XCAP Mainnet\"\n};\n\nvar c9322253 = {\n \"chain\": \"XCAP\",\n \"chainId\": 9322253,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://xcap-milvine.explorer.xcap.network\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeTj6tfaw9qf9wnEUQh7PnCpNWyvm56e7kY35kANRWNxj\",\n \"width\": 1600,\n \"height\": 1600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xcap.network/\",\n \"name\": \"Milvine\",\n \"nativeCurrency\": {\n \"name\": \"Gas\",\n \"symbol\": \"GAS\",\n \"decimals\": 18\n },\n \"networkId\": 9322253,\n \"rpc\": [\"https://milvine.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://9322253.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://xcap-milvine.relay.xcap.network/zj5l55ftsgi027kz4nf14vs8d89inego/rpc1\"],\n \"shortName\": \"milv\",\n \"slug\": \"milvine\",\n \"testnet\": true,\n \"title\": \"XCAP Testnet Milvine\"\n};\n\nvar c10067275 = {\n \"chain\": \"Plian\",\n \"chainId\": 10067275,\n \"explorers\": [{\n \"name\": \"piscan\",\n \"url\": \"https://testnet.plian.org/child_test\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://plian.org/\",\n \"name\": \"Plian Testnet Subchain 1\",\n \"nativeCurrency\": {\n \"name\": \"Plian Token\",\n \"symbol\": \"TPI\",\n \"decimals\": 18\n },\n \"networkId\": 10067275,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-16658437\"\n },\n \"rpc\": [\"https://plian-testnet-subchain-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10067275.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.plian.io/child_test\"],\n \"shortName\": \"plian-testnet-l2\",\n \"slug\": \"plian-testnet-subchain-1\",\n \"testnet\": true\n};\n\nvar c10101010 = {\n \"chain\": \"SVRN\",\n \"chainId\": 10101010,\n \"explorers\": [{\n \"name\": \"Soverun\",\n \"url\": \"https://explorer.soverun.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.soverun.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmTYazUzgY9Nn2mCjWwFUSLy3dG6i2PvALpwCNQvx1zXyi\",\n \"width\": 1154,\n \"height\": 1154,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://soverun.com\",\n \"name\": \"Soverun Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Soverun\",\n \"symbol\": \"SVRN\",\n \"decimals\": 18\n },\n \"networkId\": 10101010,\n \"rpc\": [\"https://soverun.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://10101010.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.soverun.com\"],\n \"shortName\": \"SVRNm\",\n \"slug\": \"soverun\",\n \"testnet\": false\n};\n\nvar c11155111 = {\n \"chain\": \"ETH\",\n \"chainId\": 11155111,\n \"explorers\": [{\n \"name\": \"etherscan-sepolia\",\n \"url\": \"https://sepolia.etherscan.io\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"otterscan-sepolia\",\n \"url\": \"https://sepolia.otterscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"http://fauceth.komputing.org?chain=11155111&address=${ADDRESS}\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://sepolia.otterscan.io\",\n \"name\": \"Sepolia\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 11155111,\n \"redFlags\": [],\n \"rpc\": [\"https://sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11155111.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.infura.io/v3/${INFURA_API_KEY}\", \"wss://sepolia.infura.io/v3/${INFURA_API_KEY}\", \"https://rpc.sepolia.org\", \"https://rpc2.sepolia.org\", \"https://rpc-sepolia.rockx.com\", \"https://rpc.sepolia.ethpandaops.io\", \"https://sepolia.gateway.tenderly.co\", \"wss://sepolia.gateway.tenderly.co\", \"https://ethereum-sepolia.publicnode.com\", \"wss://ethereum-sepolia.publicnode.com\"],\n \"shortName\": \"sep\",\n \"slug\": \"sepolia\",\n \"testnet\": true,\n \"title\": \"Ethereum Testnet Sepolia\"\n};\n\nvar c11155420 = {\n \"chain\": \"ETH\",\n \"chainId\": 11155420,\n \"explorers\": [{\n \"name\": \"opscout\",\n \"url\": \"https://optimism-sepolia.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://app.optimism.io/faucet\"],\n \"infoURL\": \"https://optimism.io\",\n \"name\": \"OP Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 11155420,\n \"rpc\": [\"https://op-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11155420.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.optimism.io\"],\n \"shortName\": \"opsep\",\n \"slug\": \"op-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c13371337 = {\n \"chain\": \"PEP\",\n \"chainId\": 13371337,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://pepchain.io\",\n \"name\": \"PepChain Churchill\",\n \"nativeCurrency\": {\n \"name\": \"PepChain Churchill Ether\",\n \"symbol\": \"TPEP\",\n \"decimals\": 18\n },\n \"networkId\": 13371337,\n \"rpc\": [\"https://pepchain-churchill.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://13371337.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://churchill-rpc.pepchain.io\"],\n \"shortName\": \"tpep\",\n \"slug\": \"pepchain-churchill\",\n \"testnet\": false\n};\n\nvar c14288640 = {\n \"chain\": \"anduschain\",\n \"chainId\": 14288640,\n \"explorers\": [{\n \"name\": \"anduschain explorer\",\n \"url\": \"https://explorer.anduschain.io\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://bafkreiapaxokh2p4j7hg43ug2inomixiwrdhni4kpqazvqifssnez7efze\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"infoURL\": \"https://anduschain.io/\",\n \"name\": \"Anduschain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"DAON\",\n \"symbol\": \"DEB\",\n \"decimals\": 18\n },\n \"networkId\": 14288640,\n \"rpc\": [\"https://anduschain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://14288640.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.anduschain.io/rpc\", \"wss://rpc.anduschain.io/ws\"],\n \"shortName\": \"anduschain-mainnet\",\n \"slug\": \"anduschain\",\n \"testnet\": false\n};\n\nvar c16658437 = {\n \"chain\": \"Plian\",\n \"chainId\": 16658437,\n \"explorers\": [{\n \"name\": \"piscan\",\n \"url\": \"https://testnet.plian.org/testnet\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://plian.org\",\n \"name\": \"Plian Testnet Main\",\n \"nativeCurrency\": {\n \"name\": \"Plian Testnet Token\",\n \"symbol\": \"TPI\",\n \"decimals\": 18\n },\n \"networkId\": 16658437,\n \"rpc\": [\"https://plian-testnet-main.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://16658437.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.plian.io/testnet\"],\n \"shortName\": \"plian-testnet\",\n \"slug\": \"plian-testnet-main\",\n \"testnet\": true\n};\n\nvar c18289463 = {\n \"chain\": \"ILT\",\n \"chainId\": 18289463,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://iolite.io\",\n \"name\": \"IOLite\",\n \"nativeCurrency\": {\n \"name\": \"IOLite Ether\",\n \"symbol\": \"ILT\",\n \"decimals\": 18\n },\n \"networkId\": 18289463,\n \"rpc\": [\"https://iolite.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://18289463.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://net.iolite.io\"],\n \"shortName\": \"ilt\",\n \"slug\": \"iolite\",\n \"testnet\": false\n};\n\nvar c20180430 = {\n \"chain\": \"Spectrum\",\n \"chainId\": 20180430,\n \"explorers\": [{\n \"name\": \"spectrum\",\n \"url\": \"https://spectrum.pub\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://smartmesh.io\",\n \"name\": \"SmartMesh Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"SmartMesh Native Token\",\n \"symbol\": \"SMT\",\n \"decimals\": 18\n },\n \"networkId\": 1,\n \"rpc\": [\"https://smartmesh.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20180430.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://jsonapi1.smartmesh.cn\"],\n \"shortName\": \"spectrum\",\n \"slug\": \"smartmesh\",\n \"testnet\": false\n};\n\nvar c20181205 = {\n \"chain\": \"QKI\",\n \"chainId\": 20181205,\n \"explorers\": [{\n \"name\": \"qkiscan\",\n \"url\": \"https://qkiscan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://quarkblockchain.org/\",\n \"name\": \"quarkblockchain\",\n \"nativeCurrency\": {\n \"name\": \"quarkblockchain Native Token\",\n \"symbol\": \"QKI\",\n \"decimals\": 18\n },\n \"networkId\": 20181205,\n \"rpc\": [\"https://quarkblockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20181205.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://hz.rpc.qkiscan.cn\", \"https://jp.rpc.qkiscan.io\", \"https://rpc1.qkiscan.io\", \"https://rpc2.qkiscan.io\", \"https://rpc3.qkiscan.io\"],\n \"shortName\": \"qki\",\n \"slug\": \"quarkblockchain\",\n \"testnet\": false\n};\n\nvar c20201022 = {\n \"chain\": \"PEGO\",\n \"chainId\": 20201022,\n \"explorers\": [{\n \"name\": \"Pego Network Explorer\",\n \"url\": \"https://scan.pego.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmVf1afskRHuZjFSLCZH8397KrVNAoYgyAePX9VMBrPVtx\",\n \"width\": 246,\n \"height\": 247,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://pego.network\",\n \"name\": \"Pego Network\",\n \"nativeCurrency\": {\n \"name\": \"Pego Native Token\",\n \"symbol\": \"PG\",\n \"decimals\": 18\n },\n \"networkId\": 20201022,\n \"rpc\": [\"https://pego-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://20201022.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://pegorpc.com\", \"https://node1.pegorpc.com\", \"https://node2.pegorpc.com\", \"https://node3.pegorpc.com\"],\n \"shortName\": \"pg\",\n \"slug\": \"pego-network\",\n \"testnet\": false\n};\n\nvar c22052002 = {\n \"chain\": \"XLON\",\n \"chainId\": 22052002,\n \"explorers\": [{\n \"name\": \"Excelon explorer\",\n \"url\": \"https://explorer.excelon.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTV45o4jTe6ayscF1XWh1WXk5DPck4QohR5kQocSWjvQP\",\n \"width\": 300,\n \"height\": 300,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://xlon.org\",\n \"name\": \"Excelon Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Excelon\",\n \"symbol\": \"xlon\",\n \"decimals\": 18\n },\n \"networkId\": 22052002,\n \"rpc\": [\"https://excelon.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://22052002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://edgewallet1.xlon.org/\"],\n \"shortName\": \"xlon\",\n \"slug\": \"excelon\",\n \"testnet\": false\n};\n\nvar c27082017 = {\n \"chain\": \"TEXL\",\n \"chainId\": 27082017,\n \"explorers\": [{\n \"name\": \"exlscan\",\n \"url\": \"https://testnet-explorer.exlscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeooM7QicT1YbgY93XPd5p7JsCjYhN3qjWt68X57g6bVC\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://faucet.exlscan.com\"],\n \"icon\": {\n \"url\": \"ipfs://QmeooM7QicT1YbgY93XPd5p7JsCjYhN3qjWt68X57g6bVC\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"name\": \"Excoincial Chain Volta-Testnet\",\n \"nativeCurrency\": {\n \"name\": \"TExlcoin\",\n \"symbol\": \"TEXL\",\n \"decimals\": 18\n },\n \"networkId\": 27082017,\n \"rpc\": [\"https://excoincial-chain-volta-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://27082017.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet-rpc.exlscan.com\"],\n \"shortName\": \"exlvolta\",\n \"slug\": \"excoincial-chain-volta-testnet\",\n \"testnet\": true\n};\n\nvar c27082022 = {\n \"chain\": \"EXL\",\n \"chainId\": 27082022,\n \"explorers\": [{\n \"name\": \"exlscan\",\n \"url\": \"https://exlscan.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmeooM7QicT1YbgY93XPd5p7JsCjYhN3qjWt68X57g6bVC\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmeooM7QicT1YbgY93XPd5p7JsCjYhN3qjWt68X57g6bVC\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n },\n \"name\": \"Excoincial Chain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Exlcoin\",\n \"symbol\": \"EXL\",\n \"decimals\": 18\n },\n \"networkId\": 27082022,\n \"rpc\": [\"https://excoincial-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://27082022.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.exlscan.com\"],\n \"shortName\": \"exl\",\n \"slug\": \"excoincial-chain\",\n \"testnet\": false\n};\n\nvar c28945486 = {\n \"chain\": \"AUX\",\n \"chainId\": 28945486,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://auxilium.global\",\n \"name\": \"Auxilium Network Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Auxilium coin\",\n \"symbol\": \"AUX\",\n \"decimals\": 18\n },\n \"networkId\": 28945486,\n \"rpc\": [\"https://auxilium-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://28945486.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.auxilium.global\"],\n \"shortName\": \"auxi\",\n \"slip44\": 344,\n \"slug\": \"auxilium-network\",\n \"testnet\": false\n};\n\nvar c29032022 = {\n \"chain\": \"FLX\",\n \"chainId\": 29032022,\n \"explorers\": [{\n \"name\": \"FLXExplorer\",\n \"url\": \"https://explorer.flaexchange.top\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://bafybeiadlvc4pfiykehyt2z67nvgt5w4vlov27olu5obvmryv4xzua4tae\",\n \"width\": 256,\n \"height\": 256,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://www.flaexchange.top\",\n \"name\": \"Flachain Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Flacoin\",\n \"symbol\": \"FLA\",\n \"decimals\": 18\n },\n \"networkId\": 29032022,\n \"rpc\": [\"https://flachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://29032022.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://flachain.flaexchange.top/\"],\n \"shortName\": \"fla\",\n \"slug\": \"flachain\",\n \"testnet\": false\n};\n\nvar c31415926 = {\n \"chain\": \"FIL\",\n \"chainId\": 31415926,\n \"explorers\": [],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmS9r9XQkMHVomWcSBNDkKkz9n87h9bH9ssabeiKZtANoU\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://filecoin.io\",\n \"name\": \"Filecoin - Local testnet\",\n \"nativeCurrency\": {\n \"name\": \"testnet filecoin\",\n \"symbol\": \"tFIL\",\n \"decimals\": 18\n },\n \"networkId\": 31415926,\n \"rpc\": [],\n \"shortName\": \"filecoin-local\",\n \"slip44\": 1,\n \"slug\": \"filecoin-local-testnet\",\n \"status\": \"incubating\",\n \"testnet\": true\n};\n\nvar c35855456 = {\n \"chain\": \"JOYS\",\n \"chainId\": 35855456,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://joys.digital\",\n \"name\": \"Joys Digital Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"JOYS\",\n \"symbol\": \"JOYS\",\n \"decimals\": 18\n },\n \"networkId\": 35855456,\n \"rpc\": [\"https://joys-digital.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://35855456.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://node.joys.digital\"],\n \"shortName\": \"JOYS\",\n \"slug\": \"joys-digital\",\n \"testnet\": false\n};\n\nvar c43214913 = {\n \"chain\": \"MAI\",\n \"chainId\": 43214913,\n \"explorers\": [{\n \"name\": \"maistesntet\",\n \"url\": \"http://174.138.9.169:3006/?network=maistesntet\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"name\": \"maistestsubnet\",\n \"nativeCurrency\": {\n \"name\": \"maistestsubnet\",\n \"symbol\": \"MAI\",\n \"decimals\": 18\n },\n \"networkId\": 43214913,\n \"rpc\": [\"https://maistestsubnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://43214913.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://174.138.9.169:9650/ext/bc/VUKSzFZKckx4PoZF9gX5QAqLPxbLzvu1vcssPG5QuodaJtdHT/rpc\"],\n \"shortName\": \"mais\",\n \"slug\": \"maistestsubnet\",\n \"testnet\": true\n};\n\nvar c61717561 = {\n \"chain\": \"AQUA\",\n \"chainId\": 61717561,\n \"explorers\": [],\n \"faucets\": [\"https://aquacha.in/faucet\"],\n \"infoURL\": \"https://aquachain.github.io\",\n \"name\": \"Aquachain\",\n \"nativeCurrency\": {\n \"name\": \"Aquachain Ether\",\n \"symbol\": \"AQUA\",\n \"decimals\": 18\n },\n \"networkId\": 61717561,\n \"rpc\": [\"https://aquachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://61717561.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://c.onical.org\", \"https://tx.aquacha.in/api\"],\n \"shortName\": \"aqua\",\n \"slip44\": 61717561,\n \"slug\": \"aquachain\",\n \"testnet\": false\n};\n\nvar c65010001 = {\n \"chain\": \"AUT\",\n \"chainId\": 65010001,\n \"explorers\": [{\n \"name\": \"autonity-blockscout\",\n \"url\": \"https://bakerloo.autonity.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.autonity.org/\"],\n \"icon\": {\n \"url\": \"ipfs://Qme5nxFZZoNNpiT8u9WwcBot4HyLTg2jxMxRnsbc5voQwB\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://autonity.org/\",\n \"name\": \"Autonity Bakerloo (Barada) Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Bakerloo Auton\",\n \"symbol\": \"ATN\",\n \"decimals\": 18\n },\n \"networkId\": 65010001,\n \"rpc\": [\"https://autonity-bakerloo-barada-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://65010001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.bakerloo.autonity.org/\", \"wss://rpc1.bakerloo.autonity.org/ws/\"],\n \"shortName\": \"bakerloo-01\",\n \"slug\": \"autonity-bakerloo-barada-testnet\",\n \"testnet\": true\n};\n\nvar c65100000 = {\n \"chain\": \"AUT\",\n \"chainId\": 65100000,\n \"explorers\": [{\n \"name\": \"autonity-blockscout\",\n \"url\": \"https://piccadilly.autonity.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.autonity.org/\"],\n \"icon\": {\n \"url\": \"ipfs://Qme5nxFZZoNNpiT8u9WwcBot4HyLTg2jxMxRnsbc5voQwB\",\n \"width\": 1000,\n \"height\": 1000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://autonity.org/\",\n \"name\": \"Autonity Piccadilly (Thames) Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Piccadilly Auton\",\n \"symbol\": \"ATN\",\n \"decimals\": 18\n },\n \"networkId\": 65100000,\n \"rpc\": [\"https://autonity-piccadilly-thames-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://65100000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc1.piccadilly.autonity.org/\", \"wss://rpc1.piccadilly.autonity.org/ws/\"],\n \"shortName\": \"piccadilly-0\",\n \"slug\": \"autonity-piccadilly-thames-testnet\",\n \"testnet\": true\n};\n\nvar c68840142 = {\n \"chain\": \"ETH\",\n \"chainId\": 68840142,\n \"explorers\": [{\n \"name\": \"Frame Testnet Explorer\",\n \"url\": \"https://explorer.testnet.frame.xyz/\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.triangleplatform.com/frame\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRxeKFwBwrXyDksoN4NzNRp3R35s8pVnTBfBj4AJSCq5g\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://frame.xyz\",\n \"name\": \"Frame Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 68840142,\n \"redFlags\": [],\n \"rpc\": [\"https://frame-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://68840142.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.testnet.frame.xyz/http\"],\n \"shortName\": \"frame-test\",\n \"slug\": \"frame-testnet\",\n \"testnet\": true\n};\n\nvar c88888888 = {\n \"chain\": \"TEAM\",\n \"chainId\": 88888888,\n \"explorers\": [{\n \"name\": \"teamscan\",\n \"url\": \"https://teamblockchain.team\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }, {\n \"name\": \"EIP1559\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmcnA15BLE9uvznbugXKjqquizZs1eLPeEEkc92DSmvhmt\",\n \"width\": 248,\n \"height\": 248,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://teamblockchain.team\",\n \"name\": \"T.E.A.M Blockchain\",\n \"nativeCurrency\": {\n \"name\": \"TEAM\",\n \"symbol\": \"$TEAM\",\n \"decimals\": 18\n },\n \"networkId\": 88888888,\n \"rpc\": [\"https://t-e-a-m-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://88888888.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.teamblockchain.team\"],\n \"shortName\": \"team\",\n \"slug\": \"t-e-a-m-blockchain\",\n \"testnet\": false\n};\n\nvar c99415706 = {\n \"chain\": \"TOYS\",\n \"chainId\": 99415706,\n \"explorers\": [],\n \"faucets\": [\"https://faucet.joys.digital/\"],\n \"infoURL\": \"https://joys.digital\",\n \"name\": \"Joys Digital TestNet\",\n \"nativeCurrency\": {\n \"name\": \"TOYS\",\n \"symbol\": \"TOYS\",\n \"decimals\": 18\n },\n \"networkId\": 99415706,\n \"rpc\": [\"https://joys-digital-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://99415706.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://toys.joys.cash/\"],\n \"shortName\": \"TOYS\",\n \"slug\": \"joys-digital-testnet\",\n \"testnet\": true\n};\n\nvar c192837465 = {\n \"chain\": \"GTH\",\n \"chainId\": 192837465,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://explorer.gather.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTYR8CeFiNbJ1zJHnE3DK2wEN18r2y2vqSKUcLweUT2Gz\",\n \"width\": 1080,\n \"height\": 1080,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc9AJGg9aNhoH56n3deaZeUc8Ty1jDYJsW6Lu6hgSZH4S\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gather.network\",\n \"name\": \"Gather Mainnet Network\",\n \"nativeCurrency\": {\n \"name\": \"Gather\",\n \"symbol\": \"GTH\",\n \"decimals\": 18\n },\n \"networkId\": 192837465,\n \"redFlags\": [],\n \"rpc\": [\"https://gather-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://192837465.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.gather.network\"],\n \"shortName\": \"GTH\",\n \"slug\": \"gather-network\",\n \"testnet\": false\n};\n\nvar c222000222 = {\n \"chain\": \"Kanazawa\",\n \"chainId\": 222000222,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://subnets-test.avax.network/meld\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED\",\n \"width\": 4000,\n \"height\": 4000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED\",\n \"width\": 4000,\n \"height\": 4000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://meld.com\",\n \"name\": \"Kanazawa\",\n \"nativeCurrency\": {\n \"name\": \"gMeld\",\n \"symbol\": \"gMELD\",\n \"decimals\": 18\n },\n \"networkId\": 222000222,\n \"rpc\": [\"https://kanazawa.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://222000222.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/meld/testnet/rpc\"],\n \"shortName\": \"kanazawa\",\n \"slug\": \"kanazawa\",\n \"testnet\": true,\n \"title\": \"Meld Testnet Kanazawa\"\n};\n\nvar c245022926 = {\n \"chain\": \"Solana\",\n \"chainId\": 245022926,\n \"explorers\": [{\n \"name\": \"blockscout\",\n \"url\": \"https://neon-devnet.blockscout.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM\",\n \"width\": 551,\n \"height\": 540,\n \"format\": \"png\"\n }\n }, {\n \"name\": \"neonscan\",\n \"url\": \"https://devnet.neonscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://neonfaucet.org\"],\n \"icon\": {\n \"url\": \"ipfs://Qmcxevb3v8PEvnvfYgcG3bCBuPhe5YAdsHeaufDChSSR3Q\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://neon-labs.org\",\n \"name\": \"Neon EVM Devnet\",\n \"nativeCurrency\": {\n \"name\": \"Neon\",\n \"symbol\": \"NEON\",\n \"decimals\": 18\n },\n \"networkId\": 245022926,\n \"rpc\": [\"https://neon-evm-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://245022926.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet.neonevm.org\"],\n \"shortName\": \"neonevm-devnet\",\n \"slug\": \"neon-evm-devnet\",\n \"testnet\": false\n};\n\nvar c245022934 = {\n \"chain\": \"Solana\",\n \"chainId\": 245022934,\n \"explorers\": [{\n \"name\": \"neonscan\",\n \"url\": \"https://neonscan.org\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"native\",\n \"url\": \"https://neon.blockscout.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmcxevb3v8PEvnvfYgcG3bCBuPhe5YAdsHeaufDChSSR3Q\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://neonevm.org\",\n \"name\": \"Neon EVM Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Neon\",\n \"symbol\": \"NEON\",\n \"decimals\": 18\n },\n \"networkId\": 245022934,\n \"rpc\": [\"https://neon-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://245022934.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://neon-proxy-mainnet.solana.p2p.org\"],\n \"shortName\": \"neonevm-mainnet\",\n \"slug\": \"neon-evm\",\n \"testnet\": false\n};\n\nvar c245022940 = {\n \"chain\": \"Solana\",\n \"chainId\": 245022940,\n \"explorers\": [{\n \"name\": \"native\",\n \"url\": \"https://testnet.explorer.neon-labs.org\",\n \"standard\": \"EIP3091\"\n }, {\n \"name\": \"neonscan\",\n \"url\": \"https://testnet.neonscan.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmcxevb3v8PEvnvfYgcG3bCBuPhe5YAdsHeaufDChSSR3Q\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://neon-labs.org\",\n \"name\": \"Neon EVM TestNet\",\n \"nativeCurrency\": {\n \"name\": \"Neon\",\n \"symbol\": \"NEON\",\n \"decimals\": 18\n },\n \"networkId\": 245022940,\n \"rpc\": [\"https://neon-evm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://245022940.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.neonevm.org\"],\n \"shortName\": \"neonevm-testnet\",\n \"slug\": \"neon-evm-testnet\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nvar c278611351 = {\n \"chain\": \"Razor Schain\",\n \"chainId\": 278611351,\n \"explorers\": [{\n \"name\": \"turbulent-unique-scheat\",\n \"url\": \"https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.razorscan.io/\"],\n \"icon\": {\n \"url\": \"ipfs://QmUdwAZJfyKGZnfPGDsCnNvGu123mdd57kTGj1Y3EWVuWK\",\n \"width\": 900,\n \"height\": 900,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://razor.network\",\n \"name\": \"Razor Skale Chain\",\n \"nativeCurrency\": {\n \"name\": \"sFuel\",\n \"symbol\": \"SFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 278611351,\n \"rpc\": [\"https://razor-skale-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://278611351.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/turbulent-unique-scheat\"],\n \"shortName\": \"razor\",\n \"slug\": \"razor-skale-chain\",\n \"testnet\": false\n};\n\nvar c311752642 = {\n \"chain\": \"OLT\",\n \"chainId\": 311752642,\n \"explorers\": [{\n \"name\": \"OneLedger Block Explorer\",\n \"url\": \"https://mainnet-explorer.oneledger.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRhqq4Gp8G9w27ND3LeFW49o5PxcxrbJsqHbpBFtzEMfC\",\n \"width\": 225,\n \"height\": 225,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oneledger.io\",\n \"name\": \"OneLedger Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"OLT\",\n \"symbol\": \"OLT\",\n \"decimals\": 18\n },\n \"networkId\": 311752642,\n \"rpc\": [\"https://oneledger.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://311752642.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet-rpc.oneledger.network\"],\n \"shortName\": \"oneledger\",\n \"slug\": \"oneledger\",\n \"testnet\": false\n};\n\nvar c333000333 = {\n \"chain\": \"MELD\",\n \"chainId\": 333000333,\n \"explorers\": [{\n \"name\": \"explorer\",\n \"url\": \"https://subnets.avax.network/meld\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED\",\n \"width\": 4000,\n \"height\": 4000,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED\",\n \"width\": 4000,\n \"height\": 4000,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://meld.com\",\n \"name\": \"Meld\",\n \"nativeCurrency\": {\n \"name\": \"gMeld\",\n \"symbol\": \"gMELD\",\n \"decimals\": 18\n },\n \"networkId\": 333000333,\n \"rpc\": [\"https://meld.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://333000333.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://subnets.avax.network/meld/mainnet/rpc\"],\n \"shortName\": \"meld\",\n \"slug\": \"meld\",\n \"testnet\": false,\n \"title\": \"Meld Mainnet\"\n};\n\nvar c344106930 = {\n \"chain\": \"staging-utter-unripe-menkar\",\n \"chainId\": 344106930,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://staging-utter-unripe-menkar.explorer.staging-v3.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.dirtroad.dev/staging\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m\",\n \"width\": 1637,\n \"height\": 1636,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://calypsohub.network/\",\n \"name\": \"SKALE Calypso Hub Testnet\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 344106930,\n \"rpc\": [\"https://skale-calypso-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://344106930.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging-v3.skalenodes.com/v1/staging-utter-unripe-menkar\"],\n \"shortName\": \"calypso-testnet\",\n \"slug\": \"skale-calypso-hub-testnet\",\n \"testnet\": true,\n \"title\": \"Calypso NFT Hub Testnet\"\n};\n\nvar c356256156 = {\n \"chain\": \"GTH\",\n \"chainId\": 356256156,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://testnet-explorer.gather.network\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTYR8CeFiNbJ1zJHnE3DK2wEN18r2y2vqSKUcLweUT2Gz\",\n \"width\": 1080,\n \"height\": 1080,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [\"https://testnet-faucet.gather.network/\"],\n \"features\": [],\n \"icon\": {\n \"url\": \"ipfs://Qmc9AJGg9aNhoH56n3deaZeUc8Ty1jDYJsW6Lu6hgSZH4S\",\n \"width\": 512,\n \"height\": 512,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://gather.network\",\n \"name\": \"Gather Testnet Network\",\n \"nativeCurrency\": {\n \"name\": \"Gather\",\n \"symbol\": \"GTH\",\n \"decimals\": 18\n },\n \"networkId\": 356256156,\n \"redFlags\": [],\n \"rpc\": [\"https://gather-testnet-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://356256156.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.gather.network\"],\n \"shortName\": \"tGTH\",\n \"slug\": \"gather-testnet-network\",\n \"testnet\": true\n};\n\nvar c476158412 = {\n \"chain\": \"staging-legal-crazy-castor\",\n \"chainId\": 476158412,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://staging-legal-crazy-castor.explorer.staging-v3.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.dirtroad.dev/staging\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiezcwowhm6xjrkt44cmiu6ml36rhrxx3amcg3cfkcntv2vgcvgbre\",\n \"width\": 600,\n \"height\": 600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://europahub.network/\",\n \"name\": \"SKALE Europa Hub Testnet\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 476158412,\n \"rpc\": [\"https://skale-europa-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://476158412.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging-v3.skalenodes.com/v1/staging-legal-crazy-castor\"],\n \"shortName\": \"europa-testnet\",\n \"slug\": \"skale-europa-hub-testnet\",\n \"testnet\": true,\n \"title\": \"Europa Hub Testnet\"\n};\n\nvar c486217935 = {\n \"chain\": \"GTH\",\n \"chainId\": 486217935,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://devnet-explorer.gather.network\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://gather.network\",\n \"name\": \"Gather Devnet Network\",\n \"nativeCurrency\": {\n \"name\": \"Gather\",\n \"symbol\": \"GTH\",\n \"decimals\": 18\n },\n \"networkId\": 486217935,\n \"rpc\": [\"https://gather-devnet-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://486217935.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://devnet.gather.network\"],\n \"shortName\": \"dGTH\",\n \"slug\": \"gather-devnet-network\",\n \"testnet\": false\n};\n\nvar c503129905 = {\n \"chain\": \"staging-faint-slimy-achird\",\n \"chainId\": 503129905,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://staging-faint-slimy-achird.explorer.staging-v3.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.dirtroad.dev/staging\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeic5eexvd34wfy4kuebcyu73qpkv3x57s54ebzjyhyjsmeuni5jwcm\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nebulachain.io/\",\n \"name\": \"SKALE Nebula Hub Testnet\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 503129905,\n \"rpc\": [\"https://skale-nebula-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://503129905.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging-v3.skalenodes.com/v1/staging-faint-slimy-achird\", \"wss://staging-v3.skalenodes.com/v1/ws/staging-faint-slimy-achird\"],\n \"shortName\": \"nebula-testnet\",\n \"slug\": \"skale-nebula-hub-testnet\",\n \"testnet\": true\n};\n\nvar c999999999 = {\n \"chain\": \"ETH\",\n \"chainId\": 999999999,\n \"explorers\": [{\n \"name\": \"Zora Sepolia Testnet Network Explorer\",\n \"url\": \"https://sepolia.explorer.zora.energy\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreifvrly5tgd34xqeo67s4etmiu52bkroml7uy7eosizf57htf5nrzq\",\n \"width\": 250,\n \"height\": 250,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://zora.energy\",\n \"name\": \"Zora Sepolia Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Sepolia Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 999999999,\n \"rpc\": [\"https://zora-sepolia-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://999999999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://sepolia.rpc.zora.energy\"],\n \"shortName\": \"zsep\",\n \"slug\": \"zora-sepolia-testnet\",\n \"testnet\": true\n};\n\nvar c1122334455 = {\n \"chain\": \"IPOS\",\n \"chainId\": 1122334455,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://iposlab.com\",\n \"name\": \"IPOS Network\",\n \"nativeCurrency\": {\n \"name\": \"IPOS Network Ether\",\n \"symbol\": \"IPOS\",\n \"decimals\": 18\n },\n \"networkId\": 1122334455,\n \"rpc\": [\"https://ipos-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1122334455.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.iposlab.com\", \"https://rpc2.iposlab.com\"],\n \"shortName\": \"ipos\",\n \"slug\": \"ipos-network\",\n \"testnet\": false\n};\n\nvar c1146703430 = {\n \"chain\": \"cyberdeck\",\n \"chainId\": 1146703430,\n \"explorers\": [{\n \"name\": \"CybEthExplorer\",\n \"url\": \"http://cybeth1.cyberdeck.eu:8000\",\n \"standard\": \"none\",\n \"icon\": {\n \"url\": \"ipfs://QmTvYMJXeZeWxYPuoQ15mHCS8K5EQzkMMCHQVs3GshooyR\",\n \"width\": 193,\n \"height\": 214,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmTvYMJXeZeWxYPuoQ15mHCS8K5EQzkMMCHQVs3GshooyR\",\n \"width\": 193,\n \"height\": 214,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://cyberdeck.eu\",\n \"name\": \"CyberdeckNet\",\n \"nativeCurrency\": {\n \"name\": \"Cyb\",\n \"symbol\": \"CYB\",\n \"decimals\": 18\n },\n \"networkId\": 1146703430,\n \"rpc\": [\"https://cyberdecknet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1146703430.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"http://cybeth1.cyberdeck.eu:8545\"],\n \"shortName\": \"cyb\",\n \"slug\": \"cyberdecknet\",\n \"status\": \"active\",\n \"testnet\": false\n};\n\nvar c1273227453 = {\n \"chain\": \"wan-red-ain\",\n \"chainId\": 1273227453,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://wan-red-ain.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://dashboard.humanprotocol.org/faucet\"],\n \"infoURL\": \"https://www.humanprotocol.org\",\n \"name\": \"HUMAN Protocol\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1273227453,\n \"rpc\": [\"https://human-protocol.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1273227453.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/wan-red-ain\"],\n \"shortName\": \"human-mainnet\",\n \"slug\": \"human-protocol\",\n \"testnet\": false,\n \"title\": \"HUMAN Protocol\"\n};\n\nvar c1313161554 = {\n \"chain\": \"NEAR\",\n \"chainId\": 1313161554,\n \"explorers\": [{\n \"name\": \"aurorascan.dev\",\n \"url\": \"https://aurorascan.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://aurora.dev\",\n \"name\": \"Aurora Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1313161554,\n \"rpc\": [\"https://aurora.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1313161554.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.aurora.dev\"],\n \"shortName\": \"aurora\",\n \"slug\": \"aurora\",\n \"testnet\": false\n};\n\nvar c1313161555 = {\n \"chain\": \"NEAR\",\n \"chainId\": 1313161555,\n \"explorers\": [{\n \"name\": \"aurorascan.dev\",\n \"url\": \"https://testnet.aurorascan.dev\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://aurora.dev\",\n \"name\": \"Aurora Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1313161555,\n \"rpc\": [\"https://aurora-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1313161555.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.aurora.dev/\"],\n \"shortName\": \"aurora-testnet\",\n \"slug\": \"aurora-testnet\",\n \"testnet\": true\n};\n\nvar c1313161556 = {\n \"chain\": \"NEAR\",\n \"chainId\": 1313161556,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://aurora.dev\",\n \"name\": \"Aurora Betanet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 1313161556,\n \"rpc\": [],\n \"shortName\": \"aurora-betanet\",\n \"slug\": \"aurora-betanet\",\n \"testnet\": false\n};\n\nvar c1350216234 = {\n \"chain\": \"parallel-stormy-spica\",\n \"chainId\": 1350216234,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://parallel-stormy-spica.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.skale.network/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiagrt5dhgltg2kmw7hf24kslstr5h42e745luuxwp2wbg24gm6zza\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"name\": \"SKALE Titan Hub\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1350216234,\n \"rpc\": [\"https://skale-titan-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1350216234.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/parallel-stormy-spica\", \"wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica\"],\n \"shortName\": \"titan-mainnet\",\n \"slug\": \"skale-titan-hub\",\n \"testnet\": false\n};\n\nvar c1351057110 = {\n \"chain\": \"staging-fast-active-bellatrix\",\n \"chainId\": 1351057110,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://staging-fast-active-bellatrix.explorer.staging-v3.skalenodes.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmbYYCoU2G4LUfRr9ofGowF3eatfvWv9FiPVhqKndZeqwA\",\n \"width\": 400,\n \"height\": 400,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [\"https://sfuel.skale.network/staging/chaos\"],\n \"infoURL\": \"https://docs.skale.network/develop/\",\n \"name\": \"Chaos (SKALE Testnet)\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1351057110,\n \"rpc\": [\"https://chaos-skale-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1351057110.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging-v3.skalenodes.com/v1/staging-fast-active-bellatrix\"],\n \"shortName\": \"chaos-tenet\",\n \"slug\": \"chaos-skale-testnet\",\n \"testnet\": true,\n \"title\": \"Chaos Testnet\"\n};\n\nvar c1380996178 = {\n \"chain\": \"RPTR\",\n \"chainId\": 1380996178,\n \"explorers\": [{\n \"name\": \"RaptorChain Explorer\",\n \"url\": \"https://explorer.raptorchain.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmQuvmiN6vM6Rqzqe1pMzDf8iZXqTtSeqCgGe5k5AyksDU\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n }\n }],\n \"faucets\": [],\n \"features\": [{\n \"name\": \"EIP155\"\n }],\n \"icon\": {\n \"url\": \"ipfs://QmQuvmiN6vM6Rqzqe1pMzDf8iZXqTtSeqCgGe5k5AyksDU\",\n \"width\": 200,\n \"height\": 200,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://raptorchain.io\",\n \"name\": \"RaptorChain\",\n \"nativeCurrency\": {\n \"name\": \"Raptor\",\n \"symbol\": \"RPTR\",\n \"decimals\": 18\n },\n \"networkId\": 1380996178,\n \"rpc\": [\"https://raptorchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1380996178.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.raptorchain.io/web3\"],\n \"shortName\": \"rptr\",\n \"slug\": \"raptorchain\",\n \"testnet\": false\n};\n\nvar c1482601649 = {\n \"chain\": \"green-giddy-denebola\",\n \"chainId\": 1482601649,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://green-giddy-denebola.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.skale.network/\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeic5eexvd34wfy4kuebcyu73qpkv3x57s54ebzjyhyjsmeuni5jwcm\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://nebulachain.io/\",\n \"name\": \"SKALE Nebula Hub\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1482601649,\n \"rpc\": [\"https://skale-nebula-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1482601649.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/green-giddy-denebola\", \"wss://mainnet-proxy.skalenodes.com/v1/ws/green-giddy-denebola\"],\n \"shortName\": \"nebula-mainnet\",\n \"slug\": \"skale-nebula-hub\",\n \"testnet\": false\n};\n\nvar c1517929550 = {\n \"chain\": \"staging-aware-chief-gianfar\",\n \"chainId\": 1517929550,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://staging-aware-chief-gianfar.explorer.staging-v3.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.dirtroad.dev/staging\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiagrt5dhgltg2kmw7hf24kslstr5h42e745luuxwp2wbg24gm6zza\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"png\"\n },\n \"name\": \"SKALE Titan Hub Testnet\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1517929550,\n \"rpc\": [\"https://skale-titan-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1517929550.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://staging-v3.skalenodes.com/v1/staging-aware-chief-gianfar\", \"wss://staging-v3.skalenodes.com/v1/ws/staging-aware-chief-gianfar\"],\n \"shortName\": \"titan-testnet\",\n \"slug\": \"skale-titan-hub-testnet\",\n \"testnet\": true\n};\n\nvar c1564830818 = {\n \"chain\": \"honorable-steel-rasalhague\",\n \"chainId\": 1564830818,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://sfuel.dirtroad.dev\"],\n \"icon\": {\n \"url\": \"ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m\",\n \"width\": 1637,\n \"height\": 1636,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://calypsohub.network/\",\n \"name\": \"SKALE Calypso Hub\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 1564830818,\n \"rpc\": [\"https://skale-calypso-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1564830818.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague\"],\n \"shortName\": \"calypso-mainnet\",\n \"slug\": \"skale-calypso-hub\",\n \"testnet\": false\n};\n\nvar c1666600000 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666600000,\n \"ens\": {\n \"registry\": \"0x4cd2563118e57b19179d8dc033f2b0c5b5d69ff5\"\n },\n \"explorers\": [{\n \"name\": \"Harmony Block Explorer\",\n \"url\": \"https://explorer.harmony.one\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Mainnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666600000,\n \"rpc\": [\"https://harmony-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666600000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.harmony.one\", \"https://a.api.s0.t.hmny.io\", \"https://api.s0.t.hmny.io\", \"https://rpc.ankr.com/harmony\", \"https://harmony.api.onfinality.io/public\", \"https://1rpc.io/one\"],\n \"shortName\": \"hmy-s0\",\n \"slip44\": 1023,\n \"slug\": \"harmony-shard-0\",\n \"testnet\": false\n};\n\nvar c1666600001 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666600001,\n \"explorers\": [{\n \"name\": \"Harmony Block Explorer\",\n \"url\": \"https://explorer.harmony.one/blocks/shard/1\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Mainnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666600001,\n \"rpc\": [\"https://harmony-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666600001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s1.t.hmny.io\"],\n \"shortName\": \"hmy-s1\",\n \"slip44\": 1023,\n \"slug\": \"harmony-shard-1\",\n \"testnet\": false\n};\n\nvar c1666600002 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666600002,\n \"explorers\": [{\n \"name\": \"Harmony Block Explorer\",\n \"url\": \"https://explorer.harmony.one/blocks/shard/2\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Mainnet Shard 2\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666600002,\n \"rpc\": [\"https://harmony-shard-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666600002.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s2.t.hmny.io\"],\n \"shortName\": \"hmy-s2\",\n \"slip44\": 1023,\n \"slug\": \"harmony-shard-2\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c1666600003 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666600003,\n \"explorers\": [{\n \"name\": \"Harmony Block Explorer\",\n \"url\": \"https://explorer.harmony.one/blocks/shard/3\",\n \"standard\": \"none\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Mainnet Shard 3\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666600003,\n \"rpc\": [\"https://harmony-shard-3.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666600003.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s3.t.hmny.io\"],\n \"shortName\": \"hmy-s3\",\n \"slip44\": 1023,\n \"slug\": \"harmony-shard-3\",\n \"status\": \"deprecated\",\n \"testnet\": false\n};\n\nvar c1666700000 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666700000,\n \"explorers\": [{\n \"name\": \"Harmony Testnet Block Explorer\",\n \"url\": \"https://explorer.testnet.harmony.one\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.pops.one\"],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Testnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666700000,\n \"rpc\": [\"https://harmony-testnet-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666700000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s0.b.hmny.io\"],\n \"shortName\": \"hmy-b-s0\",\n \"slug\": \"harmony-testnet-shard-0\",\n \"testnet\": true\n};\n\nvar c1666700001 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666700001,\n \"explorers\": [{\n \"name\": \"Harmony Block Explorer\",\n \"url\": \"https://explorer.testnet.harmony.one\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://faucet.pops.one\"],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Testnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666700001,\n \"rpc\": [\"https://harmony-testnet-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666700001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s1.b.hmny.io\"],\n \"shortName\": \"hmy-b-s1\",\n \"slug\": \"harmony-testnet-shard-1\",\n \"testnet\": true\n};\n\nvar c1666900000 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666900000,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Devnet Shard 0\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666900000,\n \"rpc\": [\"https://harmony-devnet-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666900000.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s0.ps.hmny.io\"],\n \"shortName\": \"hmy-ps-s0\",\n \"slug\": \"harmony-devnet-shard-0\",\n \"testnet\": false\n};\n\nvar c1666900001 = {\n \"chain\": \"Harmony\",\n \"chainId\": 1666900001,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.harmony.one/\",\n \"name\": \"Harmony Devnet Shard 1\",\n \"nativeCurrency\": {\n \"name\": \"ONE\",\n \"symbol\": \"ONE\",\n \"decimals\": 18\n },\n \"networkId\": 1666900001,\n \"rpc\": [\"https://harmony-devnet-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://1666900001.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://api.s1.ps.hmny.io\"],\n \"shortName\": \"hmy-ps-s1\",\n \"slug\": \"harmony-devnet-shard-1\",\n \"testnet\": false\n};\n\nvar c2021121117 = {\n \"chain\": \"HOP\",\n \"chainId\": 2021121117,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://www.DataHopper.com\",\n \"name\": \"DataHopper\",\n \"nativeCurrency\": {\n \"name\": \"DataHoppers\",\n \"symbol\": \"HOP\",\n \"decimals\": 18\n },\n \"networkId\": 2021121117,\n \"rpc\": [\"https://datahopper.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2021121117.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://23.92.21.121:8545\"],\n \"shortName\": \"hop\",\n \"slug\": \"datahopper\",\n \"testnet\": false\n};\n\nvar c2046399126 = {\n \"chain\": \"europa\",\n \"chainId\": 2046399126,\n \"explorers\": [{\n \"name\": \"Blockscout\",\n \"url\": \"https://elated-tan-skat.explorer.mainnet.skalenodes.com\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://ruby.exchange/faucet.html\", \"https://sfuel.mylilius.com/\"],\n \"icon\": {\n \"url\": \"ipfs://bafkreiezcwowhm6xjrkt44cmiu6ml36rhrxx3amcg3cfkcntv2vgcvgbre\",\n \"width\": 600,\n \"height\": 600,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://europahub.network/\",\n \"name\": \"SKALE Europa Hub\",\n \"nativeCurrency\": {\n \"name\": \"sFUEL\",\n \"symbol\": \"sFUEL\",\n \"decimals\": 18\n },\n \"networkId\": 2046399126,\n \"parent\": {\n \"type\": \"L2\",\n \"chain\": \"eip155-1\",\n \"bridges\": [{\n \"url\": \"https://ruby.exchange/bridge.html\"\n }]\n },\n \"rpc\": [\"https://skale-europa-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2046399126.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.skalenodes.com/v1/elated-tan-skat\", \"wss://mainnet.skalenodes.com/v1/elated-tan-skat\"],\n \"shortName\": \"europa\",\n \"slug\": \"skale-europa-hub\",\n \"testnet\": false\n};\n\nvar c2863311531 = {\n \"chain\": \"Ancient8\",\n \"chainId\": 2863311531,\n \"explorers\": [{\n \"name\": \"a8scan-testnet\",\n \"url\": \"https://testnet.a8scan.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSX8sHToRzyFupT8BvPQjVsegRWFYz2mdnLkVnqBFKohY\",\n \"width\": 901,\n \"height\": 901,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://ancient8.gg/\",\n \"name\": \"Ancient8 Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 2863311531,\n \"rpc\": [\"https://ancient8-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://2863311531.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc-testnet.ancient8.gg\"],\n \"shortName\": \"a8\",\n \"slug\": \"ancient8-testnet\",\n \"testnet\": true\n};\n\nvar c3125659152 = {\n \"chain\": \"PIRL\",\n \"chainId\": 3125659152,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://pirl.io\",\n \"name\": \"Pirl\",\n \"nativeCurrency\": {\n \"name\": \"Pirl Ether\",\n \"symbol\": \"PIRL\",\n \"decimals\": 18\n },\n \"networkId\": 3125659152,\n \"rpc\": [\"https://pirl.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://3125659152.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://wallrpc.pirl.io\"],\n \"shortName\": \"pirl\",\n \"slip44\": 164,\n \"slug\": \"pirl\",\n \"testnet\": false\n};\n\nvar c4216137055 = {\n \"chain\": \"OLT\",\n \"chainId\": 4216137055,\n \"explorers\": [{\n \"name\": \"OneLedger Block Explorer\",\n \"url\": \"https://frankenstein-explorer.oneledger.network\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://frankenstein-faucet.oneledger.network\"],\n \"icon\": {\n \"url\": \"ipfs://QmRhqq4Gp8G9w27ND3LeFW49o5PxcxrbJsqHbpBFtzEMfC\",\n \"width\": 225,\n \"height\": 225,\n \"format\": \"png\"\n },\n \"infoURL\": \"https://oneledger.io\",\n \"name\": \"OneLedger Testnet Frankenstein\",\n \"nativeCurrency\": {\n \"name\": \"OLT\",\n \"symbol\": \"OLT\",\n \"decimals\": 18\n },\n \"networkId\": 4216137055,\n \"rpc\": [\"https://oneledger-testnet-frankenstein.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://4216137055.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://frankenstein-rpc.oneledger.network\"],\n \"shortName\": \"frankenstein\",\n \"slug\": \"oneledger-testnet-frankenstein\",\n \"testnet\": true\n};\n\nvar c11297108099 = {\n \"chain\": \"Palm\",\n \"chainId\": 11297108099,\n \"explorers\": [{\n \"name\": \"Palm Testnet Explorer\",\n \"url\": \"https://explorer.palm-uat.xyz\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihifvvbq6xzviygveivayogqiotdtpjvilu27bgqobduqemzeq7o4\",\n \"width\": 72,\n \"height\": 72,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://palm.io\",\n \"name\": \"Palm Testnet\",\n \"nativeCurrency\": {\n \"name\": \"PALM\",\n \"symbol\": \"PALM\",\n \"decimals\": 18\n },\n \"networkId\": 11297108099,\n \"rpc\": [\"https://palm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11297108099.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://palm-testnet.infura.io/v3/${INFURA_API_KEY}\"],\n \"shortName\": \"tpalm\",\n \"slug\": \"palm-testnet\",\n \"testnet\": true\n};\n\nvar c11297108109 = {\n \"chain\": \"Palm\",\n \"chainId\": 11297108109,\n \"explorers\": [{\n \"name\": \"Palm Explorer\",\n \"url\": \"https://explorer.palm.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://bafkreihifvvbq6xzviygveivayogqiotdtpjvilu27bgqobduqemzeq7o4\",\n \"width\": 72,\n \"height\": 72,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://palm.io\",\n \"name\": \"Palm\",\n \"nativeCurrency\": {\n \"name\": \"PALM\",\n \"symbol\": \"PALM\",\n \"decimals\": 18\n },\n \"networkId\": 11297108109,\n \"rpc\": [\"https://palm.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://11297108109.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://palm-mainnet.infura.io/v3/${INFURA_API_KEY}\"],\n \"shortName\": \"palm\",\n \"slug\": \"palm\",\n \"testnet\": false\n};\n\nvar c47279324479 = {\n \"chain\": \"Xai Goerli Orbit Testnet\",\n \"chainId\": 47279324479,\n \"explorers\": [{\n \"name\": \"Xai Goerli Testnet Explorer\",\n \"url\": \"https://testnet-explorer.xai-chain.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"features\": [],\n \"infoURL\": \"https://xai.games/\",\n \"name\": \"Xai Goerli Orbit\",\n \"nativeCurrency\": {\n \"name\": \"Xai Goerli Ether\",\n \"symbol\": \"ETH\",\n \"decimals\": 18\n },\n \"networkId\": 47279324479,\n \"redFlags\": [],\n \"rpc\": [\"https://xai-goerli-orbit.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://47279324479.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://testnet.xai-chain.net/rpc\"],\n \"shortName\": \"xai-goerli\",\n \"slug\": \"xai-goerli-orbit\",\n \"testnet\": true\n};\n\nvar c111222333444 = {\n \"chain\": \"Alphabet Network\",\n \"chainId\": 111222333444,\n \"explorers\": [{\n \"name\": \"Alphabet Explorer\",\n \"url\": \"https://scan.alphabetnetwork.org\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmfTeudwVJcu7jzySBcpD9H5ZVK66nPJKRnicxend1bxfq\",\n \"width\": 500,\n \"height\": 500,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://alphabetnetwork.org\",\n \"name\": \"Alphabet Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"ALT\",\n \"symbol\": \"ALT\",\n \"decimals\": 18\n },\n \"networkId\": 111222333444,\n \"rpc\": [\"https://alphabet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://111222333444.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://londonpublic.alphabetnetwork.org\", \"wss://londonpublic.alphabetnetwork.org/ws/\", \"https://main-rpc.com\", \"wss://main-rpc.com/ws/\"],\n \"shortName\": \"alphabet\",\n \"slug\": \"alphabet\",\n \"testnet\": false\n};\n\nvar c197710212030 = {\n \"chain\": \"Ntity\",\n \"chainId\": 197710212030,\n \"explorers\": [{\n \"name\": \"Ntity Blockscout\",\n \"url\": \"https://blockscout.ntity.io\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSW2YhCvMpnwtPGTJAuEK2QgyWfFjmnwcrapUg6kqFsPf\",\n \"width\": 711,\n \"height\": 715,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSW2YhCvMpnwtPGTJAuEK2QgyWfFjmnwcrapUg6kqFsPf\",\n \"width\": 711,\n \"height\": 715,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://ntity.io\",\n \"name\": \"Ntity Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"Ntity\",\n \"symbol\": \"NTT\",\n \"decimals\": 18\n },\n \"networkId\": 197710212030,\n \"rpc\": [\"https://ntity.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://197710212030.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://rpc.ntity.io\"],\n \"shortName\": \"ntt\",\n \"slug\": \"ntity\",\n \"testnet\": false\n};\n\nvar c197710212031 = {\n \"chain\": \"Ntity\",\n \"chainId\": 197710212031,\n \"explorers\": [{\n \"name\": \"Ntity Haradev Blockscout\",\n \"url\": \"https://blockscout.haradev.com\",\n \"standard\": \"EIP3091\",\n \"icon\": {\n \"url\": \"ipfs://QmSW2YhCvMpnwtPGTJAuEK2QgyWfFjmnwcrapUg6kqFsPf\",\n \"width\": 711,\n \"height\": 715,\n \"format\": \"svg\"\n }\n }],\n \"faucets\": [],\n \"icon\": {\n \"url\": \"ipfs://QmSW2YhCvMpnwtPGTJAuEK2QgyWfFjmnwcrapUg6kqFsPf\",\n \"width\": 711,\n \"height\": 715,\n \"format\": \"svg\"\n },\n \"infoURL\": \"https://ntity.io\",\n \"name\": \"Haradev Testnet\",\n \"nativeCurrency\": {\n \"name\": \"Ntity Haradev\",\n \"symbol\": \"NTTH\",\n \"decimals\": 18\n },\n \"networkId\": 197710212031,\n \"rpc\": [\"https://haradev-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://197710212031.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://blockchain.haradev.com\"],\n \"shortName\": \"ntt-haradev\",\n \"slug\": \"haradev-testnet\",\n \"testnet\": true\n};\n\nvar c383414847825 = {\n \"chain\": \"ZENIQ\",\n \"chainId\": 383414847825,\n \"explorers\": [{\n \"name\": \"zeniq-smart-chain-explorer\",\n \"url\": \"https://smart.zeniq.net\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [\"https://faucet.zeniq.net/\"],\n \"infoURL\": \"https://www.zeniq.dev/\",\n \"name\": \"Zeniq\",\n \"nativeCurrency\": {\n \"name\": \"Zeniq\",\n \"symbol\": \"ZENIQ\",\n \"decimals\": 18\n },\n \"networkId\": 383414847825,\n \"rpc\": [\"https://zeniq.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://383414847825.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://smart.zeniq.network:9545\"],\n \"shortName\": \"zeniq\",\n \"slug\": \"zeniq\",\n \"testnet\": false\n};\n\nvar c666301171999 = {\n \"chain\": \"IPDC\",\n \"chainId\": 666301171999,\n \"explorers\": [{\n \"name\": \"ipdcscan\",\n \"url\": \"https://scan.ipdc.io\",\n \"standard\": \"EIP3091\"\n }],\n \"faucets\": [],\n \"infoURL\": \"https://ipdc.io\",\n \"name\": \"PDC Mainnet\",\n \"nativeCurrency\": {\n \"name\": \"PDC\",\n \"symbol\": \"PDC\",\n \"decimals\": 18\n },\n \"networkId\": 666301171999,\n \"rpc\": [\"https://pdc.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://666301171999.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://mainnet.ipdc.io/\"],\n \"shortName\": \"ipdc\",\n \"slug\": \"pdc\",\n \"testnet\": false\n};\n\nvar c6022140761023 = {\n \"chain\": \"ETH\",\n \"chainId\": 6022140761023,\n \"explorers\": [],\n \"faucets\": [],\n \"infoURL\": \"https://github.com/Jdubedition/molereum\",\n \"name\": \"Molereum Network\",\n \"nativeCurrency\": {\n \"name\": \"Molereum Ether\",\n \"symbol\": \"MOLE\",\n \"decimals\": 18\n },\n \"networkId\": 6022140761023,\n \"rpc\": [\"https://molereum-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://6022140761023.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://molereum.jdubedition.com\"],\n \"shortName\": \"mole\",\n \"slug\": \"molereum-network\",\n \"testnet\": false\n};\n\nvar c868455272153094 = {\n \"chain\": \"GWT\",\n \"chainId\": 868455272153094,\n \"explorers\": [{\n \"name\": \"GWScan Block Explorer\",\n \"url\": \"https://v1.aggron.gwscan.com\",\n \"standard\": \"none\"\n }],\n \"faucets\": [\"https://homura.github.io/light-godwoken\"],\n \"infoURL\": \"https://www.nervos.org\",\n \"name\": \"Godwoken Testnet (V1)\",\n \"nativeCurrency\": {\n \"name\": \"CKB\",\n \"symbol\": \"CKB\",\n \"decimals\": 8\n },\n \"networkId\": 868455272153094,\n \"rpc\": [\"https://godwoken-testnet-v1-gw-testnet-v1-deprecated.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://868455272153094.rpc.thirdweb.com/${THIRDWEB_API_KEY}\", \"https://godwoken-testnet-web3-v1-rpc.ckbapp.dev\"],\n \"shortName\": \"gw-testnet-v1-deprecated\",\n \"slug\": \"godwoken-testnet-v1-gw-testnet-v1-deprecated\",\n \"status\": \"deprecated\",\n \"testnet\": true\n};\n\nconst defaultOptions = {\n mode: \"http\"\n};\n\n/**\n * Construct the list of RPC URLs given a specific chain config. Format any RPC URLs\n * with necessary API keys.\n *\n * @param chain - The chain config to assemble RPC URLs from\n * @param options - Options to configure the RPC URLs\n * @returns The list of RPC URLs for the chain\n */\nfunction getChainRPCs(chain, options) {\n const {\n thirdwebApiKey,\n alchemyApiKey,\n infuraApiKey,\n mode\n } = {\n ...defaultOptions,\n ...options\n };\n const processedRPCs = [];\n chain.rpc.forEach(rpc => {\n // exclude RPC if mode mismatch\n if (mode === \"http\" && !rpc.startsWith(\"http\")) {\n return;\n }\n if (mode === \"ws\" && !rpc.startsWith(\"ws\")) {\n return;\n }\n\n // Replace API_KEY placeholder with value\n if (thirdwebApiKey && rpc.includes(\"${THIRDWEB_API_KEY}\")) {\n processedRPCs.push(rpc.replace(\"${THIRDWEB_API_KEY}\", thirdwebApiKey));\n } else if (infuraApiKey && rpc.includes(\"${INFURA_API_KEY}\")) {\n processedRPCs.push(rpc.replace(\"${INFURA_API_KEY}\", infuraApiKey));\n } else if (alchemyApiKey && rpc.includes(\"${ALCHEMY_API_KEY}\")) {\n processedRPCs.push(rpc.replace(\"${ALCHEMY_API_KEY}\", alchemyApiKey));\n }\n\n // exclude RPCs with unknown placeholder\n else if (rpc.includes(\"${\")) {\n return;\n }\n\n // add as is\n else {\n processedRPCs.push(rpc);\n }\n });\n if (processedRPCs.length === 0) {\n throw new Error(`No RPC available for chainId \"${chain.chainId}\" with mode ${mode}`);\n }\n return processedRPCs;\n}\n\n/**\n * Construct the list of RPC URLs given a specific chain config. Format any RPC URLs\n * with necessary clientId/secretKey and returns the first valid one.\n *\n * @param chain - The chain config to assemble RPC URLs from\n * @param clientId - The client id to use for the RPC URL\n * @returns The first valid RPC URL for the chain\n */\nfunction getValidChainRPCs(chain, clientId) {\n let mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"http\";\n const processedRPCs = [];\n chain.rpc.forEach(rpc => {\n // exclude RPC if mode mismatch\n if (mode === \"http\" && !rpc.startsWith(\"http\")) {\n return;\n }\n if (mode === \"ws\" && !rpc.startsWith(\"ws\")) {\n return;\n }\n\n // Replace API_KEY placeholder with value\n if (rpc.includes(\"${THIRDWEB_API_KEY}\")) {\n if (clientId) {\n processedRPCs.push(rpc.replace(\"${THIRDWEB_API_KEY}\", clientId) + (typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ?\n // @ts-ignore\n `/?bundleId=${globalThis.APP_BUNDLE_ID}` : \"\"));\n } else {\n // if no client id, let it through with empty string\n // if secretKey is present, it will be used in header\n // if none are passed, will have reduced access\n processedRPCs.push(rpc.replace(\"${THIRDWEB_API_KEY}\", \"\"));\n }\n }\n\n // exclude RPCs with unknown placeholder\n else if (rpc.includes(\"${\")) {\n return;\n }\n\n // add as is\n else {\n processedRPCs.push(rpc);\n }\n });\n if (processedRPCs.length === 0) {\n throw new Error(`No RPC available for chainId \"${chain.chainId}\" with mode ${mode}`);\n }\n return processedRPCs;\n}\n\n/**\n * Get the highest priority RPC URL for a specific chain\n *\n * @param chain - The chain config to get the RPC URL for\n * @param options - Options to configure the RPC URL\n * @returns The RPC URL for the chain\n *\n * @internal\n */\nfunction getChainRPC(chain, options) {\n return getChainRPCs(chain, options)[0];\n}\nfunction minimizeChain(chain) {\n const [firstRpc] = chain.rpc;\n return {\n name: chain.name,\n chain: chain.chain,\n rpc: [firstRpc],\n nativeCurrency: chain.nativeCurrency,\n shortName: chain.shortName,\n chainId: chain.chainId,\n testnet: chain.testnet,\n slug: chain.slug,\n icon: chain.icon\n };\n}\nfunction configureChain(chain, chainConfig) {\n let additionalRPCs = [];\n if (chainConfig?.rpc) {\n if (typeof chainConfig.rpc === \"string\") {\n additionalRPCs = [chainConfig.rpc];\n } else {\n additionalRPCs = chainConfig.rpc;\n }\n }\n // prepend additional RPCs to the chain's RPCs\n return {\n ...chain,\n rpc: [...additionalRPCs, ...chain.rpc]\n };\n}\n\n/**\n *\n * use the clientId and return a new chain object with updated RPCs\n */\nfunction updateChainRPCs(chain, clientId) {\n try {\n return {\n ...chain,\n rpc: getValidChainRPCs(chain, clientId)\n };\n } catch (error) {\n return chain;\n }\n}\n\n// cache of chainId -> Chain\nconst chainCache = {};\n// cache of slug -> chainId\nconst slugToChainId = {};\nasync function fetchChain(chainIdOrSlug) {\n if (typeof chainIdOrSlug === \"string\" && chainIdOrSlug in slugToChainId) {\n return chainCache[slugToChainId[chainIdOrSlug]];\n } else if (typeof chainIdOrSlug === \"number\" && chainIdOrSlug in chainCache) {\n return chainCache[chainIdOrSlug];\n }\n const res = await fetch(`https://api.thirdweb.com/v1/chains/${chainIdOrSlug}`);\n if (!res.ok) {\n console.debug(\"[chains] fetchChain() failed\", res.status, res.statusText);\n return null;\n }\n try {\n const json = await res.json();\n if (json.error) {\n console.debug(\"[chains] fetchChain() error\", json.error);\n return null;\n }\n const chain = json.data;\n // store the chain in chainCache\n chainCache[chain.chainId] = chain;\n // store the slug<->chainId in slugToChainId\n slugToChainId[chain.slug] = chain.chainId;\n return json.data;\n } catch (err) {\n console.debug(\"[chains] fetchChain() failed\", err);\n return null;\n }\n}\nconst fetchChainsCache = {};\nasync function fetchChains(options) {\n // cache key is based on limit and offset (options)\n const cacheKey = `l:${options?.limit ?? 0}o:${options?.offset ?? 0}`;\n if (cacheKey in fetchChainsCache) {\n return fetchChainsCache[cacheKey];\n }\n const url = new URL(`https://api.thirdweb.com/v1/chains`);\n if (options?.limit && options.limit >= 1) {\n url.searchParams.append(\"limit\", options.limit.toString());\n }\n if (options?.offset && options.offset >= 1) {\n url.searchParams.append(\"offset\", options.offset.toString());\n }\n const res = await fetch(url);\n if (!res.ok) {\n console.debug(\"[chains] fetchChain() failed\", res.status, res.statusText);\n return null;\n }\n try {\n const json = await res.json();\n if (json.error) {\n console.debug(\"[chains] fetchChain() error\", json.error);\n return null;\n }\n fetchChainsCache[cacheKey] = json.data;\n return json.data;\n } catch (err) {\n console.debug(\"[chains] fetchChain() failed\", err);\n return null;\n }\n}\n\n/**\n *\n * @param chainId - the chainId of the chain to resolve\n * @returns a Promise that resolves to the Chain object\n * @throws if the chainId is not found\n */\nasync function getChainByChainIdAsync(chainId) {\n const chain = await fetchChain(chainId);\n if (!chain) {\n throw new Error(`Chain with chainId \"${chainId}\" not found`);\n }\n return chain;\n}\n\n/**\n *\n * @param slug - the slug of the chain to resolve\n * @returns a Promise that resolves to the Chain object\n * @throws if the slug is not found\n */\nasync function getChainBySlugAsync(slug) {\n const chain = await fetchChain(slug);\n if (!chain) {\n throw new Error(`Chain with slug \"${slug}\" not found`);\n }\n return chain;\n}\n\nconst defaultChains = [c1, c5, c8453, c84531, c137, c80001, c42161, c421613, c10, c420, c56, c97, c250, c4002, c43114, c43113, c1337];\n\n/**\n * @deprecated use `fetchChains()` instead\n */\n// @ts-expect-error - TODO: fix this later\nconst allChains = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c68, c69, c70, c71, c72, c73, c74, c75, c76, c77, c78, c79, c80, c81, c82, c83, c84, c85, c86, c87, c88, c89, c90, c91, c92, c93, c94, c95, c96, c97, c98, c99, c100, c101, c102, c103, c104, c105, c106, c107, c108, c109, c110, c111, c112, c113, c114, c115, c116, c117, c118, c119, c120, c121, c122, c123, c124, c125, c126, c127, c128, c134, c135, c136, c137, c138, c139, c141, c142, c144, c148, c150, c151, c152, c153, c154, c155, c156, c160, c161, c162, c163, c165, c167, c168, c169, c170, c172, c180, c186, c188, c189, c193, c195, c196, c197, c198, c199, c200, c201, c204, c206, c207, c208, c210, c211, c212, c214, c217, c218, c222, c225, c226, c230, c236, c242, c246, c248, c250, c252, c255, c256, c258, c259, c262, c269, c271, c274, c280, c288, c291, c295, c296, c297, c298, c300, c301, c303, c309, c311, c313, c314, c321, c322, c324, c333, c335, c336, c338, c345, c361, c363, c364, c365, c369, c371, c385, c399, c400, c401, c408, c411, c416, c418, c420, c424, c427, c428, c443, c444, c456, c462, c463, c499, c500, c501, c512, c513, c516, c520, c529, c530, c534, c542, c555, c558, c568, c570, c588, c592, c595, c596, c597, c599, c600, c601, c614, c634, c647, c648, c653, c666, c667, c668, c669, c686, c700, c707, c708, c710, c719, c721, c727, c740, c741, c742, c766, c776, c777, c786, c787, c788, c789, c800, c803, c808, c813, c814, c818, c820, c821, c841, c842, c859, c868, c876, c877, c880, c888, c900, c901, c902, c903, c909, c910, c917, c919, c927, c940, c941, c942, c943, c956, c963, c970, c971, c972, c977, c980, c985, c989, c990, c997, c998, c999, c1000, c1001, c1003, c1004, c1007, c1008, c1010, c1012, c1022, c1023, c1024, c1028, c1030, c1031, c1038, c1039, c1071, c1072, c1073, c1079, c1080, c1088, c1089, c1099, c1101, c1107, c1108, c1111, c1112, c1115, c1116, c1117, c1130, c1131, c1133, c1138, c1139, c1140, c1149, c1170, c1177, c1197, c1201, c1202, c1213, c1214, c1229, c1230, c1231, c1234, c1243, c1244, c1246, c1252, c1280, c1284, c1285, c1286, c1287, c1288, c1291, c1294, c1297, c1311, c1314, c1319, c1320, c1337, c1338, c1339, c1343, c1353, c1369, c1379, c1388, c1392, c1402, c1422, c1433, c1440, c1442, c1452, c1455, c1501, c1506, c1507, c1515, c1559, c1582, c1618, c1620, c1657, c1662, c1663, c1688, c1701, c1707, c1708, c1718, c1748, c1773, c1777, c1804, c1807, c1818, c1819, c1856, c1875, c1881, c1890, c1891, c1898, c1904, c1907, c1908, c1909, c1945, c1951, c1954, c1967, c1969, c1970, c1971, c1975, c1984, c1985, c1986, c1987, c1994, c1995, c2000, c2001, c2002, c2008, c2009, c2016, c2018, c2019, c2020, c2021, c2022, c2023, c2025, c2031, c2032, c2037, c2038, c2043, c2044, c2047, c2048, c2049, c2077, c2088, c2089, c2100, c2101, c2109, c2121, c2122, c2124, c2137, c2138, c2151, c2152, c2153, c2154, c2199, c2202, c2203, c2213, c2221, c2222, c2223, c2241, c2300, c2306, c2309, c2323, c2330, c2332, c2357, c2358, c2399, c2400, c2415, c2484, c2522, c2559, c2569, c2606, c2611, c2612, c2613, c2625, c2710, c2718, c2888, c2999, c3000, c3001, c3003, c3011, c3031, c3068, c3100, c3102, c3141, c3269, c3270, c3306, c3331, c3333, c3334, c3400, c3434, c3500, c3501, c3601, c3602, c3636, c3637, c3639, c3666, c3690, c3693, c3698, c3699, c3701, c3737, c3797, c3885, c3888, c3889, c3912, c3939, c3966, c3967, c3999, c4000, c4001, c4002, c4003, c4051, c4061, c4062, c4090, c4096, c4099, c4102, c4139, c4141, c4157, c4181, c4201, c4242, c4328, c4337, c4400, c4444, c4460, c4689, c4690, c4759, c4777, c4893, c4918, c4919, c4999, c5000, c5001, c5002, c5003, c5005, c5165, c5177, c5197, c5234, c5290, c5315, c5353, c5522, c5551, c5553, c5555, c5611, c5616, c5678, c5700, c5729, c5758, c5777, c5851, c5869, c6065, c6066, c6102, c6118, c6119, c6363, c6502, c6552, c6565, c6626, c6688, c6789, c6969, c6999, c7000, c7001, c7027, c7070, c7171, c7331, c7332, c7341, c7484, c7518, c7575, c7576, c7668, c7672, c7700, c7701, c7771, c7777, c7860, c7878, c7895, c7979, c8000, c8001, c8029, c8080, c8081, c8082, c8086, c8098, c8131, c8132, c8133, c8134, c8135, c8136, c8181, c8192, c8194, c8217, c8272, c8285, c8387, c8453, c8654, c8655, c8668, c8723, c8724, c8738, c8768, c8848, c8880, c8881, c8882, c8883, c8888, c8889, c8898, c8899, c8989, c8995, c9000, c9001, c9012, c9100, c9170, c9223, c9339, c9527, c9528, c9559, c9700, c9728, c9768, c9779, c9790, c9792, c9818, c9819, c9977, c9990, c9996, c9997, c9999, c10000, c10001, c10024, c10081, c10086, c10101, c10200, c10201, c10243, c10248, c10395, c10507, c10508, c10823, c10946, c10947, c11110, c11111, c11115, c11119, c11235, c11437, c11612, c11888, c11891, c12009, c12035, c12051, c12052, c12123, c12306, c12321, c12345, c12611, c12715, c12890, c13000, c13308, c13337, c13381, c13473, c13812, c14000, c14853, c15003, c15535, c15551, c15555, c15557, c16000, c16001, c16507, c16688, c16718, c16888, c17000, c17001, c17026, c17171, c17180, c17777, c18000, c18122, c18159, c18181, c18686, c19011, c19683, c19845, c20001, c20729, c20736, c21337, c21816, c21912, c22023, c22040, c22222, c22776, c23006, c23118, c23294, c23295, c23934, c24484, c24734, c25888, c25925, c26026, c26600, c26863, c28528, c29548, c30067, c30103, c30891, c31102, c31223, c31224, c31337, c31415, c32520, c32659, c32769, c32990, c33101, c33210, c33333, c33385, c33469, c33909, c34443, c35011, c35441, c35443, c35730, c36908, c38400, c38401, c39797, c39815, c41500, c42069, c42161, c42170, c42220, c42261, c42262, c42801, c42888, c43110, c43113, c43114, c43288, c43851, c44444, c44787, c45000, c46688, c47805, c49049, c49088, c49797, c50001, c50021, c51178, c51712, c52014, c53935, c54211, c54321, c55004, c55555, c55556, c56288, c56789, c56914, c57000, c58008, c59140, c59144, c59971, c60000, c60001, c60002, c60103, c61800, c61803, c61916, c62278, c62320, c62621, c63000, c63001, c63079, c65450, c66988, c67390, c67588, c68770, c69420, c69740, c70000, c70001, c70002, c70103, c70466, c71111, c71393, c71401, c71402, c72605, c73799, c73927, c75000, c77238, c77612, c77777, c78110, c78281, c78430, c78431, c78432, c79879, c80001, c80182, c81041, c81341, c81342, c81343, c81351, c81352, c81353, c81361, c81362, c81363, c81720, c82807, c84531, c84532, c84886, c85449, c88002, c88880, c88882, c88883, c88888, c90210, c91002, c91003, c92001, c96970, c97288, c99099, c99998, c99999, c100000, c100001, c100002, c100003, c100004, c100005, c100006, c100007, c100008, c100009, c100010, c100100, c101010, c103090, c108801, c110000, c110001, c110002, c110003, c110004, c110005, c110006, c110007, c110008, c111000, c111111, c112358, c123456, c131419, c142857, c167004, c167005, c167006, c167007, c188710, c188881, c200101, c200202, c200625, c201018, c201030, c201804, c202020, c202212, c202624, c204005, c210425, c220315, c221230, c221231, c224168, c230315, c234666, c246529, c246785, c247253, c256256, c266256, c271271, c281121, c314159, c330844, c331769, c331771, c333331, c333333, c333666, c333777, c333888, c333999, c355113, c363636, c373737, c381931, c381932, c404040, c420420, c420666, c420692, c421611, c421613, c421614, c424242, c431140, c432201, c432204, c444900, c471100, c474142, c512512, c513100, c534351, c534352, c534353, c534354, c534849, c535037, c622277, c641230, c651940, c660868, c666666, c666888, c751230, c761412, c776877, c800001, c827431, c846000, c855456, c888888, c894538, c900000, c910000, c920000, c920001, c923018, c955305, c988207, c993535, c1127469, c1261120, c1313114, c1313500, c1337702, c1337802, c1337803, c1440001, c2021398, c2099156, c2203181, c2206132, c2611555, c3141592, c3441005, c4000003, c4281033, c5167003, c5201420, c5555555, c5555558, c7225878, c7355310, c7668378, c7762959, c7777777, c8007736, c8794598, c8888881, c8888888, c9322252, c9322253, c10067275, c10101010, c11155111, c11155420, c13371337, c14288640, c16658437, c18289463, c20180430, c20181205, c20201022, c22052002, c27082017, c27082022, c28945486, c29032022, c31415926, c35855456, c43214913, c61717561, c65010001, c65100000, c68840142, c88888888, c99415706, c192837465, c222000222, c245022926, c245022934, c245022940, c278611351, c311752642, c333000333, c344106930, c356256156, c476158412, c486217935, c503129905, c999999999, c1122334455, c1146703430, c1273227453, c1313161554, c1313161555, c1313161556, c1350216234, c1351057110, c1380996178, c1482601649, c1517929550, c1564830818, c1666600000, c1666600001, c1666600002, c1666600003, c1666700000, c1666700001, c1666900000, c1666900001, c2021121117, c2046399126, c2863311531, c3125659152, c4216137055, c11297108099, c11297108109, c47279324479, c111222333444, c197710212030, c197710212031, c383414847825, c666301171999, c6022140761023, c868455272153094];\nlet _chainsById;\nlet _chainIdsBySlug;\nfunction getChainsById() {\n if (_chainsById) {\n return _chainsById;\n }\n _chainsById = {};\n allChains.forEach(chain => {\n _chainsById[chain.chainId] = chain;\n });\n return _chainsById;\n}\nfunction getChainIdsBySlug() {\n if (_chainIdsBySlug) {\n return _chainIdsBySlug;\n }\n _chainIdsBySlug = {};\n allChains.forEach(chain => {\n _chainIdsBySlug[chain.slug] = chain.chainId;\n });\n return _chainIdsBySlug;\n}\nfunction isValidChainId(chainId) {\n const chainsById = getChainsById();\n return chainId in chainsById;\n}\nfunction isValidChainSlug(slug) {\n const chainIdsBySlug = getChainIdsBySlug();\n return slug in chainIdsBySlug;\n}\n\n/**\n * @deprecated use `getChainByChainIdAsync()` instead\n */\nfunction getChainByChainId(chainId) {\n if (isValidChainId(chainId)) {\n const chainsById = getChainsById();\n return chainsById[chainId];\n }\n throw new Error(`Chain with chainId \"${chainId}\" not found`);\n}\n\n/**\n * @deprecated use `getChainBySlugAsync()` instead\n */\nfunction getChainBySlug(slug) {\n if (isValidChainSlug(slug)) {\n const chainIdsBySlug = getChainIdsBySlug();\n const chainsById = getChainsById();\n return chainsById[chainIdsBySlug[slug]];\n }\n throw new Error(`Chain with slug \"${slug}\" not found`);\n}\n\nexport { c595 as AcalaMandalaTestnetTc9, c787 as AcalaNetwork, c597 as AcalaNetworkTestnet, c7576 as AdilChainV2, c123456 as AdilDevnet, c7575 as AdilTestnet, c84886 as AerieNetwork, c788 as AerochainTestnet, c9990 as AgungNetwork, c1319 as Aia, c1320 as AiaTestnet, c168 as AiozNetwork, c4102 as AiozNetworkTestnet, c16718 as Airdao, c22040 as AirdaoTestnet, c200625 as Akroma, c201018 as Alaya, c201030 as AlayaDevTestnet, c2089 as Algol, c651940 as All, c8738 as AlphNetwork, c111222333444 as Alphabet, c2088 as Altair, c2330 as Altcoinchain, c420692 as AlteriumL2Testnet, c9997 as AltlayerTestnet, c4000003 as AltlayerZeroGasNetwork, c3797 as Alveychain, c1314 as Alyx, c135 as AlyxChainTestnet, c8134 as Amana, c81342 as AmanaMixnet, c81343 as AmanaPrivnet, c81341 as AmanaTestnet, c880 as AmbrosChain, c180 as AmeChain, c78430 as AmplifySubnet, c1388 as Amstar, c1138 as AmstarTestnet, c2863311531 as Ancient8Testnet, c14288640 as Anduschain, c2202 as Antofy, c23006 as AntofyTestnet, c1701 as AnytypeEvmChain, c61717561 as Aquachain, c42161 as Arbitrum, c421613 as ArbitrumGoerli, c42170 as ArbitrumNova, c200 as ArbitrumOnXdai, c421611 as ArbitrumRinkeby, c421614 as ArbitrumSepolia, c1243 as Arc, c1244 as ArcTestnet, c118 as ArcologyTestnet, c5616 as ArcturusChainTestnet, c7895 as ArdeniumAthena, c463 as AreonNetwork, c462 as AreonNetworkTestnet, c2309 as Arevia, c160 as ArmoniaEvaChain, c161 as ArmoniaEvaChainTestnet, c10243 as ArtheraTestnet, c246529 as ArtisSigma1, c246785 as ArtisTestnetTau1, c456 as ArzioChain, c592 as Astar, c12611 as AstarZkevm, c11110 as Astra, c11115 as AstraTestnet, c1971 as Atelier, c1620 as Atheios, c43110 as Athereum, c167 as AtoshiTestnet, c1313161554 as Aurora, c1313161556 as AuroraBetanet, c1313161555 as AuroraTestnet, c45000 as AutobahnNetwork, c65010001 as AutonityBakerlooBaradaTestnet, c65100000 as AutonityPiccadillyThamesTestnet, c28945486 as AuxiliumNetwork, c43114 as Avalanche, c43113 as AvalancheFuji, c33333 as Aves, c333331 as AvesTestnet, c634 as Avocado, c61800 as AxelchainDevNet, c5165 as Bahamut, c876 as BandaiNamcoResearchVerse, c8453 as Base, c84531 as BaseGoerli, c84532 as BaseSepoliaTestnet, c1515 as BeagleMessagingChain, c4337 as Beam, c13337 as BeamTestnet, c535037 as BeanecoSmartchain, c641230 as BearNetworkChain, c751230 as BearNetworkChainTestnet, c818 as BeoneChain, c2022 as BeresheetBereevmTestnet, c9012 as Berylbit, c90210 as BeverlyHills, c1501 as Bevm, c3068 as Bifrost, c49088 as BifrostTestnet, c2137 as Bigshortbets, c56 as Binance, c97 as BinanceTestnet, c198 as Bitchain, c1907 as Bitcichain, c1908 as BitcichainTestnet, c2203 as BitcoinEvm, c8086 as Biteth, c355113 as BitfinityNetworkTestnet, c32520 as Bitgert, c188710 as BiticaChain, c4099 as Bitindi, c4096 as BitindiTestnet, c96 as BitkubChain, c25925 as BitkubChainTestnet, c210 as Bitnet, c7171 as Bitrock, c7771 as BitrockTestnet, c3690 as Bittex, c199 as BittorrentChain, c1028 as BittorrentChainTestnet, c2999 as Bityuan, c4999 as BlackfortExchangeNetwork, c4777 as BlackfortExchangeNetworkTestnet, c12321 as BlgTestnet, c1343 as BlitzSubnet, c10101 as BlockchainGenesis, c707 as BlockchainStation, c708 as BlockchainStationTestnet, c8272 as BlocktonBlockchain, c8995 as Bloxberg, c727 as Blucrates, c1108 as Blxq, c1107 as BlxqTestnet, c188 as Bmc, c189 as BmcTestnet, c43288 as BobaAvax, c56288 as BobaBnb, c97288 as BobaBnbOld, c9728 as BobaBnbTestnet, c288 as BobaNetwork, c2888 as BobaNetworkGoerliTestnet, c28 as BobaNetworkRinkebyTestnet, c1297 as BobabaseTestnet, c1294 as Bobabeam, c4328 as BobafujiTestnet, c301 as Bobaopera, c4051 as BobaoperaTestnet, c2300 as BombChain, c2399 as BombChainTestnet, c1898 as BonNetwork, c2151 as Bosagora, c3637 as Botanix, c3636 as BotanixTestnet, c12123 as BrcChain, c108801 as Brochain, c1039 as Bronos, c1038 as BronosTestnet, c21912 as Bsl, c1657 as Btachain, c963 as Btc20SmartChain, c19845 as BtcixNetwork, c1582 as BubsTestnet, c78431 as BulletinSubnet, c820 as Callisto, c20729 as CallistoTestnet, c821 as CallistoTestnetDeprecated, c95 as Camdl, c20001 as Camelark, c500 as CaminoCChain, c534 as Candle, c7700 as Canto, c7701 as CantoTesnet, c740 as CantoTestnet, c3003 as Canxium, c9790 as CarbonEvm, c9792 as CarbonEvmTestnet, c6102 as CascadiaTestnet, c2032 as Catalyst, c1618 as CatecoinChain, c42220 as Celo, c44787 as CeloAlfajoresTestnet, c62320 as CeloBaklavaTestnet, c21337 as CennznetAzalea, c3001 as CennznetNikau, c3000 as CennznetRata, c2031 as Centrifuge, c30103 as CeriumTestnet, c5555 as ChainVerse, c1351057110 as ChaosSkaleTestnet, c777 as Cheapeth, c88888 as ChilizChain, c88880 as ChilizScovilleTestnet, c1353 as CicChain, c1252 as CicChainTestnet, c31223 as Cloudtx, c31224 as CloudtxTestnet, c33210 as CloudverseSubnet, c2009 as Cloudwalk, c2008 as CloudwalkTestnet, c1023 as CloverTestnet, c1024 as ClvParachain, c256256 as Cmp, c512512 as CmpTestnet, c9223 as Codefin, c70466 as CohanTest3, c112 as Coinbit, c52 as CoinexSmartChain, c53 as CoinexSmartChainTestnet, c501 as ColumbusTestNetwork, c188881 as CondorTestNetwork, c69420 as Condrieu, c78432 as ConduitSubnet, c1030 as ConfluxEspace, c71 as ConfluxEspaceTestnet, c38400 as Connectormanager, c38401 as ConnectormanagerRobin, c371 as ConstaTestnet, c1116 as CoreBlockchain, c1115 as CoreBlockchainTestnet, c67588 as CosmicChain, c44 as CrabNetwork, c4400 as CreditSmartChain, c13308 as CreditSmartChainCredit, c25 as Cronos, c338 as CronosTestnet, c3737 as Crossbell, c4157 as CrossfiTestnet, c193 as CryptoEmergency, c10823 as Cryptocoinpay, c103090 as Crystaleum, c1455 as CtexScanBlockchain, c1818 as CubeChain, c1819 as CubeChainTestnet, c827431 as Curve, c1146703430 as Cyberdecknet, c85449 as Cybertrust, c1951 as DChain, c46 as DarwiniaNetwork, c43 as DarwiniaPangolinTestnet, c45 as DarwiniaPangoroTestnet, c2021121117 as Datahopper, c142 as DaxChain, c67 as DbchainTestnet, c136 as Deamchain, c236 as DeamchainTestnet, c116 as Debank, c2021398 as DebankTestnet, c115 as DebankTestnetDeprecated, c3306 as DebounceSubnetTestnet, c910 as DecentraboneLayer1Testnet, c124 as DecentralizedWeb, c75 as DecimalSmartChain, c202020 as DecimalSmartChainTestnet, c138 as DefiOracleMeta, c2138 as DefiOracleMetaTestnet, c1130 as DefichainEvmNetwork, c1131 as DefichainEvmNetworkTestnet, c1133 as Defimetachain, c113 as Dehvo, c100100 as DeprecatedChi, c2357 as DeprecatedKromaSepolia, c432204 as DexalotSubnet, c432201 as DexalotSubnetTestnet, c1954 as DexillaTestnet, c877 as DexitNetwork, c53935 as DfkChain, c335 as DfkChainTest, c6363 as DigitSoulSmartChain, c363636 as DigitSoulSmartChain2, c15 as DiodePrenet, c13 as DiodeTestnetStaging, c68770 as Dm2Verse, c855456 as Dodao, c1117 as Dogcoin, c9339 as DogcoinTestnet, c2000 as Dogechain, c568 as DogechainTestnet, c61916 as DokenSuperChain, c7979 as DosChain, c1311 as DosFujiSubnet, c3939 as DosTesnet, c512 as DoubleAChain, c513 as DoubleAChainTestnet, c2611555 as DpuChain, c3912 as DracNetwork, c8387 as DraconesFinancialServices, c78281 as DragonflyHexapod, c3269 as DubxcoinNetwork, c3270 as DubxcoinTestnet, c36 as Dxchain, c72 as DxchainTestnet, c3966 as Dyno, c3967 as DynoTestnet, c2306 as EbroNetwork, c2100 as Ecoball, c2101 as EcoballTestnetEspuma, c63000 as Ecredits, c63001 as EcreditsTestnet, c988207 as EcroxChain, c1995 as EdexaTestnet, c2021 as EdgewareEdgeevm, c271 as Egoncoin, c271271 as EgoncoinTestnet, c1994 as Ekta, c22 as ElaDidSidechain, c23 as ElaDidSidechainTestnet, c20 as ElastosSmartChain, c21 as ElastosSmartChainTestnet, c1967 as Eleanor, c52014 as Electroneum, c5201420 as ElectroneumTestnet, c990 as Eliberty, c99099 as ElibertyTestnet, c7027 as EllaTheHeart, c64 as Ellaism, c955305 as EluvioContentFabric, c1339 as Elysium, c1338 as ElysiumTestnet, c3693 as EmpireNetwork, c648 as EnduranceSmartChain, c39797 as Energi, c49797 as EnergiTestnet, c246 as EnergyWebChain, c73799 as EnergyWebVoltaTestnet, c48 as EnnothemProterozoic, c49 as EnnothemTestnetPioneer, c1214 as Enterchain, c119 as Enuls, c120 as EnulsTestnet, c59 as EosEvmLegacy, c17777 as EosEvmNetwork, c15557 as EosEvmNetworkTestnet, c5197 as Eraswap, c1 as Ethereum, c61 as EthereumClassic, c6 as EthereumClassicTestnetKotti, c62 as EthereumClassicTestnetMorden, c63 as EthereumClassicTestnetMordor, c513100 as EthereumFair, c1987 as Ethergem, c101 as Etherinc, c111 as EtherliteChain, c31102 as EthersocialNetwork, c1313114 as EthoProtocol, c61803 as Etica, c131419 as EtndChainS, c1008 as Eurus, c1984 as EurusTestnet, c2213 as Evanesco, c1201 as EvanescoTestnet, c9001 as Evmos, c9000 as EvmosTestnet, c1010 as EvriceNetwork, c22052002 as Excelon, c27082022 as ExcoincialChain, c27082017 as ExcoincialChainVoltaTestnet, c2109 as ExosamaNetwork, c2 as ExpanseNetwork, c1229 as ExzoNetwork, c2612 as EzchainCChain, c2613 as EzchainCChainTestnet, c530 as FXCoreNetwork, c127 as Factory127, c868 as FantasiaChain, c250 as Fantom, c4002 as FantomTestnet, c4090 as FastexChainBahamutOasisTestnet, c424242 as FastexChainTestnet, c26026 as FerrumTestnet, c12306 as Fibonacci, c314 as Filecoin, c3141592 as FilecoinButterflyTestnet, c314159 as FilecoinCalibrationTestnet, c3141 as FilecoinHyperspaceTestnet, c31415926 as FilecoinLocalTestnet, c31415 as FilecoinWallabyTestnet, c2152 as Findora, c2154 as FindoraForge, c2153 as FindoraTestnet, c529 as Firechain, c5290 as FirechainOld, c814 as FirechainZkevm, c3885 as FirechainZkevmGhostrider, c78110 as FirenzeTestNetwork, c29032022 as Flachain, c8135 as Flana, c81352 as FlanaMixnet, c81353 as FlanaPrivnet, c81351 as FlanaTestnet, c14 as Flare, c16 as FlareTestnetCoston, c114 as FlareTestnetCoston2, c73 as Fncy, c923018 as FncyTestnet, c1748 as FormTestnet, c77238 as FoundryChainTestnet, c6565 as FoxTestnetNetwork, c68840142 as FrameTestnet, c252 as Fraxchain, c2522 as FraxchainTestnet, c211 as FreightTrustNetwork, c44444 as Frenchain, c18000 as FrontierOfDreamsTestnet, c122 as Fuse, c123 as FuseSparknet, c32659 as Fusion, c46688 as FusionTestnet, c17171 as G8chain, c18181 as G8chainTestnet, c5777 as Ganache, c90 as GarizonStage0, c91 as GarizonStage1, c92 as GarizonStage2, c93 as GarizonStage3, c900 as GarizonTestnetStage0, c901 as GarizonTestnetStage1, c902 as GarizonTestnetStage2, c903 as GarizonTestnetStage3, c86 as Gatechain, c85 as GatechainTestnet, c486217935 as GatherDevnetNetwork, c192837465 as GatherNetwork, c356256156 as GatherTestnetNetwork, c1777 as Gauss, c516 as GearZeroNetwork, c266256 as GearZeroNetworkTestnet, c80 as Genechain, c9100 as GenesisCoin, c29 as GenesisL1, c26 as GenesisL1Testnet, c16507 as Genesys, c59971 as GenesysCode, c428 as GesoVerse, c42801 as GesotenVerseTestnet, c8989 as GiantMammoth, c1452 as GilTestnet, c1881 as GitshockCartenzTestnet, c4893 as GlobelChain, c100 as Gnosis, c10200 as GnosisChiadoTestnet, c60 as Gochain, c31337 as GochainTestnet, c71402 as Godwoken, c71401 as GodwokenTestnetV1, c868455272153094 as GodwokenTestnetV1GwTestnetV1Deprecated, c5 as Goerli, c6789 as GoldSmartChain, c79879 as GoldSmartChainTestnet, c10024 as GonChain, c33 as Gooddata, c32 as GooddataTestnet, c614 as GraphlinqBlockchain, c1000 as Gton, c50021 as GtonTestnet, c71111 as Guapcoinx, c803 as Haic, c1280 as Halo, c25888 as HammerChain, c8794598 as Hapchain, c373737 as HapchainTestnet, c54211 as HaqqChainTestnet, c11235 as HaqqNetwork, c197710212031 as HaradevTestnet, c1666900000 as HarmonyDevnetShard0, c1666900001 as HarmonyDevnetShard1, c1666600000 as HarmonyShard0, c1666600001 as HarmonyShard1, c1666600002 as HarmonyShard2, c1666600003 as HarmonyShard3, c1666700000 as HarmonyTestnetShard0, c1666700001 as HarmonyTestnetShard1, c11119 as Hashbit, c230315 as HashkeyChainTestnet, c234666 as HaymoTestnet, c7878 as HazlorTestnet, c295 as Hedera, c298 as HederaLocalnet, c297 as HederaPreviewnet, c296 as HederaTestnet, c8668 as HelaOfficialRuntime, c666888 as HelaOfficialRuntimeTestnet, c26600 as HertzNetwork, c269 as HighPerformanceBlockchain, c710 as Highbury, c5729 as HikaNetworkTestnet, c17000 as Holesky, c19011 as HomeVerse, c70 as HooSmartChain, c170 as HooSmartChainTestnet, c7332 as HorizenEon, c1663 as HorizenGobiTestnet, c4444 as Htmlcoin, c1273227453 as HumanProtocol, c5234 as Humanode, c14853 as HumanodeTestnet5Israfel, c1089 as HumansAi, c4139 as HumansAiTestnet, c128 as HuobiEcoChain, c256 as HuobiEcoChainTestnet, c400 as HyperonchainTestnet, c622277 as Hypra, c3639 as IchainNetwork, c142857 as Icplaza, c74 as Idchain, c134 as IexecSidechain, c3100 as Immu3Evm, c15003 as ImmutableZkevmDevnet, c13473 as ImmutableZkevmTestnet, c9819 as Imperium, c9818 as ImperiumTestnet, c5555555 as Imversed, c5555558 as ImversedTestnet, c18289463 as Iolite, c1197 as IoraChain, c4689 as IotexNetwork, c4690 as IotexNetworkTestnet, c1122334455 as IposNetwork, c6688 as Irishub, c16688 as IrishubTestnet, c16888 as IvarChainTestnet, c35011 as J2oTaro, c72605 as JambonSDevnet, c30891 as JambonSTestnet, c66988 as JanusTestnet, c81 as JapanOpenChain, c10081 as JapanOpenChainTestnet, c202624 as Jellie, c3501 as JfinChain, c8899 as JibchainL1, c1392 as Joseon, c3666 as Jouleverse, c35855456 as JoysDigital, c99415706 as JoysDigitalTestnet, c668 as Juncachain, c669 as JuncachainTestnet, c2718 as KLaos, c104 as KaibaLightningChainTestnet, c1379 as KalarChain, c653 as Kalichain, c3888 as Kalychain, c3889 as KalychainTestnet, c222000222 as Kanazawa, c24 as Kardiachain, c686 as KaruraNetwork, c596 as KaruraNetworkTestnet, c2222 as Kava, c2221 as KavaTestnet, c321 as Kcc, c322 as KccTestnet, c420420 as Kekchain, c420666 as KekchainKektest, c1804 as Kerleano, c1337802 as Kiln, c42888 as KintoTestnet, c1337702 as Kintsugi, c2037 as KiwiSubnet, c56914 as Kk1223, c8217 as KlaytnCypress, c1001 as KlaytnTestnetBaobab, c7331 as Klyntar, c2559 as Kortho, c8285 as Korthotest, c2241 as KrestNetwork, c255 as Kroma, c2358 as KromaSepolia, c225 as Lachain, c274 as LachainLachain, c226 as LachainTestnet, c92001 as LambdaTestnet, c667 as LaosArrakis, c172 as LatamBlockchainResilTestnet, c418 as Latestnet, c1891 as LightlinkPegasusTestnet, c1890 as LightlinkPhoenix, c163 as Lightstreams, c162 as LightstreamsTestnet, c59144 as Linea, c59140 as LineaTestnet, c84 as LinqtoDevnet, c1662 as Liquichain, c385 as Lisinski, c50001 as LiveplexOracleevm, c1440 as LivingAssets, c1337 as Localhost, c15551 as Loopnetwork, c800 as LucidBlockchain, c998 as LuckyNetwork, c1688 as Ludan, c42 as Lukso, c4201 as LuksoTestnet, c51178 as LumozTestnetAlpha, c721 as LycanChain, c2121 as MTest11032, c786 as MaalChain, c7860 as MaalchainTestnet, c43214913 as Maistestsubnet, c8898 as Mammoth, c169 as MantaPacific, c3441005 as MantaPacificTestnet, c96970 as MantisTestnetHexapod, c5000 as Mantle, c5003 as MantleSepoliaTestnet, c5001 as MantleTestnet, c22776 as Map, c212 as MapMakalu, c431140 as MarkrGo, c8848 as MaroBlockchain, c220315 as Mas, c1139 as Mathchain, c1140 as MathchainTestnet, c10201 as Maxxchain, c29548 as MchVerse, c8029 as MdglTestnet, c333000333 as Meld, c985 as MemoSmartChain, c1909 as MerkleScan, c600 as MeshnyanTestnet, c112358 as MetachainOne, c11 as Metadium, c12 as MetadiumTestnet, c16000 as Metadot, c16001 as MetadotTestnet, c381931 as MetalCChain, c381932 as MetalTahoeCChain, c2122 as Metaplayerone, c2124 as MetaplayeroneDubaiTestnet, c82 as Meter, c83 as MeterTestnet, c1088 as MetisAndromeda, c599 as MetisGoerliTestnet, c588 as MetisStardustTestnet, c7518 as MeverseChain, c4759 as MeverseChainTestnet, c761412 as MiexsSmartchain, c2002 as MilkomedaA1, c200202 as MilkomedaA1Testnet, c2001 as MilkomedaC1, c200101 as MilkomedaC1Testnet, c9322253 as Milvine, c9996 as MindSmartChain, c9977 as MindSmartChainTestnet, c1080 as Mintara, c1079 as MintaraTestnet, c24734 as MintmeComCoin, c76 as Mix, c73927 as MixinVirtualMachine, c8136 as Mizana, c81362 as MizanaMixnet, c81363 as MizanaPrivnet, c81361 as MizanaTestnet, c1099 as Moac, c201 as MoacTestnet, c34443 as Mode, c919 as ModeTestnet, c776877 as Modularium, c6022140761023 as MolereumNetwork, c1287 as MoonbaseAlpha, c1284 as Moonbeam, c1285 as Moonriver, c1288 as Moonrock, c1286 as MoonrockOld, c2199 as MoonsamaNetwork, c2710 as MorphTestnet, c2049 as MovoSmartChain, c63079 as Mt11212, c62621 as Multivac, c80001 as Mumbai, c956 as MunodeTestnet, c7762959 as Musicoin, c5167003 as MxcWannseeZkevmTestnet, c18686 as MxcZkevm, c9999 as MyownTestnet, c201804 as MythicalChain, c5551 as Nahmii, c4061 as Nahmii3, c4062 as Nahmii3Testnet, c5553 as NahmiiTestnet, c399 as Nativ3, c333333 as Nativ3Testnet, c22222 as Nautilus, c88002 as NautilusProteusTestnet, c91002 as NautilusTritionChain, c107 as NebulaTestnet, c245022934 as NeonEvm, c245022926 as NeonEvmDevnet, c245022940 as NeonEvmTestnet, c259 as Neonlink, c9559 as NeonlinkTestnet, c977 as NepalBlockchainNetwork, c313 as Neurochain, c303 as NeurochainTestnet, c197 as NeutrinosTestnet, c1012 as Newton, c1007 as NewtonTestnet, c4242 as Nexi, c81041 as Nordek, c87 as NovaNetwork, c197710212030 as Ntity, c10507 as Numbers, c10508 as NumbersTestnet, c42262 as OasisEmerald, c42261 as OasisEmeraldTestnet, c23294 as OasisSapphire, c23295 as OasisSapphireTestnet, c26863 as Oasischain, c248 as Oasys, c443 as ObscuroTestnet, c660868 as OcashTestnet, c800001 as Octaspace, c156 as OeblockTestnet, c39815 as Oho, c65 as OkexchainTestnet, c66 as Okxchain, c1246 as OmPlatform, c311 as Omax, c21816 as Omchain, c408 as Omega, c165 as OmniTestnet, c311752642 as Oneledger, c4216137055 as OneledgerTestnetFrankenstein, c58 as Ontology, c5851 as OntologyTestnet, c1975 as OnusChain, c1945 as OnusChainTestnet, c333777 as OoneChainDevnet, c333666 as OoneChainTestnet, c970 as Oort, c972 as OortAscraeus, c9700 as OortDev, c971 as OortHuygens, c11155420 as OpSepoliaTestnet, c8882 as OpalTestnetByUnique, c204 as Opbnb, c5611 as OpbnbTestnet, c474142 as Openchain, c776 as OpenchainTestnet, c54 as Openpiece, c141 as OpenpieceTestnet, c7355310 as Openvessel, c23118 as OpsideTestnet, c10 as Optimism, c28528 as OptimismBedrockGoerliAlphaTestnet, c420 as OptimismGoerli, c69 as OptimismKovan, c41500 as OpulentXBeta, c291 as Orderly, c4460 as OrderlySepoliaTestnet, c1170 as OriginTestnet, c2043 as OrigintrailParachain, c3031 as OrlandoChain, c126 as Oychain, c125 as OychainTestnet, c4000 as OzoneChain, c401 as OzoneChainTestnet, c20736 as P12Chain, c1718 as PaletteChain, c17180 as PaletteChainTestnet, c11297108109 as Palm, c11297108099 as PalmTestnet, c3601 as Pandoproject, c3602 as PandoprojectTestnet, c3400 as ParibuNet, c3500 as ParibuNetTestnet, c1773 as Partychain, c789 as Patex, c471100 as PatexSepoliaTestnet, c542 as PawchainTestnet, c666301171999 as Pdc, c601 as PeerTestnet, c6502 as Peerpay, c42069 as Pegglecoin, c20201022 as PegoNetwork, c13371337 as PepchainChurchill, c411 as PepeChain, c9779 as Pepenetwork, c4001 as PeperiumChainTestnet, c222 as Permission, c424 as PgnPublicGoodsNetwork, c4181 as PhiNetworkV1, c144 as PhiNetworkV2, c13381 as Phoenix, c30067 as PieceTestnet, c3125659152 as Pirl, c6626 as PixieChain, c666 as PixieChainTestnet, c7070 as Planq, c210425 as Platon, c2206132 as PlatonDevTestnet2, c2203181 as PlatonDevTestnetDeprecated, c3011 as Playa3ullGames, c2099156 as PlianMain, c8007736 as PlianSubchain1, c16658437 as PlianTestnetMain, c10067275 as PlianTestnetSubchain1, c242 as Plinga, c99 as PoaNetworkCore, c77 as PoaNetworkSokol, c2606 as Pocrnet, c333999 as Polis, c333888 as PolisTestnet, c137 as Polygon, c11891 as PolygonSupernetArianee, c1101 as PolygonZkevm, c1442 as PolygonZkevmTestnet, c1402 as PolygonZkevmTestnetOld, c1422 as PolygonZkevmTestnetPreAuditUpgraded, c71393 as PolyjuiceTestnet, c6999 as Polysmartchain, c331771 as Pop, c1213 as Popcateum, c909 as PortalFantasyChain, c808 as PortalFantasyChainTest, c920000 as PosichainDevnetShard0, c920001 as PosichainDevnetShard1, c900000 as PosichainShard0, c910000 as PosichainTestnetShard0, c78 as Primuschain, c88883 as ProjOrcTestnetAlpha, c18159 as ProofOfMemes, c331769 as ProofofpepeTestnet, c110 as ProtonTestnet, c1031 as ProxyNetworkTestnet, c2020 as Publicmint, c2018 as PublicmintDevnet, c2019 as PublicmintTestnet, c369 as Pulsechain, c940 as PulsechainTestnet, c941 as PulsechainTestnetV2b, c942 as PulsechainTestnetV3, c943 as PulsechainTestnetV4, c35441 as Q, c35443 as QTestnet, c9528 as Qeasyweb3Testnet, c62278 as Qi1121i1, c17026 as Qi1204i3, c15535 as QiM11271, c12035 as QiM11272, c80182 as QiM12051, c813 as Qitmeer, c8132 as QitmeerNetworkMixnet, c8133 as QitmeerNetworkPrivnet, c8131 as QitmeerNetworkTestnet, c766 as Ql1, c7668378 as Ql1Testnet, c993535 as Qr1120y1, c35730 as Qr1129i1, c36908 as Qr1205s1, c10946 as QuadransBlockchain, c10947 as QuadransBlockchainTestnet, c81720 as QuantumChain, c12890 as QuantumChainTestnet, c8888888 as Quarix, c8888881 as QuarixTestnet, c20181205 as Quarkblockchain, c110000 as QuarkchainDevnetRoot, c110001 as QuarkchainDevnetShard0, c110002 as QuarkchainDevnetShard1, c110003 as QuarkchainDevnetShard2, c110004 as QuarkchainDevnetShard3, c110005 as QuarkchainDevnetShard4, c110006 as QuarkchainDevnetShard5, c110007 as QuarkchainDevnetShard6, c110008 as QuarkchainDevnetShard7, c100000 as QuarkchainRoot, c100001 as QuarkchainShard0, c100002 as QuarkchainShard1, c100003 as QuarkchainShard2, c100004 as QuarkchainShard3, c100005 as QuarkchainShard4, c100006 as QuarkchainShard5, c100007 as QuarkchainShard6, c100008 as QuarkchainShard7, c8881 as QuartzByUnique, c2077 as Quokkacoin, c7484 as RabaNetwork, c1807 as RabbitAnalogTestnetChain, c2025 as RangersProtocol, c9527 as RangersProtocolTestnetRobin, c1380996178 as Raptorchain, c278611351 as RazorSkaleChain, c121 as Realchain, c221230 as Reapchain, c221231 as ReapchainTestnet, c151 as RedbellyNetwork, c152 as RedbellyNetworkDevnet, c153 as RedbellyNetworkTestnet, c154 as RedbellyNetworkTge, c2611 as RedlightChain, c17001 as RedstoneHoleskyTestnet, c33909 as Reg1116test, c55555 as ReiChain, c55556 as ReiChainTestnet, c47805 as ReiNetwork, c75000 as Resincoin, c1433 as RikezaNetwork, c12715 as RikezaNetworkTestnet, c917 as RiniaTestnet, c9170 as RiniaTestnetOld, c4 as Rinkeby, c7777 as RiseOfTheWarbotsTestnet, c570 as Rollux, c57000 as RolluxTestnet, c30 as Rootstock, c31 as RootstockTestnet, c3 as Ropsten, c499 as Rupaya, c7225878 as Saakuru, c247253 as SaakuruTestnet, c1022 as Sakura, c11888 as SanrChain, c8883 as SapphireByUnique, c51712 as Sardis, c11612 as SardisTestnet, c12009 as Satoshichain, c5758 as SatoshichainTestnet, c1985 as Satoshie, c1986 as SatoshieTestnet, c65450 as Scolcoin, c6552 as ScolcoinWeichainTestnet, c742 as ScriptTestnet, c534352 as Scroll, c534353 as ScrollAlphaTestnet, c534354 as ScrollPreAlphaTestnet, c534351 as ScrollSepoliaTestnet, c34 as Securechain, c3434 as SecurechainTestnet, c186 as Seele, c3699 as Senjepowers, c3698 as SenjepowersTestnet, c11155111 as Sepolia, c58008 as SepoliaPgnPublicGoodsNetwork, c258 as Setheum, c8080 as ShardeumLiberty1X, c8081 as ShardeumLiberty2X, c8082 as ShardeumSphinx1X, c1506 as Sherpax, c1507 as SherpaxTestnet, c27 as Shibachain, c109 as Shibarium, c719 as ShibariumBeta, c336 as Shiden, c148 as Shimmerevm, c1073 as ShimmerevmTestnet, c1071 as ShimmerevmTestnetDeprecated, c1072 as ShimmerevmTestnetDeprecated1072, c214 as Shinarium, c534849 as ShinariumBeta, c2044 as ShrapnelSubnet, c2038 as ShrapnelTestnet, c7341 as Shyft, c11437 as ShyftTestnet, c111111 as SiberiumNetwork, c111000 as SiberiumTestNetwork, c12052 as SingularityZero, c12051 as SingularityZeroTestnet, c67390 as Siriusnet, c217 as SiriusnetV2, c98 as SixProtocol, c150 as SixProtocolTestnet, c10086 as Sjatsh, c1564830818 as SkaleCalypsoHub, c344106930 as SkaleCalypsoHubTestnet, c2046399126 as SkaleEuropaHub, c476158412 as SkaleEuropaHubTestnet, c1482601649 as SkaleNebulaHub, c503129905 as SkaleNebulaHubTestnet, c1350216234 as SkaleTitanHub, c1517929550 as SkaleTitanHubTestnet, c10000 as SmartBitcoinCash, c10001 as SmartBitcoinCashTestnet, c1177 as SmartHostTeknolojiTestnet, c18122 as SmartTradeNetworks, c20180430 as Smartmesh, c281121 as SocialSmartChain, c2332 as SomaNetwork, c2323 as SomaNetworkTestnet, c19 as SongbirdCanaryNetwork, c68 as Soterone, c218 as SoteroneOld, c10101010 as Soverun, c101010 as SoverunTestnet, c88882 as SpicyChain, c1904 as SportsChainNetwork, c13000 as Sps, c14000 as SpsTestnet, c23934 as St1116V7Regression, c19683 as St1207V1, c700 as StarSocialTestnet, c1234 as StepNetwork, c12345 as StepTestnet, c2048 as Stratos, c2047 as StratosTestnet, c8098 as StreamuxBlockchain, c208 as Structx, c1970 as SuperSmartChain, c1969 as SuperSmartChainTestnet, c262 as SurBlockchainNetwork, c13812 as Susono, c230 as Swapdex, c94 as Swissdlt, c1291 as SwisstronikTestnet, c416 as SxNetwork, c647 as SxNetworkTestnet, c1149 as SymplexiaSmartChain, c444 as SynapseChainTestnet, c57 as Syscoin, c5700 as SyscoinTanenbaumTestnet, c88888888 as TEAMBlockchain, c1004 as TEkta, c224168 as TafEcoChain, c167004 as TaikoAlpha2Testnet, c167006 as TaikoEldfellL3, c167005 as TaikoGrimsvotnL2, c167007 as TaikoJolnirL2, c5678 as TanssiEvmContainerchain, c558 as TaoNetwork, c841 as Taraxa, c842 as TaraxaTestnet, c22023 as Taycan, c2023 as TaycanTestnet, c1707 as Tbsi, c1708 as TbsiTestnet, c35 as TbwgChain, c2400 as TcgVerse, c2569 as Techpay, c1003 as TectumEmissionToken, c8000 as Teleport, c8001 as TeleportTestnet, c40 as TelosEvm, c41 as TelosEvmTestnet, c1559 as Tenet, c155 as TenetTestnet, c1856 as Teslafunds, c8181 as TestnetBeoneChain, c7 as Thaichain, c17 as Thaichain20Thaifi, c7668 as TheRootNetwork, c7672 as TheRootNetworkPorciniTestnet, c361 as Theta, c364 as ThetaAmberTestnet, c363 as ThetaSapphireTestnet, c365 as ThetaTestnet, c70000 as ThinkiumChain0, c70001 as ThinkiumChain1, c70103 as ThinkiumChain103, c70002 as ThinkiumChain2, c60000 as ThinkiumTestnetChain0, c60001 as ThinkiumTestnetChain1, c60103 as ThinkiumTestnetChain103, c60002 as ThinkiumTestnetChain2, c894538 as ThirdwebTestSubnet, c108 as Thundercore, c18 as ThundercoreTestnet, c1127469 as TiltyardSubnet, c404040 as Tipboxcoin, c4141 as TipboxcoinTestnet, c55004 as Titan, c5177 as TlchainNetwork, c8768 as TmyChain, c8654 as TokiNetwork, c8655 as TokiTestnet, c6969 as TombChain, c88 as Tomochain, c89 as TomochainTestnet, c8723 as ToolGlobal, c8724 as ToolGlobalTestnet, c989 as Top, c980 as TopEvm, c77777 as Toronet, c54321 as ToronetTestnet, c8192 as Torus, c8194 as TorusTestnet, c5002 as TreasurenetAlpha, c5005 as TreasurenetTestnet, c6066 as Tres, c6065 as TresTestnet, c5353 as TritaniumTestnet, c15555 as TrustEvmTestnet, c330844 as TtcoinSmartChain, c39 as U2uSolaris, c99999 as UbSmartChain, c99998 as UbSmartChainTestnet, c8 as Ubiq, c9 as UbiqNetworkTestnet, c1231 as Ultron, c1230 as UltronTestnet, c2484 as UnicornUltraNebulasTestnet, c8880 as Unique, c117 as Uptick, c6119 as Uptn, c6118 as UptnTestnet, c5315 as UzmiNetwork, c38 as Valorbit, c2223 as Vchain, c100009 as Vechain, c100010 as VechainTestnet, c555 as Vela1Chain, c106 as VelasEvm, c56789 as VeloLabs, c4919 as Venidium, c4918 as VenidiumTestnet, c77612 as VentionSmartChain, c741 as VentionSmartChainTestnet, c5522 as VexEvmTestnet, c207 as VinuchainNetwork, c206 as VinuchainTestnet, c888888 as Vision, c666666 as VisionVpioneerTestChain, c3102 as VultureEvmBeta, c8889 as VyvoSmartChain, c11111 as Wagmi, c888 as Wanchain, c105 as Web3gamesDevnet, c102 as Web3gamesTestnet, c333 as Web3q, c3334 as Web3qGalileo, c3333 as Web3qTestnet, c24484 as Webchain, c444900 as WeelinkTestnet, c5869 as WegochainRubidium, c1111 as Wemix30, c1112 as Wemix30Testnet, c1875 as WhitebitNetwork, c2625 as WhitebitNetworkTestnet, c69740 as WillSTestnet, c49049 as WireshapeFloripaTestnet, c139 as Woopchain, c1202 as WorldTradeTechnicalChain, c103 as Worldland, c10395 as WorldlandTestnet, c91003 as WorldsAppchain, c4281033 as WorldsCaldera, c309 as WyzthTestnet, c196 as X1, c202212 as X1Devnet, c4003 as X1Fastnet, c204005 as X1Network, c195 as X1Testnet, c47279324479 as XaiGoerliOrbit, c8888 as Xanachain, c9322252 as Xcap, c51 as XdcApothemNetwork, c50 as XdcNetwork, c1313500 as Xerom, c2415 as Xodex, c37 as Xpla, c47 as XplaTestnet, c3701 as XplaTestnetXplatest, c1440001 as XrpLedgerEvmDevnetSidechain, c520 as XtSmartChain, c927 as YidarkChain, c345 as YooldoVerse, c3999 as Yuanchain, c2016 as ZMainnet, c9768 as ZTestnet, c1369 as Zafirium, c3331 as ZcoreTestnet, c427 as ZeethChain, c859 as ZeethChainDev, c383414847825 as Zeniq, c79 as Zenith, c7000 as Zetachain, c7001 as ZetachainAthens3Testnet, c82807 as ZfirstAvacloudSubnetThirdweb, c1337803 as Zhejiang, c33469 as Zilliqa2EvmDevnet, c32769 as ZilliqaEvm, c33385 as ZilliqaEvmDevnet, c32990 as ZilliqaEvmIsolatedServer, c33101 as ZilliqaEvmTestnet, c1261120 as Zkatana, c43851 as ZkfairTestnet, c324 as Zksync, c280 as ZksyncEraGoerliTestnetDeprecated, c300 as ZksyncSepoliaTestnet, c7777777 as Zora, c999999999 as ZoraSepoliaTestnet, c999 as ZoraTestnet, c55 as Zyx, c10248 as _0xtade, c846000 as _4goodnetwork, c997 as _5irechainThunder, allChains, configureChain, defaultChains, fetchChain, fetchChains, getChainByChainId, getChainByChainIdAsync, getChainBySlug, getChainBySlugAsync, getChainIdsBySlug, getChainRPC, getChainRPCs, getValidChainRPCs, minimizeChain, updateChainRPCs };\n","import { sha256 as sha256$1 } from '@noble/hashes/sha256';\nimport { keccak_256 } from 'js-sha3';\n\nclass TextProcessorCache {\n #encoder;\n #decoder;\n get encoder() {\n if (!this.#encoder) {\n this.#encoder = new TextEncoder();\n }\n return this.#encoder;\n }\n get decoder() {\n if (!this.#decoder) {\n this.#decoder = new TextDecoder();\n }\n return this.#decoder;\n }\n}\n\n// create a singleton instance of the TextProcessorCache\nconst textProcessorSingleton = new TextProcessorCache();\nfunction getCachedTextEncoder() {\n return textProcessorSingleton.encoder;\n}\nfunction getCachedTextDecoder() {\n return textProcessorSingleton.decoder;\n}\n\n// stripped down version of `js-md5`\n// changes:\n// - we know we always have ArrayBuffer available\n// - we only care about `arrayBuffer` output\n// - we want to behave the same regardless of NODE or non NODE env\n// - transformed into class\n// - typescript\n\n/**\n * [js-md5]{@link https://github.com/emn178/js-md5}\n *\n * @namespace md5\n * @version 0.8.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\n * @license MIT\n */\n\nconst INPUT_ERROR = \"input is invalid type\";\nconst FINALIZE_ERROR = \"finalize already called\";\nconst EXTRA = [128, 32768, 8388608, -2147483648];\n\n// [message: string, isString: bool]\nfunction formatMessage(message) {\n const type = typeof message;\n if (typeof message === \"string\") {\n return [message, true];\n }\n if (type !== \"object\" || message === null) {\n throw new Error(INPUT_ERROR);\n }\n if (message instanceof ArrayBuffer) {\n return [new Uint8Array(message), false];\n }\n if (!Array.isArray(message) && !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n return [message, false];\n}\n\n/**\n * Md5 class\n * @class Md5\n * @description This is internal class.\n * @see {@link md5.create}\n */\nclass Md5 {\n lastByteIndex = 0;\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const buffer = new ArrayBuffer(68);\n this.buffer8 = new Uint8Array(buffer);\n this.blocks = new Uint32Array(buffer);\n this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n /**\n * @method update\n * @memberof Md5\n * @instance\n * @description Update hash\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @see {@link md5.update}\n */\n update(inputMessage) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n const [message, isString] = formatMessage(inputMessage);\n const blocks = this.blocks;\n let length = 0;\n if (ArrayBuffer.isView(message)) {\n length = message.byteLength;\n } else {\n length = message.length;\n }\n let code,\n index = 0,\n i;\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const buffer8 = this.buffer8;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n if (isString) {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n buffer8[i++] = code;\n } else if (code < 0x800) {\n buffer8[i++] = 0xc0 | code >>> 6;\n buffer8[i++] = 0x80 | code & 0x3f;\n } else if (code < 0xd800 || code >= 0xe000) {\n buffer8[i++] = 0xe0 | code >>> 12;\n buffer8[i++] = 0x80 | code >>> 6 & 0x3f;\n buffer8[i++] = 0x80 | code & 0x3f;\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n buffer8[i++] = 0xf0 | code >>> 18;\n buffer8[i++] = 0x80 | code >>> 12 & 0x3f;\n buffer8[i++] = 0x80 | code >>> 6 & 0x3f;\n buffer8[i++] = 0x80 | code & 0x3f;\n }\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n // at this point we know it's not a string\n buffer8[i++] = message[index];\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n }\n finalize() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const blocks = this.blocks,\n i = this.lastByteIndex;\n blocks[i >>> 2] |= EXTRA[i & 3];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.bytes << 3;\n blocks[15] = this.hBytes << 3 | this.bytes >>> 29;\n this.hash();\n }\n hash() {\n const blocks = this.blocks;\n let a, b, c, d, bc, da;\n if (this.first) {\n a = blocks[0] - 680876937;\n a = (a << 7 | a >>> 25) - 271733879 << 0;\n d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;\n d = (d << 12 | d >>> 20) + a << 0;\n c = (-271733879 ^ d & (a ^ -271733879)) + blocks[2] - 1126478375;\n c = (c << 17 | c >>> 15) + d << 0;\n b = (a ^ c & (d ^ a)) + blocks[3] - 1316259209;\n b = (b << 22 | b >>> 10) + c << 0;\n } else {\n a = this.h0;\n b = this.h1;\n c = this.h2;\n d = this.h3;\n a += (d ^ b & (c ^ d)) + blocks[0] - 680876936;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[1] - 389564586;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[2] + 606105819;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[3] - 1044525330;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n a += (d ^ b & (c ^ d)) + blocks[4] - 176418897;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[5] + 1200080426;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[6] - 1473231341;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[7] - 45705983;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ b & (c ^ d)) + blocks[8] + 1770035416;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[9] - 1958414417;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[10] - 42063;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[11] - 1990404162;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ b & (c ^ d)) + blocks[12] + 1804603682;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[13] - 40341101;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[14] - 1502002290;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[15] + 1236535329;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[1] - 165796510;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[6] - 1069501632;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[11] + 643717713;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[0] - 373897302;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[5] - 701558691;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[10] + 38016083;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[15] - 660478335;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[4] - 405537848;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[9] + 568446438;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[14] - 1019803690;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[3] - 187363961;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[8] + 1163531501;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[13] - 1444681467;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[2] - 51403784;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[7] + 1735328473;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[12] - 1926607734;\n b = (b << 20 | b >>> 12) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[5] - 378558;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[8] - 2022574463;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[11] + 1839030562;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[14] - 35309556;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[1] - 1530992060;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[4] + 1272893353;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[7] - 155497632;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[10] - 1094730640;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[13] + 681279174;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[0] - 358537222;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[3] - 722521979;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[6] + 76029189;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[9] - 640364487;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[12] - 421815835;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[15] + 530742520;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[2] - 995338651;\n b = (b << 23 | b >>> 9) + c << 0;\n a += (c ^ (b | ~d)) + blocks[0] - 198630844;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[7] + 1126891415;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[14] - 1416354905;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[5] - 57434055;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[12] + 1700485571;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[3] - 1894986606;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[10] - 1051523;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[1] - 2054922799;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[8] + 1873313359;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[15] - 30611744;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[6] - 1560198380;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[13] + 1309151649;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[4] - 145523070;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[11] - 1120210379;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[2] + 718787259;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[9] - 343485551;\n b = (b << 21 | b >>> 11) + c << 0;\n if (this.first) {\n this.h0 = a + 1732584193 << 0;\n this.h1 = b - 271733879 << 0;\n this.h2 = c - 1732584194 << 0;\n this.h3 = d + 271733878 << 0;\n this.first = false;\n } else {\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n }\n }\n\n /**\n * @method arrayBuffer\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.arrayBuffer}\n * @example\n * hash.arrayBuffer();\n */\n arrayBuffer() {\n this.finalize();\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const buffer = new ArrayBuffer(16);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const blocks = new Uint32Array(buffer);\n blocks[0] = this.h0;\n blocks[1] = this.h1;\n blocks[2] = this.h2;\n blocks[3] = this.h3;\n return buffer;\n }\n}\nfunction arrayBuffer(uint8Arr) {\n const md5 = new Md5();\n md5.update(uint8Arr);\n return md5.arrayBuffer();\n}\n\n// taken from: https://github.com/sindresorhus/uint8array-extras\nconst objectToString = Object.prototype.toString;\nconst uint8ArrayStringified = \"[object Uint8Array]\";\nfunction isUint8Array(value) {\n if (!value) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n return objectToString.call(value) === uint8ArrayStringified;\n}\nfunction assertUint8Array(value) {\n if (!isUint8Array(value)) {\n throw new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n }\n}\nfunction concatUint8Arrays(arrays, totalLength) {\n if (arrays.length === 0) {\n return new Uint8Array(0);\n }\n totalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n const returnValue = new Uint8Array(totalLength);\n let offset = 0;\n for (const array of arrays) {\n assertUint8Array(array);\n returnValue.set(array, offset);\n offset += array.length;\n }\n return returnValue;\n}\nfunction assertString(value) {\n if (typeof value !== \"string\") {\n throw new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n }\n}\nfunction base64ToBase64Url(base64) {\n return base64.replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/, \"\");\n}\nfunction base64UrlToBase64(base64url) {\n return base64url.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n}\n\n// Reference: https://phuoc.ng/collection/this-vs-that/concat-vs-push/\nconst MAX_BLOCK_SIZE = 65_535;\nfunction uint8ArrayToBase64(array) {\n let {\n urlSafe = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertUint8Array(array);\n let base64;\n if (array.length < MAX_BLOCK_SIZE) {\n // Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n base64 = globalThis.btoa(String.fromCodePoint.apply(this, array));\n } else {\n base64 = \"\";\n for (const value of array) {\n base64 += String.fromCodePoint(value);\n }\n base64 = globalThis.btoa(base64);\n }\n return urlSafe ? base64ToBase64Url(base64) : base64;\n}\nfunction base64ToUint8Array(base64String) {\n assertString(base64String);\n return Uint8Array.from(globalThis.atob(base64UrlToBase64(base64String)), x => x.codePointAt(0));\n}\nconst byteToHexLookupTable = Array.from({\n length: 256\n}, (_, index) => index.toString(16).padStart(2, \"0\"));\nfunction uint8ArrayToHex(array) {\n assertUint8Array(array);\n\n // Concatenating a string is faster than using an array.\n let hexString = \"\";\n for (let index = 0; index < array.length; index++) {\n hexString += byteToHexLookupTable[array[index]];\n }\n return hexString;\n}\n\nasync function universalCrypto() {\n if (\"crypto\" in globalThis) {\n return globalThis.crypto;\n }\n\n // otherwise we are in node 18 so we can use `webcrypto` off of the \"node:crypto\" package and treat it as native\n // trick bundlers so that they leave this alone :)\n const pto = \"pto\";\n // this becomes `node:crypto` at runtime\n return (await import(\"node\" + \":cry\" + pto)).webcrypto;\n}\n\n/**\n * This is an implementation of the CryptoJS AES decryption scheme, without actually relying on crypto-js.\n */\n\nconst HEAD_SIZE_DWORD = 2;\nconst SALT_SIZE_DWORD = 2;\nasync function decryptCryptoJSCipherBase64(salt, ciphertext, password) {\n let {\n keySizeDWORD = 256 / 32,\n ivSizeDWORD = 128 / 32,\n iterations = 1\n } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const crypto = await universalCrypto();\n const {\n key,\n iv\n } = await dangerouslyDeriveParameters(password, salt, keySizeDWORD, ivSizeDWORD, iterations);\n try {\n // decrypt ciphertext using key\n const plainBuffer = await crypto.subtle.decrypt({\n name: \"AES-CBC\",\n iv\n }, key, ciphertext);\n // return the plaintext from ArrayBuffer\n return getCachedTextDecoder().decode(plainBuffer);\n } catch (e) {\n throw new Error(\"Decrypt failed\");\n }\n}\nfunction parseCryptoJSCipherBase64(cryptoJSCipherBase64) {\n let salt = null;\n let ciphertext = base64ToUint8Array(cryptoJSCipherBase64);\n const [head, body] = splitUint8Array(ciphertext, HEAD_SIZE_DWORD * 4);\n\n // This effectively checks if the ciphertext starts with 'Salted__', which is the crypto-js convention.\n const headDataView = new DataView(head.buffer);\n if (headDataView.getInt32(0) === 0x53616c74 && headDataView.getInt32(4) === 0x65645f5f) {\n [salt, ciphertext] = splitUint8Array(body, SALT_SIZE_DWORD * 4);\n }\n return {\n ciphertext,\n salt\n };\n}\nasync function dangerouslyDeriveParameters(password, salt, keySizeDWORD, ivSizeDWORD, iterations) {\n const crypto = await universalCrypto();\n const passwordUint8Array = getCachedTextEncoder().encode(password);\n const keyPlusIV = dangerousEVPKDF(passwordUint8Array, salt, keySizeDWORD + ivSizeDWORD, iterations);\n const [rawKey, iv] = splitUint8Array(keyPlusIV, keySizeDWORD * 4);\n const key = await crypto.subtle.importKey(\"raw\", rawKey, \"AES-CBC\", false, [\"decrypt\"]);\n return {\n key,\n iv\n };\n}\nfunction dangerousEVPKDF(passwordUint8Array, saltUint8Array, keySizeDWORD, iterations) {\n let derivedKey = new Uint8Array();\n let block = new Uint8Array();\n while (derivedKey.byteLength < keySizeDWORD * 4) {\n block = new Uint8Array(arrayBuffer(concatUint8Arrays([block, passwordUint8Array, saltUint8Array])));\n for (let i = 1; i < iterations; i++) {\n block = new Uint8Array(arrayBuffer(block));\n }\n derivedKey = concatUint8Arrays([derivedKey, block]);\n }\n return derivedKey;\n}\nfunction splitUint8Array(a, i) {\n return [a.subarray(0, i), a.subarray(i, a.length)];\n}\n\n/**\n * Decrypts ciphertext encrypted with aesEncrypt() using supplied password.\n *\n * @param ciphertext - Ciphertext to be decrypted.\n * @param password - Password to use to decrypt ciphertext.\n * @returns Decrypted plaintext.\n *\n * @example\n * const plaintext = await aesDecrypt(ciphertext, 'pw');\n */\nasync function aesDecrypt(ciphertext, password) {\n const crypto = await universalCrypto();\n // encode password as UTF-8\n const pwUtf8 = getCachedTextEncoder().encode(password);\n // hash the password\n const pwHash = await crypto.subtle.digest(\"SHA-256\", pwUtf8);\n const cipherUint8Array = base64ToUint8Array(ciphertext);\n\n // iv\n const iv = cipherUint8Array.slice(0, 12);\n\n // specify algorithm to use\n const alg = {\n name: \"AES-GCM\",\n iv\n };\n\n // generate key from pw\n const key = await crypto.subtle.importKey(\"raw\", pwHash, alg, false, [\"decrypt\"]);\n\n // ciphertext\n const ctUint8 = cipherUint8Array.slice(12);\n try {\n // decrypt ciphertext using key\n const plainBuffer = await crypto.subtle.decrypt(alg, key, ctUint8);\n // return the plaintext from ArrayBuffer\n return getCachedTextDecoder().decode(plainBuffer);\n } catch (e) {\n throw new Error(\"Decrypt failed\");\n }\n}\n\n/**\n * Decrypts ciphertext encrypted with aesEncrypt() OR \"crypto-js\".AES using supplied password.\n *\n * @param ciphertext - Ciphertext to be decrypted.\n * @param password - Password to use to decrypt ciphertext.\n * @returns Decrypted plaintext.\n *\n * @example\n * const plaintext = await aesDecryptCompat(ciphertext, 'pw');\n */\nasync function aesDecryptCompat(ciphertext, password) {\n // determine if we're dealing with a legacy (cryptojs) ciphertext\n const cryptoJs = parseCryptoJSCipherBase64(ciphertext);\n if (cryptoJs.salt && cryptoJs.ciphertext) {\n return decryptCryptoJSCipherBase64(cryptoJs.salt, cryptoJs.ciphertext, password);\n }\n // otherwise assume it's a ciphertext generated by aesEncrypt()\n return aesDecrypt(ciphertext, password);\n}\n\n/**\n * Encrypts plaintext using AES-GCM with supplied password, for decryption with aesDecrypt().\n *\n * @param plaintext - Plaintext to be encrypted.\n * @param password - Password to use to encrypt plaintext.\n * @returns Encrypted ciphertext.\n *\n * @example\n * const ciphertext = await aesEncrypt('my secret text', 'pw');\n */\nasync function aesEncrypt(plaintext, password) {\n const crypto = await universalCrypto();\n const textEncoder = getCachedTextEncoder();\n // encode password as UTF-8\n const pwUtf8 = textEncoder.encode(password);\n // hash the password\n const pwHash = await crypto.subtle.digest(\"SHA-256\", pwUtf8);\n\n // get 96-bit random iv\n const iv = crypto.getRandomValues(new Uint8Array(12));\n\n // specify algorithm to use\n const alg = {\n name: \"AES-GCM\",\n iv\n };\n\n // generate key from pw\n const key = await crypto.subtle.importKey(\"raw\", pwHash, alg, false, [\"encrypt\"]);\n\n // encode plaintext as UTF-8\n const ptUint8 = textEncoder.encode(plaintext);\n // encrypt plaintext using key\n const ctBuffer = await crypto.subtle.encrypt(alg, key, ptUint8);\n\n // iv+ciphertext base64-encoded\n return uint8ArrayToBase64(concatUint8Arrays([iv, new Uint8Array(ctBuffer)]));\n}\n\n/**\n * Hash a string or Uint8Array using sha256.\n * @param value - Value to be hashed.\n * @returns A promise that resolves to the hash of the value as Uint8Array.\n */\nasync function sha256(value) {\n let encodedValue;\n if (typeof value === \"string\") {\n // if we do not have a cahced TextEncoder instance, create one\n\n encodedValue = getCachedTextEncoder().encode(value);\n } else {\n encodedValue = value;\n }\n return new Uint8Array(await (await universalCrypto()).subtle.digest(\"SHA-256\", encodedValue));\n}\n\n/**\n * Hash a string or Uint8Array using sha256 and returns the result as a hex string.\n * @param value - Value to be hashed.\n * @returns A promise that resolves to the hash of the value as a hex string.\n */\nasync function sha256Hex(value) {\n return uint8ArrayToHex(await sha256(value));\n}\n\n/**\n * Hash a string or Uint8Array using sha256.\n * @param value - Value to be hashed.\n * @returns The hash of the value as Uint8Array.\n */\nfunction sha256Sync(value) {\n return sha256$1(value);\n}\n\n/**\n * Hash a string or Uint8Array using sha256.\n * @param value - Value to be hashed.\n * @returns The hash of the value as a hex string.\n */\nfunction sha256HexSync(value) {\n return uint8ArrayToHex(sha256Sync(value));\n}\n\n/**\n * Hashes a string or Uint8Array using keccak256.\n * @param value - Value to be hashed.\n * @returns Hash of the value as Uint8Array.\n */\nfunction keccak256Sync(value) {\n return new Uint8Array(keccak_256.arrayBuffer(value));\n}\n\n/**\n * Hashes a string or Uint8Array using keccak256 and returns the result as a hex string.\n * @param value - Value to be hashed.\n * @returns Hash of the value as a hex string.\n */\nfunction keccak256SyncHex(value) {\n return keccak_256(value);\n}\n\n/**\n * Hashes a string or Uint8Array using keccak256 and returns the result as a hex string prefixed with \"0x\".\n * @param value - Value to be hashed.\n * @returns Hash of the value as a hex string prefixed with \"0x\".\n */\nfunction keccak256SyncHexPrefixed(value) {\n // prefix with 0x (this is what ethers.utils.keccak256 does)\n return `0x${keccak256SyncHex(value)}`;\n}\n\nexport { aesDecrypt, aesDecryptCompat, aesEncrypt, keccak256Sync, keccak256SyncHex, keccak256SyncHexPrefixed, sha256, sha256Hex, sha256HexSync, sha256Sync };\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.9.2\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2023\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n\n var isArray = root.JS_SHA3_NO_NODE_JS || !Array.isArray\n ? function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n }\n : Array.isArray;\n\n var isView = (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView))\n ? function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n }\n : ArrayBuffer.isView;\n\n // [message: string, isString: bool]\n var formatMessage = function (message) {\n var type = typeof message;\n if (type === 'string') {\n return [message, true];\n }\n if (type !== 'object' || message === null) {\n throw new Error(INPUT_ERROR);\n }\n if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n return [new Uint8Array(message), false];\n }\n if (!isArray(message) && !isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n return [message, false];\n }\n\n var empty = function (message) {\n return formatMessage(message)[0].length === 0;\n };\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (empty(n) && empty(s)) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var result = formatMessage(message);\n message = result[0];\n var isString = result[1];\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (isString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var result = formatMessage(str);\n str = result[0];\n var isString = result[1];\n var bytes = 0, length = str.length;\n if (isString) {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n } else {\n bytes = length;\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = (w - bytes % w) % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","const GENERATED_ABI = {};\n\nexport { GENERATED_ABI };\n","import { getAbortController, noop, replaceData, timeUntilStale } from './utils'\nimport { defaultLogger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { canFetch, createRetryer, isCancelledError } from './retryer'\nimport { Removable } from './removable'\nimport type {\n CancelOptions,\n FetchStatus,\n InitialDataFunction,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Logger } from './logger'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n logger?: Logger\n options?: QueryOptions\n defaultOptions?: QueryOptions\n state?: QueryState\n}\n\nexport interface QueryState {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: any\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise\n fetchOptions?: FetchOptions\n signal?: AbortSignal\n options: QueryOptions\n queryKey: TQueryKey\n state: QueryState\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext,\n ) => void\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: any\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: any\n}\n\ninterface SuccessAction {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction {\n type: 'setState'\n state: Partial>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction\n | SuccessAction\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions\n initialState: QueryState\n revertState?: QueryState\n state: QueryState\n isFetchingOptimistic?: boolean\n\n private cache: QueryCache\n private logger: Logger\n private promise?: Promise\n private retryer?: Retryer\n private observers: QueryObserver[]\n private defaultOptions?: QueryOptions\n private abortSignalConsumed: boolean\n\n constructor(config: QueryConfig) {\n super()\n\n this.abortSignalConsumed = false\n this.defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.cache = config.cache\n this.logger = config.logger || defaultLogger\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.initialState = config.state || getDefaultState(this.options)\n this.state = this.initialState\n this.scheduleGc()\n }\n\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n private setOptions(\n options?: QueryOptions,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\n\n this.updateCacheTime(this.options.cacheTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise {\n const promise = this.promise\n this.retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n this.observers.some((observer) => observer.getCurrentResult().isStale)\n )\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n addObserver(observer: QueryObserver): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({ revert: true })\n } else {\n this.retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions,\n fetchOptions?: FetchOptions,\n ): Promise {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({ silent: true })\n } else if (this.promise) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.retryer?.continueRetry()\n // Return current promise if we are already fetching\n return this.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n this.logger.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = getAbortController()\n\n // Create query function context\n const queryFnContext: QueryFunctionContext = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta,\n }\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true\n return abortController.signal\n }\n return undefined\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(\n `Missing queryFn for queryKey '${this.options.queryHash}'`,\n )\n }\n this.abortSignalConsumed = false\n return this.options.queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const context: FetchContext = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(context)\n\n // Store state in case the current fetch needs to be reverted\n this.revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.cache.config.onError?.(error, this as Query)\n this.cache.config.onSettled?.(\n this.state.data,\n error,\n this as Query,\n )\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.retryer = createRetryer({\n fn: context.fetchFn as () => TData,\n abort: abortController?.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data as TData)\n\n // Notify cache callback\n this.cache.config.onSuccess?.(data, this as Query)\n this.cache.config.onSettled?.(\n data,\n this.state.error,\n this as Query,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n })\n\n this.promise = this.retryer.promise\n\n return this.promise\n }\n\n private dispatch(action: Action): void {\n const reducer = (\n state: QueryState,\n ): QueryState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading',\n }),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState, fetchStatus: 'idle' }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error as TError,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action)\n })\n\n this.cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions,\n): QueryState {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction)()\n : options.initialData\n\n const hasData = typeof data !== 'undefined'\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle',\n }\n}\n","import { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type { NotifyEvent, QueryKey, QueryOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query) => void\n onSuccess?: (data: unknown, query: Query) => void\n onSettled?: (\n data: unknown | undefined,\n error: unknown | null,\n query: Query,\n ) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query\n action: Action\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query\n observer: QueryObserver\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable {\n config: QueryCacheConfig\n\n private queries: Query[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build(\n client: QueryClient,\n options: QueryOptions,\n state?: QueryState,\n ): Query {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find(\n arg1: QueryKey,\n arg2?: QueryFilters,\n ): Query | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(queryKey?: QueryKey, filters?: QueryFilters): Query[]\n findAll(filters?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach(({ listener }) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Mutation } from './mutation'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\nimport type { MutationObserver } from './mutationObserver'\nimport type { MutationOptions, NotifyEvent } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Action, MutationState } from './mutation'\nimport type { MutationFilters } from './utils'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSettled?: (\n data: unknown | undefined,\n error: unknown | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation\n action: Action\n}\n\ntype MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable {\n config: MutationCacheConfig\n\n private mutations: Mutation[]\n private mutationId: number\n private resuming: Promise | undefined\n\n constructor(config?: MutationCacheConfig) {\n super()\n this.config = config || {}\n this.mutations = []\n this.mutationId = 0\n }\n\n build(\n client: QueryClient,\n options: MutationOptions,\n state?: MutationState,\n ): Mutation {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey\n ? client.getMutationDefaults(options.mutationKey)\n : undefined,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation): void {\n this.mutations.push(mutation)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation): void {\n this.mutations = this.mutations.filter((x) => x !== mutation)\n this.notify({ type: 'removed', mutation })\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.mutations.forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Mutation[] {\n return this.mutations\n }\n\n find(\n filters: MutationFilters,\n ): Mutation | undefined {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.mutations.find((mutation) => matchMutation(filters, mutation))\n }\n\n findAll(filters: MutationFilters): Mutation[] {\n return this.mutations.filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach(({ listener }) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise {\n this.resuming = (this.resuming ?? Promise.resolve())\n .then(() => {\n const pausedMutations = this.mutations.filter((x) => x.state.isPaused)\n return notifyManager.batch(() =>\n pausedMutations.reduce(\n (promise, mutation) =>\n promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve() as Promise,\n ),\n )\n })\n .then(() => {\n this.resuming = undefined\n })\n\n return this.resuming\n }\n}\n","import type { QueryBehavior } from './query'\n\nimport type {\n InfiniteData,\n QueryFunctionContext,\n QueryOptions,\n RefetchQueryFilters,\n} from './types'\n\nexport function infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n>(): QueryBehavior> {\n return {\n onFetch: (context) => {\n context.fetchFn = () => {\n const refetchPage: RefetchQueryFilters['refetchPage'] | undefined =\n context.fetchOptions?.meta?.refetchPage\n const fetchMore = context.fetchOptions?.meta?.fetchMore\n const pageParam = fetchMore?.pageParam\n const isFetchingNextPage = fetchMore?.direction === 'forward'\n const isFetchingPreviousPage = fetchMore?.direction === 'backward'\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n let newPageParams = oldPageParams\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal?.aborted) {\n cancelled = true\n } else {\n context.signal?.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n // Get query function\n const queryFn =\n context.options.queryFn ||\n (() =>\n Promise.reject(\n `Missing queryFn for queryKey '${context.options.queryHash}'`,\n ))\n\n const buildNewPages = (\n pages: unknown[],\n param: unknown,\n page: unknown,\n previous?: boolean,\n ) => {\n newPageParams = previous\n ? [param, ...newPageParams]\n : [...newPageParams, param]\n return previous ? [page, ...pages] : [...pages, page]\n }\n\n // Create function to fetch a page\n const fetchPage = (\n pages: unknown[],\n manual?: boolean,\n param?: unknown,\n previous?: boolean,\n ): Promise => {\n if (cancelled) {\n return Promise.reject('Cancelled')\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages)\n }\n\n const queryFnContext: QueryFunctionContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.options.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const queryFnResult = queryFn(queryFnContext)\n\n const promise = Promise.resolve(queryFnResult).then((page) =>\n buildNewPages(pages, param, page, previous),\n )\n\n return promise\n }\n\n let promise: Promise\n\n // Fetch first page?\n if (!oldPages.length) {\n promise = fetchPage([])\n }\n\n // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getNextPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param)\n }\n\n // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getPreviousPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param, true)\n }\n\n // Refetch pages\n else {\n newPageParams = []\n\n const manual = typeof context.options.getNextPageParam === 'undefined'\n\n const shouldFetchFirstPage =\n refetchPage && oldPages[0]\n ? refetchPage(oldPages[0], 0, oldPages)\n : true\n\n // Fetch first page\n promise = shouldFetchFirstPage\n ? fetchPage([], manual, oldPageParams[0])\n : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0]))\n\n // Fetch remaining pages\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then((pages) => {\n const shouldFetchNextPage =\n refetchPage && oldPages[i]\n ? refetchPage(oldPages[i], i, oldPages)\n : true\n\n if (shouldFetchNextPage) {\n const param = manual\n ? oldPageParams[i]\n : getNextPageParam(context.options, pages)\n return fetchPage(pages, manual, param)\n }\n return Promise.resolve(\n buildNewPages(pages, oldPageParams[i], oldPages[i]),\n )\n })\n }\n }\n\n const finalPromise = promise.then((pages) => ({\n pages,\n pageParams: newPageParams,\n }))\n\n return finalPromise\n }\n },\n }\n}\n\nexport function getNextPageParam(\n options: QueryOptions,\n pages: unknown[],\n): unknown | undefined {\n return options.getNextPageParam?.(pages[pages.length - 1], pages)\n}\n\nexport function getPreviousPageParam(\n options: QueryOptions,\n pages: unknown[],\n): unknown | undefined {\n return options.getPreviousPageParam?.(pages[0], pages)\n}\n\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasNextPage(\n options: QueryOptions,\n pages?: unknown,\n): boolean | undefined {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages)\n return (\n typeof nextPageParam !== 'undefined' &&\n nextPageParam !== null &&\n nextPageParam !== false\n )\n }\n return\n}\n\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasPreviousPage(\n options: QueryOptions,\n pages?: unknown,\n): boolean | undefined {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages)\n return (\n typeof previousPageParam !== 'undefined' &&\n previousPageParam !== null &&\n previousPageParam !== false\n )\n }\n return\n}\n","import {\n functionalUpdate,\n hashQueryKey,\n hashQueryKeyByOptions,\n noop,\n parseFilterArgs,\n parseQueryArgs,\n partialMatchKey,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport { defaultLogger } from './logger'\nimport type { CancelOptions, DefaultedQueryObserverOptions } from './types'\nimport type { Logger } from './logger'\nimport type { QueryState } from './query'\nimport type {\n DefaultOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryClientConfig,\n QueryFunction,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n ResetQueryFilters,\n SetDataOptions,\n WithRequired,\n} from './types'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: QueryOptions\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions\n}\n\n// CLASS\n\nexport class QueryClient {\n private queryCache: QueryCache\n private mutationCache: MutationCache\n private logger: Logger\n private defaultOptions: DefaultOptions\n private queryDefaults: QueryDefaults[]\n private mutationDefaults: MutationDefaults[]\n private mountCount: number\n private unsubscribeFocus?: () => void\n private unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.queryCache = config.queryCache || new QueryCache()\n this.mutationCache = config.mutationCache || new MutationCache()\n this.logger = config.logger || defaultLogger\n this.defaultOptions = config.defaultOptions || {}\n this.queryDefaults = []\n this.mutationDefaults = []\n this.mountCount = 0\n\n if (process.env.NODE_ENV !== 'production' && config.logger) {\n this.logger.error(\n `Passing a custom logger has been deprecated and will be removed in the next major version.`,\n )\n }\n }\n\n mount(): void {\n this.mountCount++\n if (this.mountCount !== 1) return\n\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations()\n this.queryCache.onFocus()\n }\n })\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations()\n this.queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.mountCount--\n if (this.mountCount !== 0) return\n\n this.unsubscribeFocus?.()\n this.unsubscribeFocus = undefined\n\n this.unsubscribeOnline?.()\n this.unsubscribeOnline = undefined\n }\n\n isFetching(filters?: QueryFilters): number\n isFetching(queryKey?: QueryKey, filters?: QueryFilters): number\n isFetching(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): number {\n const [filters] = parseFilterArgs(arg1, arg2)\n filters.fetchStatus = 'fetching'\n return this.queryCache.findAll(filters).length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.mutationCache.findAll({ ...filters, fetching: true }).length\n }\n\n getQueryData(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): TQueryFnData | undefined {\n return this.queryCache.find(queryKey, filters)?.state.data\n }\n\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: WithRequired<\n FetchQueryOptions,\n 'queryKey'\n >,\n ): Promise\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: Omit<\n FetchQueryOptions,\n 'queryKey'\n >,\n ): Promise\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction,\n options?: Omit<\n FetchQueryOptions,\n 'queryKey' | 'queryFn'\n >,\n ): Promise\n ensureQueryData<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | WithRequired<\n FetchQueryOptions,\n 'queryKey'\n >,\n arg2?:\n | QueryFunction\n | FetchQueryOptions,\n arg3?: FetchQueryOptions,\n ): Promise {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const cachedData = this.getQueryData(parsedOptions.queryKey!)\n\n return cachedData\n ? Promise.resolve(cachedData)\n : this.fetchQuery(parsedOptions)\n }\n\n getQueriesData(\n queryKey: QueryKey,\n ): [QueryKey, TQueryFnData | undefined][]\n getQueriesData(\n filters: QueryFilters,\n ): [QueryKey, TQueryFnData | undefined][]\n getQueriesData(\n queryKeyOrFilters: QueryKey | QueryFilters,\n ): [QueryKey, TQueryFnData | undefined][] {\n return this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey, state }) => {\n const data = state.data as TQueryFnData | undefined\n return [queryKey, data]\n })\n }\n\n setQueryData(\n queryKey: QueryKey,\n updater: Updater,\n options?: SetDataOptions,\n ): TQueryFnData | undefined {\n const query = this.queryCache.find(queryKey)\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (typeof data === 'undefined') {\n return undefined\n }\n\n const parsedOptions = parseQueryArgs(queryKey)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n return this.queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData(\n queryKey: QueryKey,\n updater: Updater,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][]\n\n setQueriesData(\n filters: QueryFilters,\n updater: Updater,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][]\n\n setQueriesData(\n queryKeyOrFilters: QueryKey | QueryFilters,\n updater: Updater,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][] {\n return notifyManager.batch(() =>\n this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): QueryState | undefined {\n return this.queryCache.find(queryKey, filters)?.state\n }\n\n removeQueries(filters?: QueryFilters): void\n removeQueries(queryKey?: QueryKey, filters?: QueryFilters): void\n removeQueries(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): void {\n const [filters] = parseFilterArgs(arg1, arg2)\n const queryCache = this.queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries(\n filters?: ResetQueryFilters,\n options?: ResetOptions,\n ): Promise\n resetQueries(\n queryKey?: QueryKey,\n filters?: ResetQueryFilters,\n options?: ResetOptions,\n ): Promise\n resetQueries(\n arg1?: QueryKey | ResetQueryFilters,\n arg2?: ResetQueryFilters | ResetOptions,\n arg3?: ResetOptions,\n ): Promise {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n const queryCache = this.queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(filters?: QueryFilters, options?: CancelOptions): Promise\n cancelQueries(\n queryKey?: QueryKey,\n filters?: QueryFilters,\n options?: CancelOptions,\n ): Promise\n cancelQueries(\n arg1?: QueryKey | QueryFilters,\n arg2?: QueryFilters | CancelOptions,\n arg3?: CancelOptions,\n ): Promise {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3)\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true\n }\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .map((query) => query.cancel(cancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries(\n filters?: InvalidateQueryFilters,\n options?: InvalidateOptions,\n ): Promise\n invalidateQueries(\n queryKey?: QueryKey,\n filters?: InvalidateQueryFilters,\n options?: InvalidateOptions,\n ): Promise\n invalidateQueries(\n arg1?: QueryKey | InvalidateQueryFilters,\n arg2?: InvalidateQueryFilters | InvalidateOptions,\n arg3?: InvalidateOptions,\n ): Promise {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n return notifyManager.batch(() => {\n this.queryCache.findAll(filters).forEach((query) => {\n query.invalidate()\n })\n\n if (filters.refetchType === 'none') {\n return Promise.resolve()\n }\n const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries(\n filters?: RefetchQueryFilters,\n options?: RefetchOptions,\n ): Promise\n refetchQueries(\n queryKey?: QueryKey,\n filters?: RefetchQueryFilters,\n options?: RefetchOptions,\n ): Promise\n refetchQueries(\n arg1?: QueryKey | RefetchQueryFilters,\n arg2?: RefetchQueryFilters | RefetchOptions,\n arg3?: RefetchOptions,\n ): Promise {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) =>\n query.fetch(undefined, {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n meta: { refetchPage: filters.refetchPage },\n }),\n ),\n )\n\n let promise = Promise.all(promises).then(noop)\n\n if (!options?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions,\n ): Promise\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions,\n ): Promise\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction,\n options?: FetchQueryOptions,\n ): Promise\n fetchQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions,\n arg2?:\n | QueryFunction\n | FetchQueryOptions,\n arg3?: FetchQueryOptions,\n ): Promise {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false\n }\n\n const query = this.queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(defaultedOptions.staleTime)\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions,\n ): Promise\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions,\n ): Promise\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction,\n options?: FetchQueryOptions,\n ): Promise\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions,\n arg2?:\n | QueryFunction\n | FetchQueryOptions,\n arg3?: FetchQueryOptions,\n ): Promise {\n return this.fetchQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions,\n ): Promise>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions,\n ): Promise>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction,\n options?: FetchInfiniteQueryOptions,\n ): Promise>\n fetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions,\n arg2?:\n | QueryFunction\n | FetchInfiniteQueryOptions,\n arg3?: FetchInfiniteQueryOptions,\n ): Promise> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n parsedOptions.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData\n >()\n return this.fetchQuery(parsedOptions)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions,\n ): Promise\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions,\n ): Promise\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction,\n options?: FetchInfiniteQueryOptions,\n ): Promise\n prefetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions,\n arg2?:\n | QueryFunction\n | FetchInfiniteQueryOptions,\n arg3?: FetchInfiniteQueryOptions,\n ): Promise {\n return this.fetchInfiniteQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n resumePausedMutations(): Promise {\n return this.mutationCache.resumePausedMutations()\n }\n\n getQueryCache(): QueryCache {\n return this.queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.mutationCache\n }\n\n getLogger(): Logger {\n return this.logger\n }\n\n getDefaultOptions(): DefaultOptions {\n return this.defaultOptions\n }\n\n setDefaultOptions(options: DefaultOptions): void {\n this.defaultOptions = options\n }\n\n setQueryDefaults(\n queryKey: QueryKey,\n options: QueryObserverOptions,\n ): void {\n const result = this.queryDefaults.find(\n (x) => hashQueryKey(queryKey) === hashQueryKey(x.queryKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.queryDefaults.push({ queryKey, defaultOptions: options })\n }\n }\n\n getQueryDefaults(\n queryKey?: QueryKey,\n ): QueryObserverOptions | undefined {\n if (!queryKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.queryDefaults.find((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several query defaults match with key '${JSON.stringify(\n queryKey,\n )}'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: MutationObserverOptions,\n ): void {\n const result = this.mutationDefaults.find(\n (x) => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.mutationDefaults.push({ mutationKey, defaultOptions: options })\n }\n }\n\n getMutationDefaults(\n mutationKey?: MutationKey,\n ): MutationObserverOptions | undefined {\n if (!mutationKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.mutationDefaults.find((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several mutation defaults match with key '${JSON.stringify(\n mutationKey,\n )}'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n defaultQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n >(\n options?:\n | QueryObserverOptions\n | DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {\n if (options?._defaulted) {\n return options as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n const defaultedOptions = {\n ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options?.queryKey),\n ...options,\n _defaulted: true,\n }\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense\n }\n\n return defaultedOptions as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n defaultMutationOptions>(\n options?: T,\n ): T {\n if (options?._defaulted) {\n return options\n }\n return {\n ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options?.mutationKey),\n ...options,\n _defaulted: true,\n } as T\n }\n\n clear(): void {\n this.queryCache.clear()\n this.mutationCache.clear()\n }\n}\n","export { G as ALL_ROLES, bm as AbiObjectSchema, bn as AbiSchema, bl as AbiTypeSchema, bd as AddressOrEnsSchema, bc as AddressSchema, v as AdminRoleMissingError, A as AssetNotFoundError, t as AuctionAlreadyStartedError, w as AuctionHasNotEndedError, bg as BYOCContractMetadataSchema, b9 as BigNumberSchema, bb as BigNumberTransformSchema, ba as BigNumberishSchema, av as COMMON_FACTORY, C as CONTRACTS_MAP, aS as CONTRACT_ADDRESSES, at as CREATE2_FACTORY_BYTECODE, be as CallOverrideSchema, aW as ChainId, bp as ChainIdToAddressSchema, bG as CommonContractOutputSchema, bF as CommonContractSchema, bJ as CommonPlatformFeeSchema, bI as CommonPrimarySaleSchema, bH as CommonRoyaltySchema, bL as CommonSymbolSchema, bK as CommonTrustedForwarderSchema, bD as CompilerMetadataFetchedSchema, bC as ContractInfoSchema, bj as CustomContractDeploy, bh as CustomContractInput, bi as CustomContractOutput, bk as CustomContractSchema, bq as CustomFactoryInput, ay as DEPLOYER_ABI, ax as DEPLOYER_BYTECODE, bs as DeployTypeInput, bu as DeploymentNetworkInput, bY as DropErc1155ContractDeploy, bW as DropErc1155ContractInput, bX as DropErc1155ContractOutput, bZ as DropErc1155ContractSchema, bU as DropErc721ContractDeploy, bS as DropErc721ContractInput, bT as DropErc721ContractOutput, bV as DropErc721ContractSchema, D as DuplicateFileNameError, s as DuplicateLeafsError, E as EditionDropInitializer, a as EditionInitializer, b1 as EventType, x as ExtensionNotImplementedError, bv as ExtraPublishMetadataSchemaInput, bw as ExtraPublishMetadataSchemaOutput, br as FactoryDeploymentSchema, r as FetchError, F as FileNameMissingError, bx as FullPublishMetadataSchemaInput, by as FullPublishMetadataSchemaOutput, u as FunctionDeprecatedError, aw as GAS_LIMIT_FOR_DEPLOYER, I as InvalidAddressError, b0 as LINK_TOKEN_ADDRESS, L as ListingNotFoundError, c0 as MarketplaceContractDeploy, b_ as MarketplaceContractInput, b$ as MarketplaceContractOutput, c1 as MarketplaceContractSchema, M as MarketplaceInitializer, b as MarketplaceV3Initializer, bM as MerkleSchema, q as MissingOwnerRoleError, o as MissingRoleError, c as MultiwrapInitializer, a_ as NATIVE_TOKENS, aZ as NATIVE_TOKEN_ADDRESS, N as NFTCollectionInitializer, d as NFTDropInitializer, p as NotEnoughTokensError, n as NotFoundError, aR as OZ_DEFENDER_FORWARDER_ADDRESS, i as PREBUILT_CONTRACTS_APPURI_MAP, h as PREBUILT_CONTRACTS_MAP, c4 as PackContractDeploy, c2 as PackContractInput, c3 as PackContractOutput, c5 as PackContractSchema, P as PackInitializer, bo as PreDeployMetadata, bE as PreDeployMetadataFetchedSchema, bz as ProfileSchemaInput, bA as ProfileSchemaOutput, cs as ProposalOutputSchema, bB as PublishedContractSchema, Q as QuantityAboveLimitError, R as RestrictedTransferError, bt as RouterTypeInput, bf as SDKOptionsSchema, au as SIGNATURE, b8 as SUPPORTED_FEATURES, e as SignatureDropInitializer, bN as SnapshotEntryInput, bP as SnapshotEntryWithProofSchema, bR as SnapshotInfoSchema, bO as SnapshotInputSchema, bQ as SnapshotSchema, f as SplitInitializer, c8 as SplitsContractDeploy, c6 as SplitsContractInput, c7 as SplitsContractOutput, c9 as SplitsContractSchema, S as StaticJsonRpcBatchProvider, aL as THIRDWEB_DEPLOYER, T as TokenDropInitializer, ck as TokenErc1155ContractDeploy, ci as TokenErc1155ContractInput, cj as TokenErc1155ContractOutput, cl as TokenErc1155ContractSchema, cc as TokenErc20ContractDeploy, ca as TokenErc20ContractInput, cb as TokenErc20ContractOutput, cd as TokenErc20ContractSchema, cg as TokenErc721ContractDeploy, ce as TokenErc721ContractInput, cf as TokenErc721ContractOutput, ch as TokenErc721ContractSchema, g as TokenInitializer, y as TransactionError, U as UploadError, cq as VoteContractDeploy, co as VoteContractInput, cp as VoteContractOutput, cr as VoteContractSchema, V as VoteInitializer, cm as VoteSettingsInputSchema, cn as VoteSettingsOuputSchema, W as WrongListingTypeError, aE as computeDeploymentAddress, aI as computeDeploymentInfo, aF as computeEOAForwarderAddress, aG as computeForwarderAddress, aj as constructAbiFromBytecode, af as detectFeatures, ag as detectFeaturesFromBytecode, aJ as encodeConstructorParamsForImplementation, a4 as extractCommentFromMetadata, a5 as extractConstructorParamsFromAbi, a6 as extractFunctionsFromAbi, ab as extractIPFSHashFromBytecode, a7 as extractMinimalProxyImplementationAddress, X as fetchAbiFromAddress, aN as fetchAndCacheDeployMetadata, a0 as fetchContractMetadata, K as fetchContractMetadataFromAddress, O as fetchContractMetadataFromBytecode, ae as fetchExtendedReleaseMetadata, ad as fetchPreDeployMetadata, aM as fetchPublishedContractFromPolygon, ac as fetchRawPredeployMetadata, as as fetchSourceFilesFromMetadata, a1 as formatCompilerMetadata, ak as getAllDetectedExtensions, ai as getAllDetectedExtensionsFromBytecode, ah as getAllDetectedFeatures, b3 as getChainIdFromNetwork, b4 as getChainIdOrName, b2 as getChainProvider, ao as getCompositeABI, aT as getContractAddressByChainId, J as getContractMetadataFromCache, k as getContractName, aU as getContractPublisherAddress, j as getContractTypeForRemoteName, aB as getCreate2FactoryAddress, aK as getCreate2FactoryDeploymentInfo, Y as getDefaultGasOverrides, Z as getDynamicFeeData, _ as getGasPrice, aD as getInitBytecodeWithSalt, aH as getKeylessTxn, aV as getMultichainRegistryAddress, a$ as getNativeTokenByChainId, $ as getPolygonGasPriorityFee, b6 as getProviderFromRpcUrl, H as getRoleHash, aC as getSaltHash, b7 as getSignerAndProvider, aY as getSupportedChains, a2 as hasMatchingAbi, B as includesErrorMessage, b5 as isChainConfig, az as isContractDeployed, ar as isDowngradeVersion, aA as isEIP155Enforced, am as isExtensionEnabled, al as isFeatureEnabled, aq as isIncrementalVersion, l as isProvider, m as isSigner, an as joinABIs, a3 as matchesAbiFromBytecode, z as parseRevertReason, aP as resolveAddress, a9 as resolveContractUriAndBytecode, a8 as resolveContractUriFromAddress, aO as resolveEns, aa as resolveImplementation, aX as setSupportedChains, aQ as signTypedDataInternal, ap as toSemver } from '../../dist/index-924d29a2.browser.esm.js';\nexport { P as PAPER_API_URL, a as PaperCheckout, c as createCheckoutLinkIntent, f as fetchRegisteredCheckoutId, p as parseChainIdToPaperChain } from '../../dist/thirdweb-checkout-bf6869a8.browser.esm.js';\nexport { C as ContractEncoder, f as fetchCurrencyMetadata, a as fetchCurrencyValue, i as isNativeToken } from '../../dist/fetchCurrencyValue-7b372272.browser.esm.js';\nexport { b as ContractAppURI, a as ContractEvents, C as ContractMetadata, G as GasCostEstimator, d as detectContractFeature, h as hasFunction } from '../../dist/contract-appuri-7ca2192f.browser.esm.js';\nexport { C as ContractRoles } from '../../dist/contract-roles-bd76ee50.browser.esm.js';\nexport { a as ContractOwner, C as ContractRoyalty, D as DelayedReveal } from '../../dist/contract-owner-fef93be6.browser.esm.js';\nexport { C as ContractPrimarySale } from '../../dist/contract-sales-64493c3f.browser.esm.js';\nexport { D as DropClaimConditions } from '../../dist/drop-claim-conditions-33b4da26.browser.esm.js';\nexport { D as DropErc1155ClaimConditions, e as Erc1155, E as Erc1155BatchMintable, a as Erc1155Burnable, b as Erc1155Enumerable, c as Erc1155LazyMintable, d as Erc1155Mintable, f as Erc1155SignatureMintable } from '../../dist/erc-1155-5c9a7cce.browser.esm.js';\nexport { D as DropErc1155History } from '../../dist/drop-erc1155-history-bc8aed31.browser.esm.js';\nexport { f as Erc20, E as Erc20BatchMintable, a as Erc20Burnable, b as Erc20ClaimableWithConditions, c as Erc20Droppable, d as Erc20Mintable, e as Erc20SignatureMintable, n as normalizeAmount } from '../../dist/erc-20-2cdfacfb.browser.esm.js';\nexport { T as TokenERC20History } from '../../dist/erc-20-history-721d39e4.browser.esm.js';\nexport { S as StandardErc20 } from '../../dist/erc-20-standard-2e68955d.browser.esm.js';\nexport { h as Erc721, E as Erc721BatchMintable, j as Erc721Burnable, b as Erc721Claimable, a as Erc721ClaimableWithConditions, f as Erc721Enumerable, c as Erc721LazyMintable, d as Erc721Mintable, e as Erc721Supply, g as Erc721TieredDrop, i as Erc721WithQuantitySignatureMintable, t as toWei } from '../../dist/erc-721-3e2f7b8b.browser.esm.js';\nexport { S as StandardErc721 } from '../../dist/erc-721-standard-9c3e7ac2.browser.esm.js';\nexport { S as StandardErc1155 } from '../../dist/erc-1155-standard-08576791.browser.esm.js';\nexport { L as ListingType, a as MarketplaceAuction, M as MarketplaceDirect } from '../../dist/marketplace-auction-4bdb3970.browser.esm.js';\nexport { M as MarketplaceV3DirectListings, a as MarketplaceV3EnglishAuctions, b as MarketplaceV3Offers, S as Status } from '../../dist/marketplacev3-offers-c9ada912.browser.esm.js';\nexport { C as ContractInterceptor } from '../../dist/contract-interceptor-6f8989ff.browser.esm.js';\nexport { C as ContractPlatformFee } from '../../dist/contract-platform-fee-1466f0e8.browser.esm.js';\nexport { A as Account, a as AccountFactory, b as AdminFlag, C as ContractPublishedMetadata, D as DEFAULT_PERMISSIONS, P as PermissionSnapshotSchema, d as SignerPermissionRequest, c as SignerPermissionRequestV1, S as SignerPermissionsSchema, e as extractEventsFromAbi } from '../../dist/account-factory-4944f144.browser.esm.js';\nexport { D as DeployTransaction, T as Transaction, b as biconomySendFunction, d as defaultGaslessSendFunction, a as defenderSendFunction, e as engineSendFunction, p as prepareGaslessRequest } from '../../dist/transactions-12414a24.browser.esm.js';\nexport { A as APPROVED_IMPLEMENTATIONS, C as ContractDeployer, L as LOCAL_NODE_PKEY, S as SUPPORTED_CHAIN_IDS, T as ThirdwebSDK, U as UserWallet, d as checkVerificationStatus, f as computeCloneFactoryAddress, s as convertParamValues, k as deployCreate2Factory, l as directDeployDeterministic, n as directDeployDeterministicPublished, m as directDeployDeterministicWithUri, e as extractFunctionParamsFromAbi, a as getAllDetectedExtensionNames, g as getAllDetectedFeatureNames, w as getApprovedImplementation, x as getDefaultTrustedForwarders, t as getDeployArguments, j as getEncodedConstructorParamsForThirdwebContract, h as getThirdwebContractAddress, u as getTrustedForwarders, i as isVerifiedOnEtherscan, o as predictAddressDeterministic, r as predictAddressDeterministicPublished, q as predictAddressDeterministicWithUri, p as predictThirdwebContractAddress, b as verify, v as verifyThirdwebPrebuiltImplementation } from '../../dist/sdk-f403edff.browser.esm.js';\nexport { B as BaseSignaturePayloadInput, g as ClaimConditionInputArray, e as ClaimConditionInputSchema, d as ClaimConditionMetadataSchema, h as ClaimConditionOutputSchema, C as ClaimEligibility, i as CurrencySchema, j as CurrencyValueSchema, G as GenericRequest, t as MintRequest1155, M as MintRequest20, s as MintRequest721, u as MintRequest721withQuantity, P as PartialClaimConditionInputSchema, n as Signature1155PayloadInput, o as Signature1155PayloadInputWithTokenId, p as Signature1155PayloadOutput, S as Signature20PayloadInput, k as Signature20PayloadOutput, l as Signature721PayloadInput, m as Signature721PayloadOutput, q as Signature721WithQuantityInput, r as Signature721WithQuantityOutput, a as approveErc20Allowance, c as convertToReadableQuantity, b as createSnapshot, f as fetchSnapshotEntryForAddress } from '../../dist/signature-2b4b7703.browser.esm.js';\nexport { h as EditionMetadataInputOrUriSchema, f as EditionMetadataInputSchema, E as EditionMetadataOutputSchema, e as EditionMetadataWithOwnerOutputSchema, O as OptionalPropertiesInput, P as ProposalState, T as TokenMintInputSchema, c as computeNativeTokenAddress, d as deployContractDeterministicRaw, g as getCachedAbiForContract, m as matchesPrebuiltAbi, b as toDisplayValue, t as toEther, a as toUnits } from '../../dist/token-415e1c97.browser.esm.js';\nexport { e as extractConstructorParams, a as extractFunctions } from '../../dist/contract-publisher-3700369d.browser.esm.js';\nexport { E as EndDateSchema, R as RawDateSchema, S as StartDateSchema, a as assertEnabled } from '../../dist/assertEnabled-c7de2a13.browser.esm.js';\nexport { c as cleanCurrencyAddress } from '../../dist/cleanCurrencyAddress-6380caa4.browser.esm.js';\nexport { n as normalizePriceValue } from '../../dist/normalizePriceValue-b8097c8f.browser.esm.js';\nexport { s as setErc20Allowance } from '../../dist/setErc20Allowance-5cdb760b.browser.esm.js';\nexport { h as hasERC20Allowance } from '../../dist/hasERC20Allowance-d3a3b829.browser.esm.js';\nexport { c as createTransactionBatches, d as deployContractDeterministic, a as deployWithThrowawayDeployer, e as estimateGasForDeploy, g as getDeploymentInfo } from '../../dist/deployWithThrowawayDeployer-e83ef1d9.browser.esm.js';\nexport { a as InterfaceId_IERC1155, I as InterfaceId_IERC721 } from '../../dist/QueryParams-86b5bbc0.browser.esm.js';\nexport { V as VoteType } from '../../dist/Vote-3b66775c.browser.esm.js';\nexport { b as ERC1155WrappableSchema, E as ERC20WrappableSchema, a as ERC721WrappableSchema, d as PackMetadataInputSchema, c as PackRewardsOutputSchema, P as PackRewardsSchema } from '../../dist/pack-43ea539d.browser.esm.js';\nexport { c as getBlock, d as getBlockNumber, e as getBlockWithTransactions, b as getChainId, g as getContract, a as getContractFromAbi, w as watchBlock, f as watchBlockNumber, h as watchBlockWithTransactions, i as watchTransactions } from '../../dist/watchTransactions-ae24bf56.browser.esm.js';\nimport 'ethers';\nimport 'zod';\nimport '@thirdweb-dev/chains';\nimport '@thirdweb-dev/storage';\nimport '@thirdweb-dev/crypto';\nimport 'tiny-invariant';\nimport 'bn.js';\nimport 'bs58';\nimport '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC20.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDrop.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropERC20_V2.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase_V1.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC20.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC20Permit.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IMintableERC20.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IMulticall.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC20.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC20Metadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDelayedReveal.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropERC721_V3.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC721Enumerable.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC721AQueryableUpgradeable.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC721Supply.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ILazyMint.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IMintableERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721_V1.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/LazyMintWithTier_V1.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/SharedMetadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/zora_IERC721Drop.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ILoyaltyCard.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/INFTMetadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC721Metadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDrop1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropERC1155_V2.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155_V1.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC1155Metadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC1155Supply.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC1155Enumerable.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IMintableERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IERC2771Context.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAppURI.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IContractMetadata.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IDirectListings.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IEnglishAuctions.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IOffers.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IPackVRFDirect.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IPermissions.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IPermissionsEnumerable.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IPlatformFee.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IPrimarySale.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IRoyalty.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/Ownable.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC20.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC721.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC1155.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAccountFactoryCore.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAccountPermissions.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAccountPermissions_V1.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/IAccount.json';\nimport 'ethers/lib/utils';\nimport 'eventemitter3';\nimport 'fast-deep-equal';\nimport '../../dist/marketplace-5fd92910.browser.esm.js';\nimport '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryLogic.json';\nimport '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryRouter.json';\nimport '@thirdweb-dev/generated-abis';\nimport '@thirdweb-dev/contracts-js/dist/abis/TWFactory.json';\nimport '@thirdweb-dev/merkletree';\nimport 'uuid';\nimport '@thirdweb-dev/contracts-js/dist/abis/ContractPublisher.json';\n\n// handle browser vs node global\n// eslint-disable-next-line better-tree-shaking/no-top-level-side-effects\nglobalThis.global = globalThis;\n\n//#endregion @r/packages/sdk/src/evm/schema\n","import { z } from 'zod';\nimport { v4 } from 'uuid';\nimport { utils } from 'ethers';\n\nconst literalSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst JsonSchema = z.lazy(() => z.union([literalSchema, z.array(JsonSchema), z.record(JsonSchema)]), {\n invalid_type_error: \"Provided value was not valid JSON\"\n});\nconst AddressSchema = z.string().refine(arg => utils.isAddress(arg), out => {\n return {\n message: `${out} is not a valid address`\n };\n});\nconst RawDateSchema = z.date().transform(i => {\n return Math.floor(i.getTime() / 1000);\n});\nconst AccountTypeSchema = z.literal(\"evm\");\n\nconst AuthenticationPayloadDataSchema = z.object({\n iss: z.string(),\n sub: z.string(),\n aud: z.string(),\n exp: RawDateSchema,\n nbf: RawDateSchema,\n iat: RawDateSchema,\n jti: z.string().default(() => v4()),\n ctx: JsonSchema.optional()\n});\nconst AuthenticationPayloadSchema = z.object({\n payload: AuthenticationPayloadDataSchema,\n signature: z.string()\n});\nconst AuthenticateOptionsSchema = z.object({\n domain: z.string(),\n issuerAddress: AddressSchema.optional(),\n validateTokenId: z.function().args(z.string()).optional()\n});\n\nconst VerifyOptionsSchema = z.object({\n domain: z.string(),\n statement: z.string().optional(),\n uri: z.string().optional(),\n version: z.string().optional(),\n chainId: z.string().optional(),\n validateNonce: z.function().args(z.string()).optional(),\n resources: z.array(z.string()).optional()\n});\n\nconst THIRDWEB_AUTH_COOKIE_PREFIX = `thirdweb_auth`;\nconst THIRDWEB_AUTH_TOKEN_COOKIE_PREFIX = `${THIRDWEB_AUTH_COOKIE_PREFIX}_token`;\nconst THIRDWEB_AUTH_ACTIVE_ACCOUNT_COOKIE = `${THIRDWEB_AUTH_COOKIE_PREFIX}_active_account`;\nconst THIRDWEB_AUTH_DEFAULT_LOGIN_PAYLOAD_DURATION_IN_SECONDS = 60 * 10;\nconst THIRDWEB_AUTH_DEFAULT_TOKEN_DURATION_IN_SECONDS = 60 * 60 * 24;\nconst THIRDWEB_AUTH_DEFAULT_REFRESH_INTERVAL_IN_SECONDS = 5;\n\nconst GenerateOptionsSchema = z.object({\n domain: z.string(),\n tokenId: z.string().optional(),\n expirationTime: z.date().default(() => new Date(Date.now() + 1000 * THIRDWEB_AUTH_DEFAULT_TOKEN_DURATION_IN_SECONDS)),\n invalidBefore: z.date().optional(),\n session: z.union([JsonSchema, z.function().args(z.string())]).optional(),\n verifyOptions: VerifyOptionsSchema.omit({\n domain: true\n }).optional()\n});\n\nconst RefreshOptionsSchema = z.object({\n expirationTime: z.date().default(() => new Date(Date.now() + 1000 * THIRDWEB_AUTH_DEFAULT_TOKEN_DURATION_IN_SECONDS))\n});\n\nconst LoginOptionsSchema = z.object({\n domain: z.string(),\n address: z.string().optional(),\n statement: z.string().optional(),\n uri: z.string().optional(),\n version: z.string().optional(),\n chainId: z.string().optional(),\n nonce: z.string().optional(),\n expirationTime: z.date().default(() => new Date(Date.now() + 1000 * THIRDWEB_AUTH_DEFAULT_LOGIN_PAYLOAD_DURATION_IN_SECONDS)),\n invalidBefore: z.date().default(() => new Date(Date.now() - 1000 * THIRDWEB_AUTH_DEFAULT_LOGIN_PAYLOAD_DURATION_IN_SECONDS)),\n resources: z.array(z.string()).optional()\n});\nconst LoginPayloadDataSchema = z.object({\n type: AccountTypeSchema,\n domain: z.string(),\n address: z.string(),\n statement: z.string().default(\"Please ensure that the domain above matches the URL of the current website.\"),\n uri: z.string().optional(),\n version: z.string().default(\"1\"),\n chain_id: z.string().optional(),\n nonce: z.string().default(() => v4()),\n issued_at: z.date().default(new Date()).transform(d => d.toISOString()),\n expiration_time: z.date().transform(d => d.toISOString()),\n invalid_before: z.date().default(new Date()).transform(d => d.toISOString()),\n resources: z.array(z.string()).optional()\n});\nconst LoginPayloadSchema = z.object({\n payload: LoginPayloadDataSchema,\n signature: z.string()\n});\nconst LoginPayloadOutputSchema = LoginPayloadSchema.extend({\n payload: LoginPayloadDataSchema.extend({\n issued_at: z.string(),\n expiration_time: z.string(),\n invalid_before: z.string()\n })\n});\n\n/**\n * Create an EIP-4361 & CAIP-122 compliant message to sign based on the login payload\n */\nfunction createLoginMessage(payload) {\n const typeField = \"Ethereum\";\n const header = `${payload.domain} wants you to sign in with your ${typeField} account:`;\n let prefix = [header, payload.address].join(\"\\n\");\n prefix = [prefix, payload.statement].join(\"\\n\\n\");\n if (payload.statement) {\n prefix += \"\\n\";\n }\n const suffixArray = [];\n if (payload.uri) {\n const uriField = `URI: ${payload.uri}`;\n suffixArray.push(uriField);\n }\n const versionField = `Version: ${payload.version}`;\n suffixArray.push(versionField);\n if (payload.chain_id) {\n const chainField = `Chain ID: ` + payload.chain_id || \"1\";\n suffixArray.push(chainField);\n }\n const nonceField = `Nonce: ${payload.nonce}`;\n suffixArray.push(nonceField);\n const issuedAtField = `Issued At: ${payload.issued_at}`;\n suffixArray.push(issuedAtField);\n const expiryField = `Expiration Time: ${payload.expiration_time}`;\n suffixArray.push(expiryField);\n if (payload.invalid_before) {\n const invalidBeforeField = `Not Before: ${payload.invalid_before}`;\n suffixArray.push(invalidBeforeField);\n }\n if (payload.resources) {\n suffixArray.push([`Resources:`, ...payload.resources.map(x => `- ${x}`)].join(\"\\n\"));\n }\n const suffix = suffixArray.join(\"\\n\");\n return [prefix, suffix].join(\"\\n\");\n}\nasync function buildLoginPayload(_ref) {\n let {\n wallet,\n options\n } = _ref;\n const parsedOptions = LoginOptionsSchema.parse(options);\n let chainId = parsedOptions?.chainId;\n if (!chainId && wallet.getChainId) {\n try {\n chainId = (await wallet.getChainId()).toString();\n } catch {\n // ignore error\n }\n }\n return LoginPayloadDataSchema.parse({\n type: wallet.type,\n domain: parsedOptions.domain,\n address: parsedOptions?.address || (await wallet.getAddress()),\n statement: parsedOptions?.statement,\n version: parsedOptions?.version,\n uri: parsedOptions?.uri,\n chain_id: chainId,\n nonce: parsedOptions?.nonce,\n expiration_time: parsedOptions.expirationTime,\n invalid_before: parsedOptions.invalidBefore,\n resources: parsedOptions?.resources\n });\n}\nasync function signLoginPayload(_ref2) {\n let {\n wallet,\n payload\n } = _ref2;\n const message = createLoginMessage(payload);\n const signature = await wallet.signMessage(message);\n return {\n payload,\n signature\n };\n}\nasync function buildAndSignLoginPayload(_ref3) {\n let {\n wallet,\n options\n } = _ref3;\n const payload = await buildLoginPayload({\n wallet,\n options\n });\n return signLoginPayload({\n wallet,\n payload\n });\n}\nasync function verifyLoginPayload(_ref4) {\n let {\n wallet,\n payload,\n options\n } = _ref4;\n const parsedOptions = VerifyOptionsSchema.parse(options);\n if (payload.payload.type !== wallet.type) {\n throw new Error(`Expected chain type '${wallet.type}' does not match chain type on payload '${payload.payload.type}'`);\n }\n\n // Check that the intended domain matches the domain of the payload\n if (payload.payload.domain !== parsedOptions.domain) {\n throw new Error(`Expected domain '${parsedOptions.domain}' does not match domain on payload '${payload.payload.domain}'`);\n }\n\n // Check that the payload statement matches the expected statement\n if (parsedOptions?.statement) {\n if (payload.payload.statement !== parsedOptions.statement) {\n throw new Error(`Expected statement '${parsedOptions.statement}' does not match statement on payload '${payload.payload.statement}'`);\n }\n }\n\n // Check that the intended URI matches the URI of the payload\n if (parsedOptions?.uri) {\n if (payload.payload.uri !== parsedOptions.uri) {\n throw new Error(`Expected URI '${parsedOptions.uri}' does not match URI on payload '${payload.payload.uri}'`);\n }\n }\n\n // Check that the intended version matches the version of the payload\n if (parsedOptions?.version) {\n if (payload.payload.version !== parsedOptions.version) {\n throw new Error(`Expected version '${parsedOptions.version}' does not match version on payload '${payload.payload.version}'`);\n }\n }\n\n // Check that the intended chain ID matches the chain ID of the payload\n if (parsedOptions?.chainId) {\n if (payload.payload.chain_id !== parsedOptions.chainId) {\n throw new Error(`Expected chain ID '${parsedOptions.chainId}' does not match chain ID on payload '${payload.payload.chain_id}'`);\n }\n }\n\n // Check that the payload nonce is valid\n if (parsedOptions?.validateNonce !== undefined) {\n try {\n await parsedOptions.validateNonce(payload.payload.nonce);\n } catch (err) {\n throw new Error(`Login request nonce is invalid`);\n }\n }\n\n // Check that it isn't before the invalid before time\n const currentTime = new Date();\n if (currentTime < new Date(payload.payload.invalid_before)) {\n throw new Error(`Login request is not yet valid`);\n }\n\n // Check that the payload hasn't expired\n if (currentTime > new Date(payload.payload.expiration_time)) {\n throw new Error(`Login request has expired`);\n }\n\n // Check that the specified resources are present on the payload\n if (parsedOptions?.resources) {\n const missingResources = parsedOptions.resources.filter(resource => !payload.payload.resources?.includes(resource));\n if (missingResources.length > 0) {\n throw new Error(`Login request is missing required resources: ${missingResources.join(\", \")}`);\n }\n }\n\n // Check that the signing address is the claimed wallet address\n const message = createLoginMessage(payload.payload);\n const chainId = wallet.type === \"evm\" && payload.payload.chain_id ? parseInt(payload.payload.chain_id) : undefined;\n const verified = await wallet.verifySignature(message, payload.signature, payload.payload.address, chainId);\n if (!verified) {\n throw new Error(`Signer address does not match payload address '${payload.payload.address.toLowerCase()}'`);\n }\n return payload.payload.address;\n}\n\nfunction base64encode(data) {\n {\n return window.btoa(data);\n }\n}\nfunction base64decode(data) {\n {\n return window.atob(data);\n }\n}\n\n/**\n * Build JWT token based on the authentication payload\n */\nasync function buildJWT(_ref) {\n let {\n wallet,\n payload\n } = _ref;\n const payloadData = AuthenticationPayloadDataSchema.parse(payload);\n const message = JSON.stringify(payloadData);\n const signature = await wallet.signMessage(message);\n\n // Header used for JWT token specifying hash algorithm\n const header = {\n // Specify ECDSA with SHA-256 for hashing algorithm\n alg: \"ES256\",\n typ: \"JWT\"\n };\n const encodedHeader = base64encode(JSON.stringify(header));\n const encodedData = base64encode(JSON.stringify(payloadData));\n const encodedSignature = base64encode(signature);\n\n // Generate a JWT with base64 encoded header, payload, and signature\n const jwt = `${encodedHeader}.${encodedData}.${encodedSignature}`;\n return jwt;\n}\n\n/**\n * Generate a new JWT using a login payload\n */\nasync function generateJWT(_ref2) {\n let {\n wallet,\n payload,\n options\n } = _ref2;\n const parsedOptions = GenerateOptionsSchema.parse(options);\n const userAddress = await verifyLoginPayload({\n wallet,\n payload,\n options: {\n domain: parsedOptions.domain,\n ...parsedOptions.verifyOptions\n }\n });\n let session = undefined;\n if (typeof parsedOptions?.session === \"function\") {\n const sessionTrigger = await parsedOptions.session(userAddress);\n if (sessionTrigger) {\n session = sessionTrigger;\n }\n } else {\n session = parsedOptions?.session;\n }\n const adminAddress = await wallet.getAddress();\n return buildJWT({\n wallet,\n payload: {\n iss: adminAddress,\n sub: userAddress,\n aud: parsedOptions.domain,\n nbf: parsedOptions?.invalidBefore || new Date(),\n exp: parsedOptions.expirationTime,\n iat: new Date(),\n jti: parsedOptions?.tokenId,\n ctx: session\n }\n });\n}\n\n/**\n * Parse data from an encoded auth JWT\n */\nfunction parseJWT(jwt) {\n const encodedPayload = jwt.split(\".\")[1];\n const encodedSignature = jwt.split(\".\")[2];\n const payload = JSON.parse(base64decode(encodedPayload));\n const signature = base64decode(encodedSignature);\n return {\n payload,\n signature\n };\n}\n\n/**\n * Refresh an existing JWT\n */\nasync function refreshJWT(_ref3) {\n let {\n wallet,\n jwt,\n options\n } = _ref3;\n const {\n payload\n } = parseJWT(jwt);\n const parsedOptions = RefreshOptionsSchema.parse(options);\n return buildJWT({\n wallet,\n payload: {\n iss: payload.iss,\n sub: payload.sub,\n aud: payload.aud,\n nbf: new Date(),\n exp: parsedOptions.expirationTime,\n iat: new Date(),\n ctx: payload.ctx\n }\n });\n}\n\n/**\n * Validate a JWT and extract the user's info\n */\nasync function authenticateJWT(_ref4) {\n let {\n wallet,\n jwt,\n options\n } = _ref4;\n const parsedOptions = AuthenticateOptionsSchema.parse(options);\n const {\n payload,\n signature\n } = parseJWT(jwt);\n\n // Check that the payload unique ID is valid\n if (parsedOptions?.validateTokenId !== undefined) {\n try {\n await parsedOptions.validateTokenId(payload.jti);\n } catch (err) {\n throw new Error(`Token ID is invalid`);\n }\n }\n\n // Check that the token audience matches the domain\n if (payload.aud !== parsedOptions.domain) {\n throw new Error(`Expected token to be for the domain '${parsedOptions.domain}', but found token with domain '${payload.aud}'`);\n }\n\n // Check that the token is past the invalid before time\n const currentTime = Math.floor(new Date().getTime() / 1000);\n if (currentTime < payload.nbf) {\n throw new Error(`This token is invalid before epoch time '${payload.nbf}', current epoch time is '${currentTime}'`);\n }\n\n // Check that the token hasn't expired\n if (currentTime > payload.exp) {\n throw new Error(`This token expired at epoch time '${payload.exp}', current epoch time is '${currentTime}'`);\n }\n\n // Check that the connected wallet matches the token issuer\n const issuerAddress = parsedOptions.issuerAddress ? parsedOptions.issuerAddress : await wallet.getAddress();\n if (issuerAddress.toLowerCase() !== payload.iss.toLowerCase()) {\n throw new Error(`The expected issuer address '${issuerAddress}' did not match the token issuer address '${payload.iss}'`);\n }\n let chainId = undefined;\n if (wallet.getChainId) {\n try {\n chainId = await wallet.getChainId();\n } catch {\n // ignore error\n }\n }\n const verified = await wallet.verifySignature(JSON.stringify(payload), signature, issuerAddress, chainId);\n if (!verified) {\n throw new Error(`The expected signer address '${issuerAddress}' did not sign the token`);\n }\n return {\n address: payload.sub,\n session: payload.ctx\n };\n}\n\nclass ThirdwebAuth {\n constructor(wallet, domain) {\n this.wallet = wallet;\n this.domain = domain;\n }\n updateWallet(wallet) {\n this.wallet = wallet;\n }\n async payload(options) {\n return buildLoginPayload({\n wallet: this.wallet,\n options: this.formatOptions(options)\n });\n }\n async loginWithPayload(payload) {\n return signLoginPayload({\n wallet: this.wallet,\n payload\n });\n }\n async login(options) {\n return buildAndSignLoginPayload({\n wallet: this.wallet,\n options: this.formatOptions(options)\n });\n }\n async verify(payload, options) {\n return verifyLoginPayload({\n wallet: this.wallet,\n payload,\n options: this.formatOptions(options)\n });\n }\n async generate(payload, options) {\n return generateJWT({\n wallet: this.wallet,\n payload,\n options: this.formatOptions(options)\n });\n }\n async refresh(jwt, expirationTime) {\n return refreshJWT({\n wallet: this.wallet,\n jwt,\n options: {\n expirationTime\n }\n });\n }\n async authenticate(jwt, options) {\n return authenticateJWT({\n wallet: this.wallet,\n jwt,\n options: this.formatOptions(options)\n });\n }\n parseToken(jwt) {\n return parseJWT(jwt);\n }\n formatOptions(options) {\n return options ? {\n ...options,\n domain: options?.domain || this.domain\n } : {\n domain: this.domain\n };\n }\n}\n\nexport { AuthenticationPayloadDataSchema as A, GenerateOptionsSchema as G, JsonSchema as J, LoginOptionsSchema as L, RawDateSchema as R, ThirdwebAuth as T, VerifyOptionsSchema as V, authenticateJWT as a, buildJWT as b, buildLoginPayload as c, buildAndSignLoginPayload as d, AuthenticationPayloadSchema as e, AuthenticateOptionsSchema as f, generateJWT as g, AddressSchema as h, AccountTypeSchema as i, LoginPayloadDataSchema as j, LoginPayloadSchema as k, LoginPayloadOutputSchema as l, RefreshOptionsSchema as m, THIRDWEB_AUTH_ACTIVE_ACCOUNT_COOKIE as n, THIRDWEB_AUTH_TOKEN_COOKIE_PREFIX as o, parseJWT as p, THIRDWEB_AUTH_DEFAULT_REFRESH_INTERVAL_IN_SECONDS as q, refreshJWT as r, signLoginPayload as s, THIRDWEB_AUTH_DEFAULT_TOKEN_DURATION_IN_SECONDS as t, verifyLoginPayload as v };\n","import mime from 'mime/lite.js';\nimport { createContext, useContext, useState, useMemo, useCallback, useEffect, useRef } from 'react';\nimport { useQueryClient, useMutation, QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query';\nimport invariant from 'tiny-invariant';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { updateChainRPCs, getValidChainRPCs, defaultChains } from '@thirdweb-dev/chains';\nimport { ThirdwebSDK, getChainProvider } from '@thirdweb-dev/sdk/evm';\nimport { UserWallet, checkClientIdOrSecretKey, fetchCurrencyMetadata, fetchCurrencyValue, getCachedAbiForContract, ListingType, ThirdwebSDK as ThirdwebSDK$1 } from '@thirdweb-dev/sdk';\nimport { walletIds, WalletConnectV2Handler, createAsyncLocalStorage, assertWindowEthereum } from '@thirdweb-dev/wallets';\nimport { constants, utils, BigNumber, providers } from 'ethers';\nimport { ThirdwebAuth, signLoginPayload } from '@thirdweb-dev/auth';\nimport { watchTransactions } from '@thirdweb-dev/sdk/evm/functions';\n\n// TODO legacy remove this when possible\n\n/**\n * @internal\n */\nasync function resolveMimeType(url) {\n if (!url) {\n return undefined;\n }\n const mimeType = mime.getType(url);\n if (mimeType) {\n return mimeType;\n }\n const res = await fetch(url, {\n method: \"HEAD\"\n });\n if (res.ok && res.headers.has(\"content-type\")) {\n return res.headers.get(\"content-type\") || undefined;\n }\n // we failed to resolve the mime type, return null\n return undefined;\n}\n\n/**\n * @internal\n */\nconst ThirdwebThemeContext = /* @__PURE__ */createContext(undefined);\n\n/**\n * The configuration to use the react SDK with an [auth](https://portal.thirdweb.com/auth) server.\n *\n */\n\nconst ThirdwebAuthContext = /* @__PURE__ */createContext(undefined);\nfunction useThirdwebAuthContext() {\n return useContext(ThirdwebAuthContext);\n}\n\nconst isWalletConnectReceiverEnabled = wallet => {\n const options = wallet?.getOptions();\n return options && \"walletConnectReceiver\" in options && options.walletConnectReceiver;\n};\n\nconst LAST_CONNECTED_WALLET_STORAGE_KEY = \"lastConnectedWallet\";\nlet lastConnectedWalletStorage;\n// maps wallet instance to it's wallet config\nconst walletInstanceToConfig = new Map();\nconst ThirdwebWalletContext = /* @__PURE__ */createContext(undefined);\nfunction ThirdwebWalletProvider(props) {\n const [signer, setSigner] = useState(undefined);\n const [connectionStatus, setConnectionStatus] = useState(\"unknown\");\n const autoConnectTimeout = props.autoConnectTimeout || 15000;\n const [activeWallet, setActiveWallet] = useState();\n const [createdWalletInstance, setCreatedWalletInstance] = useState();\n const [activeWalletConfig, setActiveWalletConfig] = useState();\n const [walletConnectHandler, setWalletConnectHandler] = useState();\n if (!lastConnectedWalletStorage) {\n lastConnectedWalletStorage = props.createWalletStorage(\"coordinatorStorage\");\n }\n\n // if autoSwitch is enabled - enforce connection to activeChain\n const chainToConnect = props.autoSwitch ? props.activeChain : undefined;\n const walletParams = useMemo(() => {\n return {\n chains: props.chains,\n dappMetadata: props.dAppMeta,\n chain: props.activeChain || props.chains[0],\n clientId: props.clientId\n };\n }, [props.chains, props.dAppMeta, props.activeChain, props.clientId]);\n const createWalletInstance = useCallback(walletConfig => {\n const walletInstance = walletConfig.create(walletParams);\n if (walletInstance.walletId === walletIds.magicLink) {\n // NOTE: removing this if statement causes the component to re-render\n // Patch for magic link wallet in react native\n // needed because we need to add a component to the view tree\n // from the instance, right before calling connect.\n // Check it out in RN's DappContextProvider.\n setCreatedWalletInstance(walletInstance);\n }\n walletInstanceToConfig.set(walletInstance, walletConfig);\n return walletInstance;\n }, [walletParams]);\n\n // if props.chains is updated, update the active wallet's chains\n useEffect(() => {\n if (activeWallet) {\n activeWallet.updateChains(props.chains);\n }\n }, [activeWallet, props.chains]);\n useEffect(() => {\n if (!activeWallet) {\n return;\n }\n const initWCHandler = async () => {\n const wcReceiverOptions = activeWallet?.getOptions();\n const handler = new WalletConnectV2Handler({\n walletConnectReceiver: {\n ...(wcReceiverOptions?.walletConnectReceiver === true ? {} : wcReceiverOptions?.walletConnectReceiver)\n }\n }, activeWallet);\n await handler.init();\n setWalletConnectHandler(handler);\n };\n if (isWalletConnectReceiverEnabled(activeWallet)) {\n initWCHandler();\n }\n }, [activeWallet]);\n const setConnectedWallet = useCallback(async function (wallet, connectParams) {\n let isAutoConnect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n setActiveWallet(wallet);\n const walletConfig = walletInstanceToConfig.get(wallet);\n if (!walletConfig) {\n throw new Error(\"Wallet config not found for given wallet instance. Do not create a wallet instance manually - use the useCreateWalletInstance() hook instead\");\n }\n setActiveWalletConfig(walletConfig);\n setConnectionStatus(\"connected\");\n const _signer = await wallet.getSigner();\n setSigner(_signer);\n\n // it autoconnected, then the details is already saved in storage, no need to store again\n if (isAutoConnect) {\n return;\n }\n\n // save to storage\n\n const walletInfo = {\n walletId: walletConfig.id,\n connectParams: connectParams || wallet.getConnectParams()\n };\n\n // if personal wallet exists, we need to replace the connectParams.personalWallet to a stringifiable version\n const personalWallet = wallet.getPersonalWallet();\n const personalWalletConfig = walletInstanceToConfig.get(personalWallet);\n if (personalWallet && personalWalletConfig) {\n walletInfo.connectParams = {\n ...walletInfo.connectParams,\n personalWallet: {\n walletId: personalWalletConfig.id,\n connectParams: personalWallet.getConnectParams()\n }\n };\n saveLastConnectedWalletInfo(walletInfo);\n } else {\n saveLastConnectedWalletInfo(walletInfo);\n }\n }, []);\n const storeLastActiveChainId = useCallback(async chainId => {\n const lastConnectedWallet = await lastConnectedWalletStorage.getItem(LAST_CONNECTED_WALLET_STORAGE_KEY);\n if (!lastConnectedWallet) {\n return;\n }\n try {\n const parsedWallet = JSON.parse(lastConnectedWallet);\n if (parsedWallet.connectParams) {\n parsedWallet.connectParams.chainId = chainId;\n } else {\n parsedWallet.connectParams = {\n chainId\n };\n }\n await lastConnectedWalletStorage.setItem(LAST_CONNECTED_WALLET_STORAGE_KEY, JSON.stringify(parsedWallet));\n } catch (error) {\n console.error(`Error saving the last active chain: ${error}`);\n }\n }, []);\n const switchChain = useCallback(async chainId => {\n if (!activeWallet) {\n throw new Error(\"No active wallet\");\n }\n await activeWallet.switchChain(chainId);\n const _signer = await activeWallet.getSigner();\n await storeLastActiveChainId(chainId);\n setSigner(_signer);\n }, [activeWallet, storeLastActiveChainId]);\n const autoConnectTriggered = useRef(false);\n\n // Auto Connect\n useEffect(() => {\n if (autoConnectTriggered.current) {\n return;\n }\n autoConnectTriggered.current = true;\n\n // do not auto connect if signerWallet is given\n if (props.signerWallet) {\n return;\n }\n if (activeWallet) {\n // there's already an active wallet, don't auto connect\n return;\n }\n if (connectionStatus !== \"unknown\") {\n // only try to auto connect if we're in the unknown state\n return;\n }\n\n // if explicitly set to false, don't auto connect\n // by default, auto connect\n if (props.shouldAutoConnect === false) {\n setConnectionStatus(\"disconnected\");\n return;\n }\n async function autoconnect() {\n const walletInfo = await getLastConnectedWalletInfo();\n if (!walletInfo) {\n setConnectionStatus(\"disconnected\");\n return;\n }\n const walletObj = props.supportedWallets.find(W => W.id === walletInfo.walletId);\n if (!walletObj) {\n // last connected wallet is no longer present in the supported wallets\n setConnectionStatus(\"disconnected\");\n return;\n }\n let _personalWalletInfo = walletInfo.connectParams?.personalWallet;\n\n // if the wallet requires a personal wallet (like smartWallet), but the saved data does not have it\n // this can happen when user clicks on \"switch to personal wallet\" and reloads the page\n // OR when user clicks on magic link social login\n if (walletObj.personalWallets && !_personalWalletInfo) {\n // fix the connectParams by adding the personal wallet info\n _personalWalletInfo = {\n walletId: walletInfo.walletId,\n connectParams: walletInfo.connectParams\n };\n }\n const personalWalletInfo = _personalWalletInfo;\n if (personalWalletInfo) {\n const personalWallets = walletObj.personalWallets || [];\n const personalWalletObj = personalWallets.find(W => W.id === personalWalletInfo.walletId);\n if (personalWalletObj) {\n // create a personal wallet instance and auto connect it\n const personalWalletInstance = createWalletInstance(personalWalletObj);\n try {\n await timeoutPromise(personalWalletInstance.autoConnect(personalWalletInfo.connectParams), {\n ms: autoConnectTimeout,\n message: autoConnectTimeoutErrorMessage\n });\n } catch (e) {\n console.error(\"Failed to auto connect personal wallet\");\n console.error(e);\n setConnectionStatus(\"disconnected\");\n return;\n }\n\n // set the personal wallet instance to the connectParams\n walletInfo.connectParams = {\n ...walletInfo.connectParams,\n personalWallet: personalWalletInstance\n };\n } else {\n // last used personal wallet is no longer present in the supported wallets\n setConnectionStatus(\"disconnected\");\n return;\n }\n }\n\n // create a wallet instance and auto connect it\n const wallet = createWalletInstance(walletObj);\n try {\n setConnectionStatus(\"connecting\");\n await timeoutPromise(wallet.autoConnect(walletInfo.connectParams), {\n ms: autoConnectTimeout,\n message: autoConnectTimeoutErrorMessage\n });\n setConnectedWallet(wallet, walletInfo.connectParams, true);\n } catch (e) {\n console.error(\"Failed to auto connect wallet\");\n console.error(e);\n if (e instanceof Error && e.message === autoConnectTimeoutErrorMessage) {\n lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);\n }\n setConnectionStatus(\"disconnected\");\n }\n }\n autoconnect();\n }, [createWalletInstance, props.supportedWallets, setConnectedWallet, props.shouldAutoConnect, activeWallet, connectionStatus, autoConnectTimeout, props.signerWallet]);\n const connectWallet = useCallback(async function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const [WalletObj, connectParams] = args;\n const _connectedParams = {\n chainId: chainToConnect?.chainId,\n ...(connectParams || {})\n };\n const wallet = createWalletInstance(WalletObj);\n setConnectionStatus(\"connecting\");\n try {\n // if magic is using social login - it will redirect the page - so need to save walletInfo before connecting\n // TODO: find a better way to handle this\n if (WalletObj.id === walletIds.magicLink) {\n saveLastConnectedWalletInfo({\n walletId: WalletObj.id,\n connectParams: _connectedParams\n });\n }\n await wallet.connect(_connectedParams);\n setConnectedWallet(wallet, _connectedParams);\n } catch (e) {\n console.error(`Error connecting to wallet: ${e}`);\n setConnectionStatus(\"disconnected\");\n throw e;\n }\n return wallet;\n }, [createWalletInstance, setConnectedWallet, chainToConnect]);\n const onWalletDisconnect = useCallback(async () => {\n await lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);\n setConnectionStatus(\"disconnected\");\n setSigner(undefined);\n setActiveWallet(undefined);\n setActiveWalletConfig(undefined);\n }, []);\n const disconnectWallet = useCallback(async () => {\n // if disconnect is called before the wallet is connected\n if (!activeWallet) {\n onWalletDisconnect();\n return;\n }\n const personalWallet = activeWallet.getPersonalWallet();\n await activeWallet.disconnect();\n if (personalWallet) {\n await personalWallet?.disconnect();\n }\n onWalletDisconnect();\n }, [activeWallet, onWalletDisconnect]);\n\n // when wallet's network or account is changed using the extension, update UI\n useEffect(() => {\n if (!activeWallet) {\n return;\n }\n const update = async () => {\n const _signer = await activeWallet.getSigner();\n setSigner(_signer);\n };\n activeWallet.addListener(\"change\", () => {\n update();\n });\n activeWallet.addListener(\"disconnect\", () => {\n onWalletDisconnect();\n });\n return () => {\n activeWallet.removeListener(\"change\");\n activeWallet.removeListener(\"disconnect\");\n };\n }, [activeWallet, onWalletDisconnect]);\n\n // connect signerWallet immediately if it's passed\n // and disconnect it if it's not passed\n const signerConnected = useRef();\n useEffect(() => {\n if (!props.signerWallet) {\n if (signerConnected.current) {\n disconnectWallet();\n signerConnected.current = undefined;\n }\n return;\n }\n if (signerConnected.current === props.signerWallet) {\n return;\n }\n const wallet = createWalletInstance(props.signerWallet);\n setConnectedWallet(wallet);\n signerConnected.current = props.signerWallet;\n }, [createWalletInstance, props.supportedWallets, setConnectedWallet, props.signerWallet, disconnectWallet]);\n return /*#__PURE__*/jsx(ThirdwebWalletContext.Provider, {\n value: {\n disconnect: disconnectWallet,\n wallets: props.supportedWallets,\n connect: connectWallet,\n signer,\n activeWallet,\n activeWalletConfig,\n connectionStatus,\n setConnectionStatus,\n createWalletInstance: createWalletInstance,\n createdWalletInstance: createdWalletInstance,\n createWalletStorage: props.createWalletStorage,\n switchChain,\n setConnectedWallet: setConnectedWallet,\n activeChain: props.activeChain,\n chainToConnect,\n getWalletConfig: walletInstance => {\n return walletInstanceToConfig.get(walletInstance);\n },\n activeChainSetExplicitly: props.activeChainSetExplicitly,\n clientId: props.clientId,\n walletConnectHandler: walletConnectHandler\n },\n children: props.children\n });\n}\n\n/**\n * @internal\n */\nfunction useWalletContext() {\n const ctx = useContext(ThirdwebWalletContext);\n if (!ctx) {\n throw new Error(`useWalletContext() can only be used inside `);\n }\n return ctx;\n}\nfunction useWalletConnectHandler() {\n const ctx = useWalletContext();\n if (!ctx) {\n throw new Error(`useWalletConnectHandler() can only be used inside `);\n }\n return ctx.walletConnectHandler;\n}\nasync function getLastConnectedWalletInfo() {\n const str = await lastConnectedWalletStorage.getItem(LAST_CONNECTED_WALLET_STORAGE_KEY);\n if (!str) {\n return null;\n }\n try {\n return JSON.parse(str);\n } catch {\n await lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);\n return null;\n }\n}\nasync function saveLastConnectedWalletInfo(walletInfo) {\n try {\n await lastConnectedWalletStorage.setItem(LAST_CONNECTED_WALLET_STORAGE_KEY, JSON.stringify(walletInfo));\n } catch (e) {\n console.error(\"Error saving the last connected wallet info\", e);\n }\n}\n\n/**\n * Timeout a promise with a given Error message if the promise does not resolve in given time\n *\n * @param promise - Promise to track for timeout\n * @param option - timeout options\n * @returns\n */\nfunction timeoutPromise(promise, option) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new Error(option.message));\n }, option.ms);\n promise.then(res => {\n clearTimeout(timeoutId);\n resolve(res);\n }, err => {\n clearTimeout(timeoutId);\n reject(err);\n });\n });\n}\nconst autoConnectTimeoutErrorMessage = `Failed to Auto connect. Auto connect timed out. You can increase the timeout duration using the autoConnectTimeout prop on `;\n\n/**\n * @returns the current active wallet instance\n */\n\nfunction useWallet(walletId) {\n const context = useWalletContext();\n invariant(context, \"useWallet() hook must be used within a \");\n const activeWallet = context.activeWallet;\n if (!activeWallet) {\n return undefined;\n }\n\n // if walletId is provided, return the wallet instance only if it matches the walletId\n if (walletId) {\n if (activeWallet.walletId === walletId) {\n return activeWallet;\n } else {\n return undefined;\n }\n }\n return activeWallet;\n}\n\n/**\n * @returns the current active wallet's configuration object\n */\nfunction useWalletConfig() {\n const context = useWalletContext();\n invariant(context, \"useWallet() hook must be used within a \");\n return context.activeWalletConfig;\n}\n\n/**\n *\n * @returns `supportedWallets` configured in the ``\n */\nfunction useWallets() {\n const context = useWalletContext();\n invariant(context, \"useWallets() hook must be used within a \");\n return context.wallets;\n}\n\n/**\n *\n * @returns a method to connect to a wallet class\n */\nfunction useConnect() {\n const context = useWalletContext();\n invariant(context, \"useConnect() hook must be used within a \");\n return context.connect;\n}\n\n/**\n *\n * @returns a method to disconnect from the current active wallet\n */\nfunction useDisconnect() {\n const context = useWalletContext();\n invariant(context, \"useDisconnect() hook must be used within a \");\n return context.disconnect;\n}\n\n/**\n *\n * @returns the connection status of the wallet\n *\n * It can be one of the following:\n * 1. `unknown` - when wallet connection status is not yet known\n * 2. `connecting` - when wallet is connecting\n * 3. `connected` - when wallet is connected\n * 4. `disconnected` - when wallet is disconnected\n *\n */\nfunction useConnectionStatus() {\n const context = useWalletContext();\n invariant(context, \"useConnectionStatus() must be used within a \");\n return context.connectionStatus;\n}\n\n/**\n *\n * @returns a method to create an instance of given wallet class\n */\nfunction useSetConnectionStatus() {\n const context = useWalletContext();\n invariant(context, \"useSetConnectionStatus() must be used within a \");\n return context.setConnectionStatus;\n}\n\n/**\n *\n * @returns a method to create an instance of given wallet class\n */\nfunction useCreateWalletInstance() {\n const context = useWalletContext();\n invariant(context, \"useCreateWalletInstance() must be used within a \");\n return context.createWalletInstance;\n}\n\n/**\n *\n * @returns a method to connect the wallet to network/chain with given chainId\n */\nfunction useSwitchChain() {\n const context = useWalletContext();\n invariant(context, \"useSwitchChain() must be used within a \");\n return context.switchChain;\n}\n\n/**\n *\n * @returns a method to set a connected wallet instance\n */\nfunction useSetConnectedWallet() {\n const context = useWalletContext();\n invariant(context, \"useSwitchChain() must be used within a \");\n return context.setConnectedWallet;\n}\n\nconst AUTH_TOKEN_STORAGE_KEY = \"auth_token_storage_key\";\n\nconst TW_CACHE_KEY_PREFIX = \"tw-cache\";\n\n/**\n * @internal\n */\nfunction enforceCachePrefix(input) {\n return [TW_CACHE_KEY_PREFIX, ...input.filter(i => typeof i !== \"string\" || i !== TW_CACHE_KEY_PREFIX)];\n}\n\n/**\n * @internal\n */\nfunction createContractCacheKey() {\n let contractAddress = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : constants.AddressZero;\n let input = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return enforceCachePrefix([\"contract\", contractAddress, ...input]);\n}\n\n/**\n @internal\n */\nfunction createCacheKeyWithNetwork(input, chainId) {\n return enforceCachePrefix(cacheKeys.network.active(chainId).concat(input));\n}\n\n/**\n * @internal\n */\nfunction invalidateContractAndBalances(queryClient, contractAddress, chainId) {\n return Promise.all([queryClient.invalidateQueries(enforceCachePrefix(createCacheKeyWithNetwork(createContractCacheKey(contractAddress), chainId))), queryClient.invalidateQueries(enforceCachePrefix(createCacheKeyWithNetwork([\"balance\"], chainId)))]);\n}\n\n/**\n @internal\n */\nconst cacheKeys = {\n auth: {\n user: () => enforceCachePrefix([\"user\"])\n },\n network: {\n active: chainId => enforceCachePrefix([\"chainId\", chainId])\n },\n wallet: {\n balance: (chainId, walletAddress, tokenAddress) => enforceCachePrefix(createCacheKeyWithNetwork(enforceCachePrefix([\"balance\", {\n walletAddress,\n tokenAddress\n }]), chainId))\n },\n contract: {\n read: (contractAddress, fnIdentity) => createContractCacheKey(contractAddress, [\"read\", fnIdentity]),\n type: contractAddress => createContractCacheKey(contractAddress, [\"contract-type\"]),\n compilerMetadata: contractAddress => createContractCacheKey(contractAddress, [\"publish-metadata\"]),\n typeAndCompilerMetadata: contractAddress => createContractCacheKey(contractAddress, [\"contract-type-and-metadata\"]),\n metadata: contractAddress => createContractCacheKey(contractAddress, [\"metadata\"]),\n extractFunctions: contractAddress => createContractCacheKey(contractAddress, [\"extractFunctions\"]),\n call: (contractAddress, functionName, args, overrides) => createContractCacheKey(contractAddress, [\"call\", functionName, args, overrides]),\n accountFactory: {\n getAll: contractAddress => createContractCacheKey(contractAddress, [\"accountFactory\"]),\n isAccountDeployed: (contractAdress, admin) => createContractCacheKey(contractAdress, [\"isAccountDeployed\", admin]),\n getAllForAddress: (contractAdress, address) => createContractCacheKey(contractAdress, [\"getAllForAddress\", address])\n },\n account: {\n signers: contractAddress => createContractCacheKey(contractAddress, [\"account\", \"signers\"])\n },\n app: {\n get: contractAddress => createContractCacheKey(contractAddress, [\"appURI\"])\n },\n events: {\n getEvents: (contractAddress, eventName) => createContractCacheKey(contractAddress, [\"events\", \"getEvents\", {\n eventName\n }]),\n getAllEvents: contractAddress => createContractCacheKey(contractAddress, [\"events\", \"getAllEvents\"])\n },\n // specific contract types\n nft: {\n get: (contractAddress, tokenId) => createContractCacheKey(contractAddress, [\"get\", {\n tokenId\n }]),\n balanceOf: (contractAddress, owner, tokenId) => createContractCacheKey(contractAddress, [\"balanceOf\", {\n owner,\n tokenId\n }]),\n query: {\n all: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"query\", \"all\", params] : [\"query\", \"all\"]),\n totalCirculatingSupply: (contractAddress, tokenId) => createContractCacheKey(contractAddress, [\"query\", \"totalCirculatingSupply\", tokenId ?? \"0\"]),\n totalCount: contractAddress => createContractCacheKey(contractAddress, [\"query\", \"totalCount\"]),\n owned: {\n all: (contractAddress, owner) => createContractCacheKey(contractAddress, [\"query\", \"owned\", \"all\", owner])\n }\n },\n sharedMetadata: {\n get: contractAddress => createContractCacheKey(contractAddress)\n },\n drop: {\n getAllUnclaimed: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"getAllUnclaimed\", params] : [\"getAllUnclaimed\"]),\n getAllClaimed: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"getAllClaimed\", params] : [\"getAllClaimed\"]),\n totalUnclaimedSupply: contractAddress => createContractCacheKey(contractAddress, [\"totalUnclaimedSupply\"]),\n totalClaimedSupply: contractAddress => createContractCacheKey(contractAddress, [\"totalClaimedSupply\"]),\n revealer: {\n getBatchesToReveal: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"getBatchesToReveal\", params] : [\"getBatchesToReveal\"])\n }\n }\n },\n token: {\n totalSupply: contractAddress => createContractCacheKey(contractAddress, [\"totalSupply\"]),\n decimals: contractAddress => createContractCacheKey(contractAddress, [\"decimals\"]),\n balanceOf: (contractAddress, walletAddress) => createContractCacheKey(contractAddress, [\"balanceOf\", {\n walletAddress\n }])\n },\n marketplace: {\n getListing: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"getListing\", {\n listingId\n }]),\n getAllListings: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"getAllListings\", params] : [\"getAllListings\"]),\n getTotalCount: contractAddress => createContractCacheKey(contractAddress, [\"getTotalCount\"]),\n getActiveListings: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"getActiveListings\", params] : [\"getActiveListings\"]),\n auction: {\n getBidBufferBps: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"auction\", \"getBidBufferBps\", {\n listingId\n }]),\n getWinningBid: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"auction\", \"getWinningBid\", {\n listingId\n }]),\n getMinimumNextBid: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"auction\", \"getMinimumNextBid\", {\n listingId\n }]),\n getWinner: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"auction\", \"getWinner\", {\n listingId\n }])\n },\n directListings: {\n getAll: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"directListings\", \"getAll\", params] : [\"directListings\", \"getAll\"]),\n getAllValid: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"directListings\", \"getAllValid\", params] : [\"directListings\", \"getAllValid\"]),\n getListing: (contractAddress, listingId) => createContractCacheKey(contractAddress, [\"directListings\", \"getListing\", {\n listingId\n }]),\n getTotalCount: contractAddress => createContractCacheKey(contractAddress, [\"directListings\", \"getTotalCount\"])\n },\n englishAuctions: {\n getAll: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"englishAuctions\", \"getAll\", params] : [\"englishAuctions\", \"getAll\"]),\n getAllValid: (contractAddress, params) => createContractCacheKey(contractAddress, params ? [\"englishAuctions\", \"getAllValid\", params] : [\"englishAuctions\", \"getAllValid\"]),\n getAuction: (contractAddress, auctionId) => createContractCacheKey(contractAddress, [\"englishAuctions\", \"getAuction\", {\n auctionId\n }]),\n getWinningBid: (contractAddress, auctionId) => createContractCacheKey(contractAddress, [\"englishAuctions\", \"getWinningBid\", {\n auctionId\n }]),\n getTotalCount: contractAddress => createContractCacheKey(contractAddress, [\"englishAuctions\", \"getTotalCount\"])\n }\n }\n },\n // extensions\n extensions: {\n claimConditions: {\n getActive: (contractAddress, tokenId, options) => createContractCacheKey(contractAddress, tokenId ? [\"claimConditions\", \"getActive\", {\n tokenId\n }, options] : [\"claimConditions\", \"getActive\", options]),\n getAll: (contractAddress, tokenId, options) => createContractCacheKey(contractAddress, tokenId ? [\"claimConditions\", \"getAll\", {\n tokenId\n }, options] : [\"claimConditions\", \"getAll\", options]),\n getClaimerProofs: (contractAddress, tokenId) => createContractCacheKey(contractAddress, tokenId ? [\"claimConditions\", \"getClaimerProofs\", {\n tokenId\n }] : [\"claimConditions\", \"getClaimerProofs\"]),\n getClaimIneligibilityReasons: (contractAddress, params, tokenId) => createContractCacheKey(contractAddress, tokenId ? [\"claimConditions\", \"getIneligibilityReasons\", {\n tokenId\n }, params] : [\"claimConditions\", \"getIneligibilityReasons\", params]),\n // combinations of queries cache keys\n useActiveClaimConditionForWallet: (contractAddress, walletAddress, tokenId) => createContractCacheKey(contractAddress, tokenId ? [\"claimConditions\", \"useActiveClaimConditionForWallet\", {\n tokenId,\n walletAddress\n },,] : [\"claimConditions\", \"getIneligibilityReasons\", {\n walletAddress\n }])\n },\n // primary sale contracts\n sales: {\n getRecipient: contractAddress => createContractCacheKey(contractAddress, [\"sales\"])\n },\n // royalties\n royalties: {\n getDefaultRoyaltyInfo: contractAddress => createContractCacheKey(contractAddress, [\"royalties\"])\n },\n // platform fees\n platformFees: {\n get: contractAddress => createContractCacheKey(contractAddress, [\"platformFees\"])\n },\n // contract metadata\n metadata: {\n get: contractAddress => createContractCacheKey(contractAddress, [\"metadata\"])\n },\n roles: {\n getAll: contractAddress => createContractCacheKey(contractAddress, [\"roles\"]),\n get: (contractAddress, role) => createContractCacheKey(contractAddress, [\"roles\", {\n role\n }])\n }\n }\n};\n\n/**\n * Hook to logout the connected wallet from the backend.\n * The backend logout URL must be configured on the ThirdwebProvider.\n *\n * @returns - A function to invoke to logout.\n *\n * @see {@link https://portal.thirdweb.com/react/react.uselogout?utm_source=sdk | Documentation}\n *\n */\nfunction useLogout() {\n const queryClient = useQueryClient();\n const authConfig = useThirdwebAuthContext();\n const logout = useMutation({\n mutationFn: async () => {\n invariant(authConfig, \"Please specify an authConfig in the ThirdwebProvider\");\n invariant(authConfig.authUrl, \"Please specify an authUrl in the authConfig.\");\n await fetch(`${authConfig.authUrl}/logout`, {\n method: \"POST\",\n credentials: \"include\"\n });\n authConfig.secureStorage?.removeItem(AUTH_TOKEN_STORAGE_KEY);\n queryClient.invalidateQueries(cacheKeys.auth.user());\n }\n });\n return {\n logout: logout.mutateAsync,\n isLoading: logout.isLoading\n };\n}\n\n/**\n * Hook to switch the account of the active wallet\n *\n * @returns - A function to invoke to switch account.\n *\n * @see {@link https://portal.thirdweb.com/react/react.useswitchaccount?utm_source=sdk | Documentation}\n *\n */\nfunction useSwitchAccount() {\n const queryClient = useQueryClient();\n const authConfig = useThirdwebAuthContext();\n const switchAccount = useMutation({\n mutationFn: async address => {\n invariant(authConfig, \"Please specify an authConfig in the ThirdwebProvider\");\n invariant(authConfig.authUrl, \"Please specify an authUrl in the authConfig.\");\n await fetch(`${authConfig.authUrl}/switch-account`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n address\n })\n });\n queryClient.invalidateQueries(cacheKeys.auth.user());\n }\n });\n return {\n switchAccount: switchAccount.mutateAsync,\n isLoading: switchAccount.isLoading\n };\n}\n\nconst ThirdwebAuthProvider = _ref => {\n let {\n value,\n children\n } = _ref;\n // Remove trailing slash from URL if present\n const authContext = useMemo(() => {\n if (!value) {\n return undefined;\n }\n const context = {\n ...value,\n authUrl: value.authUrl?.replace(/\\/$/, \"\")\n };\n return context;\n }, [value]);\n return /*#__PURE__*/jsxs(ThirdwebAuthContext.Provider, {\n value: authContext,\n children: [children, /*#__PURE__*/jsx(ChangeActiveWalletOnAccountSwitch, {})]\n });\n};\nfunction ChangeActiveWalletOnAccountSwitch() {\n const wallet = useWallet();\n const {\n logout\n } = useLogout();\n const {\n switchAccount\n } = useSwitchAccount();\n const authConfig = useThirdwebAuthContext();\n const queryClient = useQueryClient();\n\n // When active wallet switches, switch the active account cookie and invalidate user query\n useEffect(() => {\n const handleSwitchAccount = async data => {\n if (!data.address) {\n return;\n }\n try {\n await switchAccount(data.address);\n } catch (err) {\n console.debug(`[Auth] Failed to switch account to ${data.address} with error:\\n`, err);\n }\n };\n const handleLogout = async () => {\n try {\n await logout();\n } catch (err) {\n console.debug(`[Auth] Failed to logout with error:\\n`, err);\n }\n };\n const shouldAddListener = !!wallet && authConfig && authConfig.authUrl;\n if (shouldAddListener) {\n wallet.addListener(\"connect\", handleSwitchAccount);\n wallet.addListener(\"change\", handleSwitchAccount);\n wallet.addListener(\"disconnect\", handleLogout);\n }\n return () => {\n if (shouldAddListener) {\n wallet.removeListener(\"connect\", handleSwitchAccount);\n wallet.removeListener(\"change\", handleSwitchAccount);\n wallet.removeListener(\"disconnect\", handleLogout);\n }\n };\n }, [wallet, queryClient, authConfig, logout, switchAccount]);\n return null;\n}\n\nfunction useUpdateChainsWithClientId(supportedChains, activeChain, clientId) {\n const supportedChainsWithKey = useMemo(() => {\n return supportedChains.map(chain => updateChainRPCs(chain, clientId));\n }, [supportedChains, clientId]);\n const activeChainIdOrObjWithKey = useMemo(() => {\n if (!activeChain || typeof activeChain === \"string\" || typeof activeChain === \"number\") {\n return activeChain;\n }\n return updateChainRPCs(activeChain, clientId);\n }, [activeChain, clientId]);\n return [supportedChainsWithKey, activeChainIdOrObjWithKey];\n}\n\nconst QueryClientProviderWithDefault = _ref => {\n let {\n queryClient,\n children\n } = _ref;\n const queryClientWithDefault = useMemo(() => {\n return queryClient ? queryClient : new QueryClient();\n }, [queryClient]);\n return /*#__PURE__*/jsx(QueryClientProvider, {\n client: queryClientWithDefault,\n children: children\n });\n};\n\nconst ThirdwebConfigContext = /* @__PURE__ */createContext(undefined);\n\n/**\n * @internal\n */\nconst ThirdwebConfigProvider = _ref => {\n let {\n value,\n children\n } = _ref;\n return /*#__PURE__*/jsx(ThirdwebConfigContext.Provider, {\n value: value,\n children: children\n });\n};\n\n/**\n * @internal\n */\nfunction useThirdwebConfigContext() {\n const context = useContext(ThirdwebConfigContext);\n invariant(context, \"useThirdwebConfigContext() hook must be used within a \");\n return context;\n}\n\nconst ThirdwebSDKContext = /* @__PURE__ */createContext({});\n\n/** @internal */\n// eslint-disable-next-line turbo/no-undeclared-env-vars, better-tree-shaking/no-top-level-side-effects\nconst __DEV__ = process.env.NODE_ENV !== \"production\";\n\n/**\n * @internal\n */\nfunction useSDKContext() {\n const ctx = useContext(ThirdwebSDKContext);\n invariant(ctx._inProvider, \"useSDK must be called from within a ThirdwebProvider, did you forget to wrap your app in a ?\");\n return ctx;\n}\n\n/**\n *\n * @returns {@link ThirdwebSDK}\n * Access the instance of the thirdweb SDK created by the ThirdwebProvider\n * to call methods using the connected wallet on the desiredChainId.\n * @example\n * ```javascript\n * const sdk = useSDK();\n * ```\n */\nfunction useSDK() {\n const {\n sdk\n } = useSDKContext();\n return sdk;\n}\n\n/**\n * @internal\n */\nfunction useSDKChainId() {\n const sdk = useSDK();\n return sdk?._chainId;\n}\n\nconst INITIAL_CONTEXT_VALUE = {\n wallet: undefined,\n address: undefined,\n chainId: undefined,\n signer: undefined\n};\nconst ThirdwebConnectedWalletContext = /* @__PURE__ */createContext(undefined);\n\n/**\n * @internal\n */\nconst ThirdwebConnectedWalletProvider = _ref => {\n let {\n signer,\n children\n } = _ref;\n const {\n chains,\n clientId\n } = useThirdwebConfigContext();\n const storage = useSDK()?.storage;\n const [contextValue, setContextValue] = useState({\n ...INITIAL_CONTEXT_VALUE,\n signer: signer ? signer : undefined\n });\n useEffect(() => {\n setContextValue(val => ({\n ...val,\n signer: signer ? signer : undefined\n }));\n }, [signer]);\n useEffect(() => {\n if (!storage) {\n return;\n }\n let s = signer;\n if (signer) {\n // just get both of these up front and keep them around with the context\n Promise.all([signer.getAddress(), signer.getChainId()]).then(_ref2 => {\n let [address, chainId] = _ref2;\n const chain = chains.find(c => c.chainId === chainId);\n let rpcUrl = undefined;\n if (chain) {\n try {\n rpcUrl = getValidChainRPCs(chain, clientId)[0];\n } catch (e) {\n // failed to get a viable rpc url, nothing we can do\n console.error(e);\n }\n }\n\n // only if the signer is still the same!\n if (signer === s) {\n const wallet = new UserWallet(signer, {\n readonlySettings: rpcUrl ? {\n rpcUrl,\n chainId\n } : undefined\n }, storage);\n setContextValue({\n wallet,\n address,\n chainId,\n signer\n });\n }\n }).catch(err => {\n if (__DEV__) {\n console.warn(\"failed to get wallet instance in ``\", err);\n }\n });\n } else {\n // if signer is not provided, re-set the context value to initial values\n setContextValue(INITIAL_CONTEXT_VALUE);\n }\n return () => {\n // set the previous signer to undefined because it is invalid now\n s = undefined;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [signer, clientId]);\n return /*#__PURE__*/jsx(ThirdwebConnectedWalletContext.Provider, {\n value: contextValue,\n children: children\n });\n};\nfunction useThirdwebConnectedWalletContext() {\n const context = useContext(ThirdwebConnectedWalletContext);\n invariant(context, \"useThirdwebConnectedWalletContext() hook must be used within a \");\n return context;\n}\n\nconst WrappedThirdwebSDKProvider = _ref => {\n let {\n sdkOptions = {},\n storageInterface,\n supportedChains,\n activeChain,\n signer,\n children,\n clientId,\n secretKey\n } = _ref;\n const activeChainId = useMemo(() => {\n if (!activeChain) {\n return supportedChains[0]?.chainId;\n }\n if (typeof activeChain === \"number\") {\n return activeChain;\n }\n if (typeof activeChain === \"string\") {\n return supportedChains.find(c => c.slug === activeChain)?.chainId;\n }\n return activeChain.chainId;\n }, [activeChain, supportedChains]);\n const sdk = useMemo(() => {\n let chainId = activeChainId;\n const supportedChain = supportedChains.find(c => c.chainId === chainId);\n if (!supportedChain && chainId !== undefined) {\n console.warn(`The chainId ${chainId} is not in the configured chains, please add it to the ThirdwebProvider`);\n // reset the chainId as to not trigger an error in the sdk constructor\n chainId = undefined;\n }\n let readonlySettings = undefined;\n if (supportedChain && supportedChain.rpc.length > 0) {\n try {\n const rpcUrl = getValidChainRPCs(supportedChain, clientId)[0];\n readonlySettings = {\n chainId: supportedChain.chainId,\n rpcUrl\n };\n } catch (e) {\n // no-op\n }\n }\n\n // TODO: find a better way to fix the type error\n\n const mergedOptions = {\n readonlySettings,\n ...sdkOptions,\n supportedChains: supportedChains\n };\n let sdk_ = undefined;\n if (chainId) {\n // sdk from chainId\n sdk_ = new ThirdwebSDK(chainId, {\n ...mergedOptions,\n clientId,\n secretKey\n }, storageInterface);\n }\n // if we still have no sdk fall back to the first element in chains\n if (!sdk_) {\n if (supportedChains.length > 0) {\n chainId = supportedChains[0].chainId;\n sdk_ = new ThirdwebSDK(chainId, mergedOptions, storageInterface);\n } else {\n console.error(\"No chains configured, please pass a chain or chains to the ThirdwebProvider\");\n return undefined;\n }\n }\n\n // set the chainId on the sdk instance to compare things later\n sdk_._chainId = chainId;\n return sdk_;\n }, [activeChainId, supportedChains, sdkOptions, storageInterface, clientId, secretKey]);\n useEffect(() => {\n // if we have an sdk and a signer update the signer\n if (sdk && sdk._chainId === activeChainId) {\n if (signer) {\n sdk.updateSignerOrProvider(signer);\n } else if (activeChainId) {\n sdk.updateSignerOrProvider(activeChainId);\n }\n }\n // we know what we're doing\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sdk, sdk?._chainId, signer, activeChainId]);\n const ctxValue = useMemo(() => ({\n sdk: sdk && sdk._chainId === activeChainId ? sdk : undefined,\n _inProvider: true\n }), [activeChainId, sdk]);\n return /*#__PURE__*/jsx(ThirdwebSDKContext.Provider, {\n value: ctxValue,\n children: children\n });\n};\n\n/**\n * The `ThirdwebSDKProvider` is used when you want to provide your own wallet connection logic and just use the thirdweb SDK to interact with smart contracts and the blockchain.\n * This means you can use everything in the SDK except for wallet connection-related components and hooks. if you need those please use the `ThirdwebProvider` instead.\n *\n * `ThirdwebSDKProvider` allows you to set a provider & signer to the Thirdweb SDK.\n *\n * @example\n * Wrap your app in the ThirdwebSDKProvider to access the SDK’s functionality from anywhere in your app.\n *\n * ```tsx\n * import { ThirdwebSDKProvider } from \"@thirdweb-dev/react\";\n * import { ethers } from \"ethers\";\n *\n * // Example shows how to get the signer from the injected provider ( wallet extension )\n * function Example() {\n * return (\n * \n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nconst ThirdwebSDKProvider = props => {\n const {\n signer,\n children,\n queryClient,\n supportedChains: _supportedChains,\n activeChain,\n clientId,\n ...restProps\n } = props;\n if (!clientId) {\n checkClientIdOrSecretKey(\"No API key. Please provide a clientId. It is required to access thirdweb's services. You can create a key at https://thirdweb.com/create-api-key\", clientId, undefined);\n }\n const supportedChains = _supportedChains || defaultChains;\n const supportedChainsNonNull = useMemo(() => {\n const isActiveChainObject = typeof activeChain === \"object\" && activeChain !== null;\n if (!isActiveChainObject) {\n return supportedChains;\n }\n const isActiveChainInSupportedChains = supportedChains.find(c => c.chainId === activeChain.chainId);\n\n // if activeChain is not in supportedChains - add it\n if (!isActiveChainInSupportedChains) {\n return [...supportedChains, activeChain];\n }\n\n // if active chain is in supportedChains - replace it with object in activeChain\n return supportedChains.map(c => c.chainId === activeChain.chainId ? activeChain : c);\n }, [supportedChains, activeChain]);\n const [supportedChainsWithKey, activeChainIdOrObjWithKey] = useUpdateChainsWithClientId(supportedChainsNonNull, activeChain || supportedChainsNonNull[0], clientId);\n const mergedChains = useMemo(() => {\n if (!activeChainIdOrObjWithKey || typeof activeChainIdOrObjWithKey === \"string\" || typeof activeChainIdOrObjWithKey === \"number\") {\n return supportedChainsWithKey;\n }\n const _mergedChains = [...supportedChainsWithKey.filter(c => c.chainId !== activeChainIdOrObjWithKey.chainId), activeChainIdOrObjWithKey];\n // return a _mergedChains uniqued by chainId key\n return _mergedChains.filter((chain, index, self) => index === self.findIndex(c => c.chainId === chain.chainId));\n }, [supportedChainsWithKey, activeChainIdOrObjWithKey]);\n return /*#__PURE__*/jsx(ThirdwebConfigProvider, {\n value: {\n chains: mergedChains,\n clientId\n },\n children: /*#__PURE__*/jsx(QueryClientProviderWithDefault, {\n queryClient: queryClient,\n children: /*#__PURE__*/jsx(WrappedThirdwebSDKProvider, {\n signer: signer,\n supportedChains: mergedChains,\n clientId: clientId,\n activeChain: activeChainIdOrObjWithKey,\n ...restProps,\n children: /*#__PURE__*/jsx(ThirdwebConnectedWalletProvider, {\n signer: signer,\n children: children\n })\n })\n })\n });\n};\n\n/**\n * @internal\n */\nconst ThirdwebProviderCore = _ref => {\n let {\n createWalletStorage = createAsyncLocalStorage,\n ...props\n } = _ref;\n const {\n activeChain\n } = props;\n const supportedChains = props.supportedChains || defaultChains;\n const supportedChainsNonNull = useMemo(() => {\n const isActiveChainObject = typeof activeChain === \"object\" && activeChain !== null;\n if (!isActiveChainObject) {\n return supportedChains;\n }\n const isActiveChainInSupportedChains = supportedChains.find(c => c.chainId === activeChain.chainId);\n\n // if activeChain is not in supportedChains - add it\n if (!isActiveChainInSupportedChains) {\n return [...supportedChains, activeChain];\n }\n\n // if active chain is in supportedChains - replace it with object in activeChain\n return supportedChains.map(c => c.chainId === activeChain.chainId ? activeChain : c);\n }, [supportedChains, activeChain]);\n const [supportedChainsWithKey, activeChainIdOrObjWithKey] = useUpdateChainsWithClientId(supportedChainsNonNull, props.activeChain || supportedChainsNonNull[0], props.clientId);\n const activeChainWithKey = useMemo(() => {\n if (typeof activeChainIdOrObjWithKey === \"number\") {\n const resolveChain = supportedChainsWithKey.find(chain => chain.chainId === activeChainIdOrObjWithKey);\n if (!resolveChain) {\n throw new Error(`Invalid chainId: ${activeChainIdOrObjWithKey}. It is not one of supportedChains`);\n }\n return resolveChain;\n }\n if (typeof activeChainIdOrObjWithKey === \"string\") {\n const resolvedChain = supportedChainsWithKey.find(chain => chain.slug === activeChainIdOrObjWithKey);\n if (!resolvedChain) {\n throw new Error(`Invalid chain: \"${activeChainIdOrObjWithKey}\". It is not one of supportedChains`);\n }\n return resolvedChain;\n }\n return activeChainIdOrObjWithKey;\n }, [activeChainIdOrObjWithKey, supportedChainsWithKey]);\n const dAppMeta = props.dAppMeta;\n return /*#__PURE__*/jsx(ThirdwebThemeContext.Provider, {\n value: props.theme,\n children: /*#__PURE__*/jsx(ThirdwebWalletProvider, {\n chains: supportedChainsWithKey,\n supportedWallets: props.supportedWallets,\n shouldAutoConnect: props.autoConnect,\n createWalletStorage: createWalletStorage,\n dAppMeta: dAppMeta,\n activeChain: activeChainWithKey,\n autoSwitch: props.autoSwitch,\n autoConnectTimeout: props.autoConnectTimeout,\n clientId: props.clientId,\n activeChainSetExplicitly: !!props.activeChain,\n signerWallet: props.signerWallet,\n children: /*#__PURE__*/jsx(ThirdwebSDKProviderWrapper, {\n queryClient: props.queryClient,\n sdkOptions: props.sdkOptions,\n supportedChains: supportedChainsWithKey,\n activeChain: activeChainWithKey,\n storageInterface: props.storageInterface,\n authConfig: props.authConfig,\n clientId: props.clientId,\n secretKey: props.secretKey,\n children: /*#__PURE__*/jsx(ThirdwebAuthProvider, {\n value: props.authConfig,\n children: props.children\n })\n })\n })\n });\n};\nconst ThirdwebSDKProviderWrapper = _ref2 => {\n let {\n children,\n ...props\n } = _ref2;\n const signer = useWalletContext()?.signer;\n return /*#__PURE__*/jsx(ThirdwebSDKProvider, {\n signer: signer,\n ...props,\n children: children\n });\n};\n\nfunction useSupportedChains() {\n const context = useContext(ThirdwebConfigContext);\n invariant(context, \"useSupportedChains() hook must be used within a \");\n return context.chains;\n}\n\n/**\n * A hook to get the native or (optional) ERC20 token balance of the connected wallet.\n *\n * @param tokenAddress - the address of the token contract, if empty will use the chain's native token\n * @returns the balance of the connected wallet (native or ERC20)\n */\nfunction useBalance(tokenAddress) {\n const walletAddress = useAddress();\n const {\n wallet,\n address,\n chainId\n } = useThirdwebConnectedWalletContext();\n const cacheKey = useMemo(() => {\n return cacheKeys.wallet.balance(chainId || -1, address, tokenAddress);\n }, [chainId, tokenAddress, address]);\n return useQuery(cacheKey, () => {\n return wallet?.balance(tokenAddress);\n }, {\n // if user is not logged in no reason to try to fetch\n enabled: !!wallet && !!walletAddress && !!chainId,\n retry: true,\n keepPreviousData: false\n });\n}\n\n/**\n * Get the native token balance of a wallet address on the `activeChain` network set in the `ThirdwebProvider`\n *\n * @param walletAddress - the address of the wallet that you want to get the native balance\n * @returns the balance of the given wallet address\n */\nfunction useBalanceForAddress(walletAddress) {\n invariant(walletAddress, \"wallet address is not provided\");\n const {\n activeChain\n } = useWalletContext();\n const chainId = activeChain.chainId;\n const sdk = useSDK();\n const cacheKey = useMemo(() => {\n return cacheKeys.wallet.balance(chainId, walletAddress);\n }, [chainId, walletAddress]);\n return useQuery(cacheKey, async () => {\n invariant(sdk, \"SDK is not initialized\");\n return await sdk.getBalance(walletAddress);\n });\n}\n\n/**\n * @internal\n */\nfunction useConnectedWallet() {\n const context = useContext(ThirdwebConnectedWalletContext);\n invariant(context, \"useConnectedWallet() hook must be used within a \");\n return context.signer;\n}\n\n/**\n * Hook for accessing the address of the connected wallet\n *\n * ```javascript\n * import { useAddress } from \"@thirdweb-dev/react\"\n * ```\n *\n *\n * @example\n * To get the address of the connected wallet, you can use the hook as follows:\n *\n * ```javascript\n * import { useAddress } from \"@thirdweb-dev/react\"\n *\n * const App = () => {\n * const address = useAddress()\n *\n * return
{address}
\n * }\n * ```\n *\n * The `address` variable will hold the address of the connected wallet if a user has connected using one of the supported wallet connection hooks.\n *\n * @see {@link https://portal.thirdweb.com/react/react.useaddress?utm_source=sdk | Documentation}\n *\n * @public\n */\nfunction useAddress() {\n const context = useContext(ThirdwebConnectedWalletContext);\n invariant(context, \"useAddress() hook must be used within a \");\n return context.address;\n}\n\n/**\n * Hook for accessing the chain ID of the network the current wallet is connected to\n *\n * ```javascript\n * import { useChainId } from \"@thirdweb-dev/react\"\n * ```\n *\n * @example\n * You can get the chain ID of the connected wallet by using the hook as follows:\n * ```javascript\n * import { useChainId } from \"@thirdweb-dev/react\"\n *\n * const App = () => {\n * const chainId = useChainId()\n *\n * return
{chainId}
\n * }\n * ```\n * @see {@link https://portal.thirdweb.com/react/react.usechainid?utm_source=sdk | Documentation}\n * @public\n */\nfunction useChainId() {\n const context = useContext(ThirdwebConnectedWalletContext);\n invariant(context, \"useChainId() hook must be used within a \");\n return context.chainId;\n}\n\n/**\n * Hook for accessing the active Chain the current wallet is connected to\n *\n * ```javascript\n * import { useChain } from \"@thirdweb-dev/react-core\"\n * ```\n *\n * @example\n * You can get the chain of the connected wallet by using the hook as follows:\n * ```javascript\n * import { useChain } from \"@thirdweb-dev/react-core\"\n *\n * const App = () => {\n * const chain = useChain()\n *\n * return
{chain.chainId}
\n * }\n * ```\n * @see {@link https://portal.thirdweb.com/react/react.useActiveChain?utm_source=sdk | Documentation}\n * @public\n */\nfunction useChain() {\n const chainId = useChainId();\n const chains = useSupportedChains();\n const chain = useMemo(() => {\n return chains.find(_chain => _chain.chainId === chainId);\n }, [chainId, chains]);\n const unknownChain = useMemo(() => {\n if (!chain) {\n return defaultChains.find(c => c.chainId === chainId);\n }\n }, [chainId, chain]);\n return chain || unknownChain;\n}\n\n/**\n * @deprecated\n *\n * This hook is renamed to `useChain`\n *\n * use the `useChain` hook instead\n */\nfunction useActiveChain() {\n return useChain();\n}\n\n// this hook is only for backwards compatibility\n\n/**\n *\n *\n * Hook for getting metadata about the network the current wallet is connected to and switching networks\n *\n * It's important to note that some wallet apps do not support programmatic network switching and switchNetwork will be undefined.\n * For those situations, you can typically switch networks in the wallet app this hook will still work.\n *\n * @example\n * ```javascript\n * import { useNetwork } from \"@thirdweb-dev/react\";\n *\n * const App = () => {\n * const [, switchNetwork] = useNetwork();\n * return (\n * // switchNetwork is undefined if the wallet does not support programmatic network switching\n * // 137 is the chainId for Polygon in this example\n * \n * );\n * };\n * ```\n *\n * @deprecated - use `useChain`, `useSwitchChain`, `useChainId` instead\n */\nfunction useNetwork() {\n const chain = useChain();\n const chainId = useChainId();\n const switchChain = useSwitchChain();\n const supportedChains = useSupportedChains();\n const wallet = useWallet();\n const isMetamaskInstalled = assertWindowEthereum(globalThis.window) ? globalThis.window.ethereum.isMetaMask : false;\n const isCoinbaseInstalled = assertWindowEthereum(globalThis.window) ? globalThis.window.ethereum.isCoinbaseWallet : false;\n\n // switch not supported if connected to a mobile wallet\n const switchChainNotSupported = !wallet || wallet.walletId === walletIds.walletConnectV1 || wallet.walletId === walletIds.walletConnect || wallet.walletId === walletIds.metamask && !isMetamaskInstalled || wallet.walletId === walletIds.coinbase && !isCoinbaseInstalled;\n\n // error when switching network\n const [error, setError] = useState(undefined);\n\n // loading: true when switching network\n const [loading, setLoading] = useState(false);\n const switchNetwork = useCallback(async _chainId => {\n // reset error and loading\n setLoading(true);\n setError(undefined);\n try {\n await switchChain(_chainId);\n } catch (e) {\n setError(e);\n setLoading(false);\n return {\n data: undefined,\n error: e\n };\n }\n setLoading(false);\n return {\n data: supportedChains.find(c => c.chainId === _chainId) || defaultChains.find(c => c.chainId === _chainId),\n error: undefined\n };\n }, [switchChain, supportedChains]);\n return [{\n data: {\n chain: chainId === undefined ? undefined : chain || {\n chainId,\n unsupported: true\n },\n chains: wallet ? supportedChains : []\n },\n error: error,\n loading\n }, switchChainNotSupported ? undefined : switchNetwork];\n}\n\nconst usePersonalWalletAddress = () => {\n const [personalWalletAddress, setPersonalWalletAddress] = useState();\n const activeWallet = useWallet();\n useEffect(() => {\n (async () => {\n const possiblePersonalWallet = activeWallet?.getPersonalWallet();\n if (!possiblePersonalWallet) {\n setPersonalWalletAddress(undefined);\n return;\n }\n const address = await (await possiblePersonalWallet?.getSigner())?.getAddress();\n setPersonalWalletAddress(address);\n })();\n }, [activeWallet]);\n return personalWalletAddress;\n};\n\n// we prefix all our query keys with this to avoid possible collisions with user-defined queries that share the same query client\n// marker to make sure the query will not get stored in local storage by a query persister\nconst NEVER_PERSIST_QUERY_POSTFIX = {\n persist: false\n};\nfunction neverPersist(key) {\n return [...key, NEVER_PERSIST_QUERY_POSTFIX];\n}\n\n/**\n * @internal\n */\nfunction shouldNeverPersistQuery(key) {\n return key[key.length - 1] === NEVER_PERSIST_QUERY_POSTFIX;\n}\n\n/**\n * Makes a parameter required to be passed, but still allows it to be null or undefined.\n * @internal\n */\n\nfunction requiredParamInvariant(condition, message) {\n invariant(condition !== null || condition !== undefined, message);\n}\n\n/**\n * A wallet address.\n */\n\n/**\n * A contract address.\n */\n\n/**\n * The parameters to pass to the mint and transfer functions.\n *\n */\n\n/**\n * The parameters to pass to the burn function.\n *\n */\n\n// NFTS //\n/**\n * The possible NFT contract types.\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * ```\n */\n/**\n * The possible Token contract types.\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * ```\n */\n/**\n * Possible NFT contract types.\n */\n/**\n * The params to pass to `useTransferNFT`.\n */\n/**\n * The params to pass to `useTransferBatchNFT`.\n */\n/**\n * The params to pass to `useMintNFTSupply`.\n */\n/**\n * The params for the {@link useMintNFT} hook mutation.\n *\n */\n/**\n * The return type of the {@link useMintNFT} hook.\n *\n */\n/**\n * The params for the {@link useBurnNFT} hook mutation.\n *\n */\n// DROPS //\n/**\n * The possible DROP contract types.\n */\n/**\n * The possible revealable contract types.\n */\n/**\n * The params for the {@link useDelayedRevealLazyMint} hook mutation.\n *\n */\n/**\n * The params for the {@link useRevealLazyMint} hook mutation.\n *\n */\n/**\n * The params for the {@link useClaimNFT} hook mutation.\n *\n */\n/**\n * The return type of the {@link useClaimNFT} hook.\n *\n */\n// MARKETPLACE //\n// TOKEN DROP //\n// Helpers\n/**\n * @internal\n */\nfunction getErcs(contract) {\n return {\n erc1155: getErc1155(contract),\n erc721: getErc721(contract),\n erc20: getErc20(contract)\n };\n}\n\n/**\n * @internal\n */\nfunction getErc1155(contract) {\n if (!contract) {\n return undefined;\n }\n try {\n if (\"erc1155\" in contract) {\n return contract.erc1155;\n }\n } catch (error) {\n return undefined;\n }\n return undefined;\n}\n\n/**\n * @internal\n */\nfunction getErc721(contract) {\n if (!contract) {\n return undefined;\n }\n try {\n if (\"erc721\" in contract) {\n return contract.erc721;\n }\n } catch (error) {\n return undefined;\n }\n return undefined;\n}\n\n/**\n * @internal\n */\nfunction getErc20(contract) {\n if (!contract) {\n return undefined;\n }\n try {\n if (\"erc20\" in contract) {\n return contract.erc20;\n }\n } catch (error) {\n return undefined;\n }\n return undefined;\n}\n\n/** @internal */\nfunction useQueryWithNetwork(queryKey, queryFn, options) {\n const activeChainId = useSDKChainId();\n const mergedOptions = {\n ...options,\n enabled: !!(activeChainId && options?.enabled)\n };\n return useQuery(createCacheKeyWithNetwork(queryKey, activeChainId), queryFn, mergedOptions);\n}\n\n/**\n * The options to be passed as the second parameter to the {@link useClaimIneligibilityReasons} hook.\n *\n */\n\n/**\n * The params for the {@link useSetClaimConditions} hook mutation.\n *\n */\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n/**\n * Get the active claim condition\n *\n * @example\n * ```javascript\n * const { data: activeClaimCondition, isLoading, error } = useActiveClaimCondition(contract);\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC721, ERC1155 or ERC20 spec and implements the `claimConditions` extension.\n * @param tokenId - the id of the token to fetch the claim conditions for (if the contract is an ERC1155 contract)\n * @returns a response object with the currently active claim condition\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useactiveclaimcondition?utm_source=sdk | Documentation}\n */\nfunction useActiveClaimCondition(contract, tokenId, options) {\n const contractAddress = contract?.getAddress();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.extensions.claimConditions.getActive(contractAddress, tokenId, options), () => {\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n return erc1155.claimConditions.getActive(tokenId, options);\n }\n if (erc721) {\n return erc721.claimConditions.getActive(options);\n }\n if (erc20) {\n return erc20.claimConditions.getActive(options);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n // Checks that happen here:\n // 1. if the contract is based on ERC1155 contract => tokenId cannot be `undefined`\n // 2. if the contract is NOT based on ERC1155 => we have to have either an ERC721 or ERC20 contract\n enabled: erc1155 ? tokenId !== undefined : !!erc721 || !!erc20\n });\n}\n\n/**\n * Get claimer proofs\n *\n * @example\n * ```javascript\n * const { data: claimerProofs, isLoading, error } = useClaimerProofs(contract);\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC721, ERC1155 or ERC20 spec and implements the `claimConditions` extension.\n * @param claimerAddress - the address of the claimer to fetch the claimer proofs for\n * @param tokenId - the id of the token to fetch the claimer proofs for (if the contract is an ERC1155 contract)\n * @param claimConditionId - optional the claim condition id to get the proofs for\n * @returns a response object with the snapshot for the provided address\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useclaimerproofs?utm_source=sdk | Documentation}\n */\nfunction useClaimerProofs(contract, claimerAddress, tokenId, claimConditionId) {\n const contractAddress = contract?.getAddress();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.extensions.claimConditions.getClaimerProofs(contractAddress, tokenId), () => {\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n return erc1155.claimConditions.getClaimerProofs(tokenId, claimerAddress, claimConditionId);\n }\n if (erc721) {\n return erc721.claimConditions.getClaimerProofs(claimerAddress, claimConditionId);\n }\n if (erc20) {\n return erc20.claimConditions.getClaimerProofs(claimerAddress, claimConditionId);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n // Checks that happen here:\n // 1. if the contract is based on ERC1155 contract => tokenId cannot be `undefined`\n // 2. if the contract is NOT based on ERC1155 => we have to have either an ERC721 or ERC20 contract\n enabled: erc1155 ? tokenId !== undefined : !!erc721 || !!erc20\n });\n}\n\n/**\n * Get all claim conditions\n *\n * @example\n * ```javascript\n * const { data: claimConditions, isLoading, error } = useClaimConditions(contract);\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC721, ERC1155 or ERC20 spec and implements the `claimConditions` extension.\n * @param tokenId - the id of the token to fetch the claim conditions for (if the contract is an ERC1155 contract)\n * @returns a response object with the list of claim conditions\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useclaimconditions?utm_source=sdk | Documentation}\n */\nfunction useClaimConditions(contract, tokenId, options) {\n const contractAddress = contract?.getAddress();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.extensions.claimConditions.getAll(contractAddress, tokenId, options), () => {\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n return erc1155.claimConditions.getAll(tokenId, options);\n }\n if (erc721) {\n return erc721.claimConditions.getAll(options);\n }\n if (erc20) {\n return erc20.claimConditions.getAll(options);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n // Checks that happen here:\n // 1. if the contract is based on ERC1155 contract => tokenId cannot be `undefined`\n // 2. if the contract is NOT based on ERC1155 => we have to have either an ERC721 or ERC20 contract\n enabled: erc1155 ? tokenId !== undefined : !!erc721 || !!erc20\n });\n}\n\n/**\n * Get the reasons why a specific wallet can't claim\n *\n * @example\n * ```javascript\n * const { data: claimIneligibilityReasons, isLoading, error } = useClaimIneligibilityReasons(contract, { walletAddress: \"{{wallet_address}}\" });\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC20, ERC721 or ERC1155 spec and implements the `claimConditions` extension.\n * @param eligibilityParams - the parameters for the eligibility check, see: {@link ClaimIneligibilityParams}\n * @param tokenId - the id of the token to fetch the claim conditions for (if the contract is an ERC1155 contract)\n * @returns a response object with the reasons for the claim ineligibility\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useclaimineligibilityreasons?utm_source=sdk | Documentation}\n */\nfunction useClaimIneligibilityReasons(contract, params, tokenId) {\n const contractAddress = contract?.getAddress();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.extensions.claimConditions.getClaimIneligibilityReasons(contractAddress, params, tokenId), () => {\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim ineligibility reasons\");\n return erc1155.claimConditions.getClaimIneligibilityReasons(tokenId, params.quantity, params.walletAddress);\n }\n if (erc721) {\n return erc721.claimConditions.getClaimIneligibilityReasons(params.quantity, params.walletAddress);\n }\n if (erc20) {\n return erc20.claimConditions.getClaimIneligibilityReasons(params.quantity, params.walletAddress);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n // Checks that happen here:\n // 1. if the contract is based on ERC1155 contract => tokenId cannot be `undefined`\n // 2. if the contract is NOT based on ERC1155 => we have to have either an ERC721 or ERC20 contract\n // 3. has a params object been passed?\n // 4. does params have an address in it?\n enabled: (erc1155 ? tokenId !== undefined : !!erc721 || !!erc20) && !!params && !!params.walletAddress\n });\n}\n\n/**\n * Get the active claim condition for a specific wallet\n *\n * @example\n * ```javascript\n * const { data: activeClaimConditionForWallet, isLoading, error } = useActiveClaimConditionForWallet(contract, \"{{wallet_address}}\");\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC20, ERC721 or ERC1155 spec and implements the `claimConditions` extension.\n * @param walletAddress - the wallet address to check the active claim condition for\n * @param tokenId - the id of the token to fetch the claim conditions for (if the contract is an ERC1155 contract)\n * @returns the active claim condition for the wallet address or null if there is no active claim condition\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useactiveclaimconditionforwallet?utm_source=sdk | Documentation}\n */\nfunction useActiveClaimConditionForWallet(contract, walletAddress, tokenId) {\n const sdk = useSDK();\n const contractAddress = contract?.getAddress();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.extensions.claimConditions.useActiveClaimConditionForWallet(contractAddress, walletAddress || \"_NO_WALLET_\", tokenId), async () => {\n // if we do not have a walletAddress just do the same logic as basic useClaimCondition\n if (!walletAddress) {\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n return erc1155.claimConditions.getActive(tokenId);\n }\n if (erc721) {\n return erc721.claimConditions.getActive();\n }\n if (erc20) {\n return erc20.claimConditions.getActive();\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }\n invariant(sdk, \"sdk is required\");\n let activeGeneralClaimCondition = null;\n let claimerProofForWallet = null;\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155\");\n const [cc, cp] = await Promise.all([erc1155.claimConditions.getActive(tokenId), erc1155.claimConditions.getClaimerProofs(tokenId, walletAddress)]);\n activeGeneralClaimCondition = cc;\n claimerProofForWallet = cp;\n }\n if (erc721) {\n const [cc, cp] = await Promise.all([erc721.claimConditions.getActive(), erc721.claimConditions.getClaimerProofs(walletAddress)]);\n activeGeneralClaimCondition = cc;\n claimerProofForWallet = cp;\n }\n if (erc20) {\n const [cc, cp] = await Promise.all([erc20.claimConditions.getActive(), erc20.claimConditions.getClaimerProofs(walletAddress)]);\n activeGeneralClaimCondition = cc;\n claimerProofForWallet = cp;\n }\n // if there is no active claim condition nothing matters, return null\n if (!activeGeneralClaimCondition) {\n return null;\n }\n\n // if there is no claimer proof then just fall back to the active general claim condition\n if (!claimerProofForWallet) {\n return activeGeneralClaimCondition;\n }\n const {\n maxClaimable,\n currencyAddress,\n price\n } = claimerProofForWallet;\n const currencyWithOverride = currencyAddress || activeGeneralClaimCondition.currencyAddress;\n const currencyMetadata = await fetchCurrencyMetadata(sdk.getProvider(), currencyWithOverride);\n const normalizedPrize = price ? price === \"unlimited\" ? constants.MaxUint256 : utils.parseUnits(price, currencyMetadata.decimals) : null;\n const priceWithOverride = normalizedPrize || activeGeneralClaimCondition.price;\n const maxClaimableWithOverride = maxClaimable || activeGeneralClaimCondition.maxClaimablePerWallet;\n const currencyValueWithOverride = await fetchCurrencyValue(sdk.getProvider(), currencyWithOverride, priceWithOverride);\n return {\n // inherit the entire claim condition\n ...activeGeneralClaimCondition,\n // overwrite all keys that could be changed based on overwrites\n maxClaimablePerWallet: maxClaimableWithOverride,\n price: priceWithOverride,\n currency: currencyWithOverride,\n currencyAddress: currencyWithOverride,\n currencyMetadata: currencyValueWithOverride\n };\n }, {\n // Checks that happen here:\n // 1. if the contract is based on ERC1155 contract => tokenId cannot be `undefined`\n // 2. if the contract is NOT based on ERC1155 => we have to have either an ERC721 or ERC20 contract\n enabled: erc1155 ? tokenId !== undefined : !!erc721 || !!erc20\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n\n/**\n * Set claim conditions\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: setClaimConditions,\n * isLoading,\n * error,\n * } = useSetClaimConditions(contract);\n *\n * if (error) {\n * console.error(\"failed to set claim conditions\", error);\n * }\n *\n * return (\n * setClaimConditions({ phases: [{ price: 2, maxClaimableSupply: 100 }] })}\n * >\n * Set Claim Conditions!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link DropContract}\n * @returns a mutation object that can be used to set claim conditions\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.usesetclaimconditions?utm_source=sdk | Documentation}\n */\nfunction useSetClaimConditions(contract, tokenId) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useMutation(async data => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n const {\n phases,\n reset = false\n } = data;\n invariant(phases, 'No \"phases\" provided');\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n return erc1155.claimConditions.set(tokenId, phases, reset);\n }\n if (erc721) {\n return erc721.claimConditions.set(phases, reset);\n }\n if (erc20) {\n return erc20.claimConditions.set(phases, reset);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n onSettled: () => {\n invalidateContractAndBalances(queryClient, contractAddress, activeChainId);\n }\n });\n}\n\n/**\n * Reset claim conditions\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: resetClaimConditions,\n * isLoading,\n * error,\n * } = useResetClaimConditions(contract);\n *\n * if (error) {\n * console.error(\"failed to reset claim conditions\", error);\n * }\n *\n * return (\n * \n * Reset Claim Conditions\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link DropContract}\n * @returns a mutation object that can be used to reset claim conditions\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n */\nfunction useResetClaimConditions(contract, tokenId) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc1155,\n erc721,\n erc20\n } = getErcs(contract);\n return useMutation(async () => {\n const cleanConditions = async conditions => {\n return conditions.map(c => ({\n ...c,\n price: c.currencyMetadata.displayValue\n }));\n };\n if (erc1155) {\n requiredParamInvariant(tokenId, \"tokenId is required for ERC1155 claim conditions\");\n const claimConditions = await erc1155.claimConditions.getAll(tokenId, {\n withAllowList: true\n });\n return erc1155.claimConditions.set(tokenId, await cleanConditions(claimConditions || []), true);\n }\n if (erc721) {\n const claimConditions = await erc721.claimConditions.getAll({\n withAllowList: true\n });\n return await erc721.claimConditions.set(await cleanConditions(claimConditions || []), true);\n }\n if (erc20) {\n const claimConditions = await erc20.claimConditions.getAll({\n withAllowList: true\n });\n return await erc20.claimConditions.set(await cleanConditions(claimConditions || []), true);\n }\n throw new Error(\"Contract must be ERC721, ERC1155 or ERC20\");\n }, {\n onSettled: () => {\n invalidateContractAndBalances(queryClient, contractAddress, activeChainId);\n }\n });\n}\n\n// primary sales\n\n/**\n * Get the primary sale recipient\n *\n * @example\n * ```jsx\n * const { data: primarySaleRecipient, isLoading, error } = usePrimarySalesRecipient(contract);\n * ```\n *\n * Use this to get the primary sales recipient of your {@link SmartContract}\n * @param contract - an instance of a {@link SmartContract}\n * @returns the wallet address of the primary sales recipient\n * @twfeature PrimarySale\n * @see {@link https://portal.thirdweb.com/react/react.useprimarysalerecipient?utm_source=sdk | Documentation}\n */\nfunction usePrimarySaleRecipient(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.sales.getRecipient(contractAddress), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"sales\" in contract && contract.sales, \"Contract does not support primarySale\");\n return contract.sales.getRecipient();\n }, {\n enabled: !!contract || !!contractAddress\n });\n}\n\n/**\n * Set the primary sale recipient\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: updatePrimarySalesRecipient,\n * isLoading,\n * error,\n * } = useUpdatePrimarySaleRecipient(contract);\n *\n * if (error) {\n * console.error(\"failed to update recipient\", error);\n * }\n *\n * return (\n * updatePrimarySalesRecipient({ newRecipient: \"{{wallet_address}}\" })}\n * >\n * Update Recipient\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to update the primary sales recipient\n * @twfeature PrimarySale\n * @see {@link https://portal.thirdweb.com/react/react.useupdateprimarysalerecipient?utm_source=sdk | Documentation}\n */\nfunction useUpdatePrimarySaleRecipient(contract) {\n const queryClient = useQueryClient();\n const contractAddress = contract?.getAddress();\n const activeChainId = useSDKChainId();\n return useMutation(newRecipient => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"sales\" in contract && contract.sales, \"Contract does not support primarySale\");\n return contract.sales.setRecipient(newRecipient);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n// end primary sales\n\n// royalties\n\n/**\n * Get the royalty recipient and fee\n *\n * @example\n * ```jsx\n * const { data: settings, isLoading, error } = useRoyaltySettings(contract);\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns an object containing recipient address and the royalty basis points\n * @twfeature Royalty\n * @see {@link https://portal.thirdweb.com/react/react.useroyaltysettings?utm_source=sdk | Documentation}\n */\nfunction useRoyaltySettings(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.royalties.getDefaultRoyaltyInfo(contractAddress), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"royalties\" in contract && contract.royalties, \"Contract does not support royalties\");\n return contract.royalties.getDefaultRoyaltyInfo();\n }, {\n enabled: !!contract || !!contractAddress\n });\n}\n\n/**\n * Set the royalty recipient and fee\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: updateRoyaltySettings,\n * isLoading,\n * error,\n * } = useUpdateRoyaltySettings(contract);\n *\n * if (error) {\n * console.error(\"failed to update royalty settings\", error);\n * }\n *\n * return (\n * updateRoyaltySettings({ updatePayload: { fee_recipient: \"{{wallet_address}}\", seller_fee_basis_points: 5_00 } })}\n * >\n * Update Royalty Settings\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to update the royalty settings\n * @twfeature Royalty\n * @see {@link https://portal.thirdweb.com/react/react.useupdateroyaltysettings?utm_source=sdk | Documentation}\n */\nfunction useUpdateRoyaltySettings(contract) {\n const queryClient = useQueryClient();\n const contractAddress = contract?.getAddress();\n const activeChainId = useSDKChainId();\n return useMutation(updatePayload => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"royalties\" in contract && contract.royalties, \"Contract does not support royalties\");\n return contract.royalties.setDefaultRoyaltyInfo(updatePayload);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n// end royalties\n\n// platformFees\n\n/**\n * Get the platform fee recipient and basis points\n *\n * @example\n * ```jsx\n * const { data: platformFees, isLoading, error } = usePlatformFees(contract);\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns an object containing the platform fee basis points and the fee recipient address\n * @twfeature PlatformFee\n * @see {@link https://portal.thirdweb.com/react/react.useplatformfees?utm_source=sdk | Documentation}\n */\nfunction usePlatformFees(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.platformFees.get(contractAddress), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"platformFees\" in contract && contract.platformFees, \"Contract does not support platformFees\");\n return contract.platformFees.get();\n }, {\n enabled: !!contract || !!contractAddress\n });\n}\n\n/**\n * Set the platform fee recipient and basis points\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: updatePlatformFees,\n * isLoading,\n * error,\n * } = useUpdatePlatformFees(contract);\n *\n * if (error) {\n * console.error(\"failed to update platform fees\", error);\n * }\n *\n * return (\n * updatePlatformFees({ updatePayload: { fee_recipient: \"{{wallet_address}}\", platform_fee_basis_points: 5_00 } })}\n * >\n * Update Platform fees\n * \n * );\n * };\n * ```\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to update the platform fees settings\n * @twfeature PlatformFee\n * @see {@link https://portal.thirdweb.com/react/react.useupdateplatformfees?utm_source=sdk | Documentation}\n */\nfunction useUpdatePlatformFees(contract) {\n const queryClient = useQueryClient();\n const contractAddress = contract?.getAddress();\n const activeChainId = useSDKChainId();\n return useMutation(updatePayload => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"platformFees\" in contract && contract.platformFees, \"Contract does not support platformFees\");\n return contract.platformFees.set(updatePayload);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n// end platformFees\n\n// metadata\n\n/**\n * Get the metadata of this contract\n *\n * @example\n * ```jsx\n * const { data: metadata, isLoading, error } = useMetadata(contract);\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a {@link CustomContractMetadata} object containing the metadata\n * @see {@link https://portal.thirdweb.com/react/react.usemetadata?utm_source=sdk | Documentation}\n */\nfunction useMetadata(contract\n// TODO figure out UseQueryResult type better\n) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.metadata.get(contractAddress), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"metadata\" in contract && contract.metadata, \"Contract does not support metadata\");\n return contract.metadata.get();\n }, {\n enabled: !!contract || !!contractAddress\n });\n}\n\n/**\n * Set the metadata of this contract\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: updateMetadata,\n * isLoading,\n * error,\n * } = useUpdateMetadata(contract);\n *\n * if (error) {\n * console.error(\"failed to update metadata\", error);\n * }\n *\n * return (\n * updateMetadata({\n * name: \"My Contract\",\n * description: \"This is my contract\"\n * })}\n * >\n * Update Contract Metadata\n * \n * );\n * };\n * ```\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to update the metadata\n * @see {@link https://portal.thirdweb.com/react/react.useupdatemetadata?utm_source=sdk | Documentation}\n */\nfunction useUpdateMetadata(contract\n// TODO figure out UseMutationResult type better\n) {\n const queryClient = useQueryClient();\n const contractAddress = contract?.getAddress();\n const activeChainId = useSDKChainId();\n return useMutation(updatePayload => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(\"metadata\" in contract && contract.metadata, \"Contract does not support metadata\");\n return contract.metadata.update(updatePayload);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n// end metadata\n\n// contract type\nasync function fetchContractType(contractAddress, sdk) {\n if (!contractAddress || !sdk) {\n return null;\n }\n try {\n return await sdk.resolveContractType(contractAddress);\n } catch (err) {\n console.error(\"failed to resolve contract type\", err);\n // this error can happen if the contract is a custom contract -> assume \"custom\"\n return \"custom\";\n }\n}\nfunction useContractType(contractAddress) {\n const sdk = useSDK();\n return useQueryWithNetwork(cacheKeys.contract.type(contractAddress), () => fetchContractType(contractAddress, sdk),\n // is immutable, so infinite stale time\n {\n cacheTime: Infinity,\n staleTime: Infinity,\n enabled: !!contractAddress && !!sdk\n });\n}\n\n/**\n * @internal\n */\nconst contractType = {\n cacheKey: (contractAddress, chainId) => createCacheKeyWithNetwork(cacheKeys.contract.type(contractAddress), chainId),\n useQuery: useContractType,\n fetchQuery: fetchContractType\n};\n\n// end contract type\n\n// contract compiler metadata\nfunction fetchCompilerMetadata(contractAddress, sdk) {\n if (!contractAddress || !sdk) {\n return null;\n }\n try {\n return sdk.getPublisher().fetchCompilerMetadataFromAddress(contractAddress);\n } catch (err) {\n // if we fail to get contract metadata just return null;\n return null;\n }\n}\nfunction useCompilerMetadata(contractAddress) {\n const sdk = useSDK();\n return useQueryWithNetwork(cacheKeys.contract.compilerMetadata(contractAddress), () => fetchCompilerMetadata(contractAddress, sdk),\n // is immutable, so infinite stale time\n {\n cacheTime: Infinity,\n staleTime: Infinity,\n enabled: !!contractAddress && !!sdk\n });\n}\n\n/**\n * @internal\n */\nconst compilerMetadata = {\n cacheKey: (contractAddress, chainId) => createCacheKeyWithNetwork(cacheKeys.contract.compilerMetadata(contractAddress), chainId),\n useQuery: useCompilerMetadata,\n fetchQuery: fetchCompilerMetadata\n};\n\n// end compiler metadata\n\n// useContract\n/**\n * Use this resolve a contract address to a smart contract instance.\n *\n * @example\n * ```javascript\n * const { contract, isLoading, error } = useContract(\"{{contract_address}}\");\n * ```\n *\n * @param contractAddress - the address of the deployed contract\n * @returns a response object that includes the contract once it is resolved\n * @see {@link https://portal.thirdweb.com/react/react.usecontract?utm_source=sdk | Documentation}\n * @public\n */\n/**\n * Use this resolve a contract address to a smart contract instance.\n *\n * @example\n * ```javascript\n * const { contract, isLoading, error } = useContract(\"{{contract_address}}\", \"nft-drop\");\n * ```\n *\n * @param contractAddress - the address of the deployed contract\n * @param _contractType - the type of the contract\n * @returns a response object that includes the contract once it is resolved\n * @see {@link https://portal.thirdweb.com/react/react.usecontract?utm_source=sdk | Documentation}\n * @public\n */\n/**\n * Use this resolve a contract address to a smart contract instance.\n *\n * @example\n * ```javascript\n * const { contract, isLoading, error } = useContract(\"{{contract_address}}\", ABI);\n * ```\n *\n * @param contractAddress - the address of the deployed contract\n * @param _abi - the ABI of the contract to use\n * @returns a response object that includes the contract once it is resolved\n * @see {@link https://portal.thirdweb.com/react/react.usecontract?utm_source=sdk | Documentation}\n * @public\n */\nfunction useContract(contractAddress, contractTypeOrABI) {\n const sdk = useSDK();\n const queryClient = useQueryClient();\n const activeChainId = useSDKChainId();\n const wallet = useAddress();\n const walletChainId = useChainId();\n\n // it's there because we put it there.\n const sdkTimestamp = sdk?._constructedAt;\n const contractQuery = useQueryWithNetwork(\n // need to add the wallet and walletChainId into the query key so this gets refreshed when the wallet / chain changes!\n neverPersist([\"contract-instance\", contractAddress, {\n wallet,\n walletChainId,\n sdkTimestamp\n }]), async () => {\n requiredParamInvariant(contractAddress, \"contract address is required\");\n invariant(sdk, \"SDK not initialized\");\n invariant(activeChainId, \"active chain id is required\");\n\n // if we don't have a contractType or ABI then we will have to resolve it regardless\n // we also handle it being \"custom\" just in case...\n if (!contractTypeOrABI || contractTypeOrABI === \"custom\") {\n // First check local ABI cache\n const cachedAbi = getCachedAbiForContract(contractAddress);\n if (cachedAbi) {\n return sdk.getContract(contractAddress, cachedAbi);\n }\n\n // we just resolve here (sdk does this internally anyway)\n const resolvedContractType = await queryClient.fetchQuery(contractType.cacheKey(contractAddress, activeChainId), () => contractType.fetchQuery(contractAddress, sdk), {\n cacheTime: Infinity,\n staleTime: Infinity\n });\n let abi;\n if (resolvedContractType === \"custom\") {\n abi = (await queryClient.fetchQuery(compilerMetadata.cacheKey(contractAddress, activeChainId), () => compilerMetadata.fetchQuery(contractAddress, sdk), {\n cacheTime: Infinity,\n staleTime: Infinity,\n retry: 0\n }))?.abi;\n }\n invariant(resolvedContractType, \"failed to resolve contract type\");\n // just let the sdk handle the rest\n // if we have resolved an ABI for a custom contract, use that otherwise use contract type\n return sdk.getContract(contractAddress, abi || resolvedContractType);\n }\n // every other case can just be handled by the sdk directly\n return sdk.getContract(contractAddress, contractTypeOrABI);\n }, {\n // keep the previous value around while we fetch the new one\n // this is important because otherwise it can lead to flickering (because we need to re-fetch the contract when sdk things change)\n keepPreviousData: true,\n // is immutable, so infinite cache & stale time (for a given key)\n cacheTime: Infinity,\n staleTime: Infinity,\n enabled: !!contractAddress && !!sdk && !!activeChainId,\n // never retry\n retry: 0\n });\n\n // const previousCountract = usePrevious(contractQuery.data);\n\n return {\n ...contractQuery,\n data: contractQuery.data,\n contract: contractQuery.data\n };\n}\n\n/**\n * Get the metadata of this contract\n *\n * @example\n * ```javascript\n * const { data: contractMetadata, isLoading } = useContractMetadata(contract);\n * ```\n *\n * @param contract - the {@link ValidContractInstance} instance of the contract to get the metadata for\n * @returns a response object that includes the contract metadata of the deployed contract\n * @twfeature ContractMetadata\n */\nfunction useContractMetadata(contract) {\n return useQueryWithNetwork(cacheKeys.contract.metadata(contract?.getAddress()), async () => {\n requiredParamInvariant(contract, \"contract is required\");\n return await contract.metadata.get(); // FIXME types\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Update the metadata of this contract\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: updateContractMetadata,\n * isLoading,\n * error,\n * } = useContractMetadataUpdate(contract);\n *\n * if (error) {\n * console.error(\"failed to update contract metadata\", error);\n * }\n *\n * return (\n * updateContractMetadata({ name: \"New name\", description: \"New description\" })}\n * >\n * Update contract metadata\n * \n * );\n * };\n * ```\n *\n * @param contract - the {@link ValidContractInstance} instance of the contract to get the metadata for\n * @returns a response object that includes the contract metadata of the deployed contract\n * @twfeature ContractMetadata\n */\nfunction useContractMetadataUpdate(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async metadata => {\n requiredParamInvariant(contract, \"contract must be defined\");\n return contract.metadata.update(metadata);\n }, {\n onSettled: () => queryClient.invalidateQueries(createCacheKeyWithNetwork(createContractCacheKey(contractAddress), activeChainId))\n });\n}\n\n/**\n * CONTRACT EVENTS\n */\n\n/**\n * Get or subscribe to contract events\n *\n * @example\n * ```javascript\n * const { data: contractEvents, isLoading } = useContractEvents(contract);\n * ```\n *\n * @param contract - the {@link ValidContractInstance} instance of the contract to listen to events for\n * @param eventName - the name of the event to query for (omit this or pass `undefined` to query for all events)\n * @param options - options includes the filters ({@link QueryAllEvents}) for the query as well as if you want to subscribe to real-time updates (default: true)\n * @returns a response object that includes the contract events\n * @see {@link https://portal.thirdweb.com/react/react.usecontractevents?utm_source=sdk | Documentation}\n */\nfunction useContractEvents(contract, eventName) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n subscribe: true\n };\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const activeChainId = useSDKChainId();\n const cacheKey = useMemo(() => createCacheKeyWithNetwork(eventName ? cacheKeys.contract.events.getEvents(contractAddress, eventName) : cacheKeys.contract.events.getAllEvents(contractAddress), activeChainId), [activeChainId, contractAddress, eventName]);\n useEffect(() => {\n // if we're not subscribing or query is not enabled yet we can early exit\n if (!options.subscribe || !contract || !contract) {\n return;\n }\n const cleanupListener = contract.events.listenToAllEvents(contractEvent => {\n // if we have a specific event name we are looking for we can early exist if it doesn't match\n if (eventName && eventName !== contractEvent.eventName) {\n return;\n }\n // insert new event to the front of the array (no duplicates, though)\n queryClient.setQueryData(cacheKey, oldData => {\n if (!oldData) {\n return [contractEvent];\n }\n const eventIsNotAlreadyInEventsList = oldData.findIndex(e => e.transaction.transactionHash === contractEvent.transaction.transactionHash && e.transaction.logIndex === contractEvent.transaction.logIndex) === -1;\n if (eventIsNotAlreadyInEventsList) {\n return [contractEvent, ...oldData];\n }\n return oldData;\n });\n });\n // cleanup listener on unmount\n return cleanupListener;\n }, [options.subscribe, cacheKey, contract, queryClient, eventName]);\n return useQuery(cacheKey, () => {\n requiredParamInvariant(contract, \"contract must be defined\");\n if (eventName) {\n return contract.events.getEvents(eventName, options.queryFilter);\n }\n return contract.events.getAllEvents(options.queryFilter);\n }, {\n enabled: !!contract,\n // we do not need to re-fetch if we're subscribing\n refetchOnWindowFocus: !options.subscribe,\n refetchOnMount: true,\n refetchOnReconnect: true\n });\n}\n\n/**\n * Get data from a contract read-function call\n *\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * const { data, isLoading, error } = useContractRead(contract, \"functionName\", ...args);\n *```\n *\n * @param contract - the contract instance of the contract to call a function on\n * @param functionName - the name of the function to call\n * @param args - The arguments to pass to the function (if any), with optional call arguments as the last parameter\n * @returns a response object that includes the data returned by the function call\n * @see {@link https://portal.thirdweb.com/react/react.usecontractread?utm_source=sdk | Documentation}\n */\nfunction useContractRead(contract, functionName, args, overrides) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.call(contractAddress, functionName, args, overrides), () => {\n requiredParamInvariant(contract, \"contract must be defined\");\n requiredParamInvariant(functionName, \"function name must be provided\");\n return contract.call(functionName, args, overrides);\n }, {\n enabled: !!contract && !!functionName\n });\n}\n\n/**\n * Mke a write call to your contract\n *\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * const { mutate: myFunction, isLoading, error } = useContractWrite(contract, \"myFunction\");\n *\n * // the function can be called as follows:\n * // myFunction([\"param 1\", \"param 2\", ...])\n *```\n *\n * @param contract - the contract instance of the contract to call a function on\n * @param functionName - the name of the function to call\n * @returns a response object that includes the write function to call\n * @see {@link https://portal.thirdweb.com/react/react.usecontractwrite?utm_source=sdk | Documentation}\n */\nfunction useContractWrite(contract, functionName) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async _ref => {\n let {\n args,\n overrides\n } = _ref;\n requiredParamInvariant(contract, \"contract must be defined\");\n requiredParamInvariant(functionName, \"function name must be provided\");\n return contract.call(functionName, args, overrides);\n }, {\n onSettled: () => queryClient.invalidateQueries(createCacheKeyWithNetwork(createContractCacheKey(contractAddress), activeChainId))\n });\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get all unclaimed NFTs\n *\n * @example\n * ```javascript\n * const { data: unclaimedNfts, isLoading, error } = useUnclaimedNFTs(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC721 spec (NFT drop, Signature Drop, or any custom contract that extends the ERC721 spec)\n * @param queryParams - query params to pass to the query for the sake of pagination\n * @returns a response object that includes an array of NFTs that are unclaimed\n * @twfeature ERC721LazyMintable\n * @see {@link https://portal.thirdweb.com/react/react.useunclaimednfts?utm_source=sdk | Documentation}\n */\nfunction useUnclaimedNFTs(contract, queryParams) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.nft.drop.getAllUnclaimed(contractAddress, queryParams), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n // TODO make this work for custom contracts (needs ABI change)\n invariant(contract.getAllUnclaimed, \"Contract instance does not support getAllUnclaimed\");\n return contract.getAllUnclaimed(queryParams);\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get all claimed NFTs\n *\n * @remarks Equivalent to using {@link useNFTs}.\n *\n * @example\n * ```javascript\n * const { data: claimedNFTs, isLoading, error } = useClaimedNFTs(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a contract that extends the ERC721 spec (NFT drop, Signature Drop, or any custom contract that extends the ERC721 spec)\n * @param queryParams - query params to pass to the query for the sake of pagination\n * @returns a response object that includes an array of NFTs that are claimed\n * @twfeature ERC721LazyMintable\n * @see {@link https://portal.thirdweb.com/react/react.useclaimednfts?utm_source=sdk | Documentation}\n */\nfunction useClaimedNFTs(contract, queryParams) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.nft.drop.getAllClaimed(contractAddress, queryParams), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n // TODO make this work for custom contracts (needs ABI change)\n invariant(contract.getAllClaimed, \"Contract instance does not support getAllClaimed\");\n return contract.getAllClaimed(queryParams);\n }, {\n enabled: !!contract\n });\n}\n\n/**\n *\n * @param contract - an instance of a contract that extends the ERC721 spec (NFT drop, Signature Drop, or any custom contract that extends the ERC721 spec)\n * @returns a response object that includes the number of NFTs that are unclaimed\n * @twfeature ERC721LazyMintable\n * @see {@link https://portal.thirdweb.com/react/react.useunclaimednftsupply?utm_source=sdk | Documentation}\n */\nfunction useUnclaimedNFTSupply(contract) {\n const contractAddress = contract?.getAddress();\n const {\n erc721\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.drop.totalUnclaimedSupply(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc721) {\n invariant(erc721, \"No ERC721 Contract instance provided\");\n return erc721.totalUnclaimedSupply();\n }\n invariant(false, \"Contract is not an instance of ERC721\");\n }, {\n enabled: !!erc721\n });\n}\n\n/**\n * Get the total number of claimed NFTs\n *\n * @param contract - an instance of a contract that extends the ERC721 spec (NFT drop, Signature Drop, or any custom contract that extends the ERC721 spec)\n * @returns a response object that includes the number of NFTs that are claimed\n * @twfeature ERC721LazyMintable\n * @see {@link https://portal.thirdweb.com/react/react.useclaimednftsupply?utm_source=sdk | Documentation}\n */\nfunction useClaimedNFTSupply(contract) {\n const contractAddress = contract?.getAddress();\n const {\n erc721\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.drop.totalClaimedSupply(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc721) {\n return erc721.totalClaimedSupply();\n }\n invariant(false, \"Contract is not an instance of ERC721\");\n }, {\n enabled: !!erc721\n });\n}\n\n/**\n * Get all unrevealed batches\n *\n * @param contract - an instance of a {@link RevealableContract}\n * @returns a response object that gets the batches to still be revealed\n * @twfeature ERC721Revealable | ERC1155Revealable\n * @see {@link https://portal.thirdweb.com/react/react.usebatchestoreveal?utm_source=sdk | Documentation}\n */\nfunction useBatchesToReveal(contract) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.drop.revealer.getBatchesToReveal(contractAddress), () => {\n if (erc721) {\n return erc721.revealer.getBatchesToReveal();\n }\n if (erc1155) {\n return erc1155.revealer.getBatchesToReveal();\n }\n invariant(false, \"Contract instance does not support getBatchesToReveal\");\n }, {\n enabled: !!erc721 || !!erc1155\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n/**\n * Claim an NFT to a specific wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: claimNFT,\n * isLoading,\n * error,\n * } = useClaimNFT(contract);\n *\n * if (error) {\n * console.error(\"failed to claim nft\", error);\n * }\n *\n * return (\n * claimNFT({ to: \"{{wallet_address}}\", quantity: 1 })}\n * >\n * Claim NFT!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link DropContract}\n * @returns a mutation object that can be used to claim a NFT to the wallet specificed in the params\n * @twfeature ERC721Claimable | ERC1155Claimable | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useclaimnft?utm_source=sdk | Documentation}\n */\nfunction useClaimNFT(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useMutation(async data => {\n requiredParamInvariant(contract, \"contract is undefined\");\n if (erc1155) {\n requiredParamInvariant(data.tokenId, \"tokenId not provided\");\n if (!data.to) {\n return await erc1155.claim(data.tokenId, data.quantity, data.options);\n }\n return await erc1155.claimTo(data.to, data.tokenId, data.quantity, data.options);\n }\n if (erc721) {\n if (!data.to) {\n return await erc721.claim(data.quantity, data.options);\n }\n return await erc721.claimTo(data.to, data.quantity, data.options);\n }\n invariant(false, \"contract is not an Erc721 or Erc1155\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Lazy mint NFTs\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: lazyMint,\n * isLoading,\n * error,\n * } = useLazyMint(contract);\n *\n * if (error) {\n * console.error(\"failed to lazy mint NFT\", error);\n * }\n *\n * return (\n * lazyMint({ metadatas: [{ name: \"My NFT!\"}] })}\n * >\n * Lazy mint NFT!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link NFTContract} with the drop extension\n * @param onProgress - an optional callback that will be called with the progress of the upload\n * @returns a mutation object that can be used to lazy mint a batch of NFTs\n * @twfeature ERC721LazyMintable | ERC1155LazyMintable\n * @see {@link https://portal.thirdweb.com/react/react.uselazymint?utm_source=sdk | Documentation}\n */\nfunction useLazyMint(contract, onProgress) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useMutation(async data => {\n requiredParamInvariant(contract, \"contract is undefined\");\n let options;\n if (onProgress) {\n options = {\n onProgress\n };\n }\n if (erc721) {\n return erc721.lazyMint(data.metadatas, options);\n }\n if (erc1155) {\n return erc1155.lazyMint(data.metadatas, options);\n }\n invariant(false, \"contract is not an Erc721 or Erc1155\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Lazy mint NFTs with delayed reveal\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: delayedRevealLazyMint,\n * isLoading,\n * error,\n * } = useDelayedRevealLazyMint(contract);\n *\n * if (error) {\n * console.error(\"failed to lazy mint NFT\", error);\n * }\n *\n * return (\n * delayedRevealLazyMint({ metadatas: [{ name: \"My NFT!\"}] })}\n * >\n * Delayed Reveal Lazy mint NFT!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link DropContract}\n * @param onProgress - an optional callback that will be called with the progress of the upload\n * @returns a mutation object that can be used to lazy mint a batch of NFTs\n * @twfeature ERC721Revealable | ERC1155Revealable\n * @see {@link https://portal.thirdweb.com/react/react.usedelayedreveallazymint?utm_source=sdk | Documentation}\n */\nfunction useDelayedRevealLazyMint(contract, onProgress) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async data => {\n requiredParamInvariant(contract, \"contract is undefined\");\n let options;\n if (onProgress) {\n options = {\n onProgress\n };\n }\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n if (erc721) {\n return await erc721.revealer.createDelayedRevealBatch(data.placeholder, data.metadatas, data.password, options);\n }\n if (erc1155) {\n return await erc1155.revealer.createDelayedRevealBatch(data.placeholder, data.metadatas, data.password, options);\n }\n invariant(false, \"contract is not an Erc721 or Erc1155\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Reveal a batch of delayed reveal NFTs\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: revealLazyMint,\n * isLoading,\n * error,\n * } = useRevealLazyMint(contract);\n *\n * if (error) {\n * console.error(\"failed to reveal batch\", error);\n * }\n *\n * return (\n * revealLazyMint({ batchId: \"0\", password: \"my-password\" })}\n * >\n * Reveal batch!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link RevealableContract}\n * @returns a mutation object that can be used to reveal a batch of delayed reveal NFTs\n * @twfeature ERC721Revealable | ERC1155Revealable\n * @see {@link https://portal.thirdweb.com/react/react.usereveallazymint?utm_source=sdk | Documentation}\n */\nfunction useRevealLazyMint(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async data => {\n requiredParamInvariant(contract, \"contract is undefined\");\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n if (erc721) {\n return await erc721.revealer.reveal(data.batchId, data.password);\n }\n if (erc1155) {\n return await erc1155.revealer.reveal(data.batchId, data.password);\n }\n invariant(false, \"contract is not an Erc721 or Erc1155\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get a listing\n *\n * @example\n * ```javascript\n * const listingId = 0; // the listing id to check\n * const { data: listing, isLoading, error } = useListing(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param listingId - the listing id to check\n * @returns a response object that includes the desired listing\n * @see {@link https://portal.thirdweb.com/react/react.uselisting?utm_source=sdk | Documentation}\n */\nfunction useListing(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.getListing(contractAddress, listingId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n return contract.getListing(listingId);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get a direct listing\n *\n * @example\n * ```javascript\n * const listingId = 0; // the listing id to check\n * const { data: directListing, isLoading, error } = useListing(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param listingId - the listing id to check\n * @returns a response object that includes the desired direct listing\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usedirectlisting?utm_source=sdk | Documentation}\n */\nfunction useDirectListing(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.directListings.getListing(contractAddress, listingId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n return contract.directListings.getListing(listingId);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get an english auction\n *\n * @example\n * ```javascript\n * const auctionId = 0; // the listing id to check\n * const { data: englishAuction, isLoading, error } = useEnglishAuction(contract, auctionId);\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param auctionId - the auction id to check\n * @returns a response object that includes the desired english auction\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.useenglishauctions?utm_source=sdk | Documentation}\n */\nfunction useEnglishAuction(contract, auctionId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.englishAuctions.getAuction(contractAddress, auctionId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(auctionId, \"No auction id provided\");\n return contract.englishAuctions.getAuction(auctionId);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get all listings\n *\n * @example\n * ```javascript\n * const { data: listings, isLoading, error } = useListings(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of listings\n * @see {@link https://portal.thirdweb.com/react/react.uselistings?utm_source=sdk | Documentation}\n */\nfunction useListings(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.getAllListings(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.getAllListings(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get all direct listings\n *\n * @example\n * ```javascript\n * const { data: directListings, isLoading, error } = useDirectListings(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of direct listings\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usedirectlistings?utm_source=sdk | Documentation}\n */\nfunction useDirectListings(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.directListings.getAll(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.directListings.getAll(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get all valid direct listings\n *\n * @example\n * ```javascript\n * const { data: validDirectListings, isLoading, error } = useValidDirectListings(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of direct listings\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usevaliddirectlistings?utm_source=sdk | Documentation}\n */\nfunction useValidDirectListings(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.directListings.getAllValid(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.directListings.getAllValid(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get all english auctions\n *\n * @example\n * ```javascript\n * const { data: englishAuctions, isLoading, error } = useEnglishAuctions(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of english auctions\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.useenglishauctions?utm_source=sdk | Documentation}\n */\nfunction useEnglishAuctions(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.englishAuctions.getAll(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.englishAuctions.getAll(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get all valid english auctions\n *\n * @example\n * ```javascript\n * const { data: validEnglishAuctions, isLoading, error } = useValidEnglishAuctions(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of english auctions\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.usevalidenglishauctions?utm_source=sdk | Documentation}\n */\nfunction useValidEnglishAuctions(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.englishAuctions.getAllValid(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.englishAuctions.getAllValid(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get the total count of listings\n *\n * @example\n * ```javascript\n * const { data: listingsCount, isLoading, error } = useListingsCount(contract);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @returns a response object that includes the listing count\n * @see {@link https://portal.thirdweb.com/react/react.uselistingscount?utm_source=sdk | Documentation}\n */\nfunction useListingsCount(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.getTotalCount(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.getTotalCount();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get the total count of direct listings\n *\n * @example\n * ```javascript\n * const { data: directListingsCount, isLoading, error } = useDirectListingsCount(contract);\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @returns a response object that includes the direct listings count\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usedirectlistingscount?utm_source=sdk | Documentation}\n */\nfunction useDirectListingsCount(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.directListings.getTotalCount(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.directListings.getTotalCount();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get the total count of english auctions\n *\n * @example\n * ```javascript\n * const { data: englishAuctionsCount, isLoading, error } = useEnglishAuctionsCount(contract);\n * ```\n *\n * @param contract - an instance of a marketplace v3 contract\n * @returns a response object that includes the direct english actions count\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.useenglishauctionscount?utm_source=sdk | Documentation}\n */\nfunction useEnglishAuctionsCount(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.englishAuctions.getTotalCount(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.englishAuctions.getTotalCount();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get all active listings\n *\n * @example\n * ```javascript\n * const { data: listings, isLoading, error } = useActiveListings(contract, { seller: \"{{wallet_address}}\", tokenContract: \"0x...\", tokenId: 1, start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param filter - filter to pass to the query for the sake of pagination & filtering\n * @returns a response object that includes an array of listings\n * @see {@link https://portal.thirdweb.com/react/react.useactivelistings?utm_source=sdk | Documentation}\n */\nfunction useActiveListings(contract, filter) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.getActiveListings(contractAddress, filter), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return contract.getActiveListings(filter);\n }, {\n enabled: !!contract,\n keepPreviousData: true\n });\n}\n\n/**\n * Get the winning bid for an auction\n *\n * @example\n * ```javascript\n * const listingId = 0;\n * const { data: winningBid, isLoading, error } = useWinningBid(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param listingId - the listing id to check\n * @returns a response object that includes the {@link Offer} that is winning the auction\n * @see {@link https://portal.thirdweb.com/react/react.usewinningbid?utm_source=sdk | Documentation}\n */\nfunction useWinningBid(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.auction.getWinningBid(contractAddress, listingId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n invariant(contract.auction.getWinningBid, \"contract does not support auction.getWinningBid\");\n return contract.auction.getWinningBid(listingId);\n }, {\n enabled: !!contract && listingId !== undefined\n });\n}\n\n/**\n * Get the winning bid for an english auction\n *\n * @example\n * ```javascript\n * const listingId = 0;\n * const { data: winningBid, isLoading, error } = useWinningBid(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param auctionId - the auction id to check\n * @returns a response object that includes the {@link Bid} that is winning the auction\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.useenglishauctionwinningbid?utm_source=sdk | Documentation}\n */\nfunction useEnglishAuctionWinningBid(contract, auctionId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.englishAuctions.getWinningBid(contractAddress, auctionId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(auctionId, \"No auction id provided\");\n invariant(contract.englishAuctions.getWinningBid, \"contract does not support englishAuctions.getWinningBid\");\n return contract.englishAuctions.getWinningBid(auctionId);\n }, {\n enabled: !!contract && auctionId !== undefined\n });\n}\n\n/**\n * Get the winner of an english auction\n *\n * @example\n * ```javascript\n * const listingId = 0;\n * const { data: auctionWinner, isLoading, error } = useAuctionWinner(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param listingId - the listing id to check\n * @returns a response object that includes the address of the winner of the auction or undefined if there is no winner yet\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.useauctionwinner?utm_source=sdk | Documentation}\n */\nfunction useAuctionWinner(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.auction.getWinner(contractAddress, listingId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n const isV1 = isMarketplaceV1(contract);\n if (isV1) {\n invariant(contract.auction.getWinner, \"contract does not support auction.getWinner\");\n return contract.auction.getWinner(listingId);\n } else if (!isV1) {\n invariant(contract.englishAuctions.getWinner, \"contract does not support englishAuctions.getWinner\");\n return contract.englishAuctions.getWinner(listingId);\n }\n invariant(false, \"Contract is not a valid marketplace contract\");\n }, {\n enabled: !!contract && listingId !== undefined\n });\n}\n\n/**\n * Get the bid buffer for an english auction\n *\n * @example\n * ```javascript\n * const { data: bidBuffer, isLoading, error } = useBidBuffer(contract);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param listingId - the listing id to check (only necessary for marketplace v3)\n * @returns a response object that includes an array of listings\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.usebidbuffer?utm_source=sdk | Documentation}\n */\nfunction useBidBuffer(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.auction.getBidBufferBps(contractAddress, listingId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n const isV1 = isMarketplaceV1(contract);\n if (isV1) {\n invariant(contract.getBidBufferBps, \"contract does not support getBidBufferBps\");\n return contract.getBidBufferBps();\n } else if (!isV1) {\n invariant(contract.englishAuctions.getBidBufferBps, \"contract does not support englishAuctions.getBidBufferBps\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n return BigNumber.from(contract.englishAuctions.getBidBufferBps(listingId));\n }\n invariant(false, \"Contract is not a valid marketplace contract\");\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get the minimum next bid for an english auction\n *\n * @example\n * ```javascript\n * const listingId = 0;\n * const { data: minimumNextBid, isLoading, error } = useMinimumNextBid(contract, listingId);\n * ```\n *\n * @param contract - an instance of a marketplace contract\n * @param listingId - the listing id to check\n * @returns a response object that includes the minimum next bid for the auction listing\n * @twfeature EnglishAucton\n * @see {@link https://portal.thirdweb.com/react/react.useminimumnextbid?utm_source=sdk | Documentation}\n */\nfunction useMinimumNextBid(contract, listingId) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.marketplace.auction.getMinimumNextBid(contractAddress, listingId), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n const isV1 = isMarketplaceV1(contract);\n if (isV1) {\n invariant(contract.auction.getMinimumNextBid, \"contract does not support auction.getMinimumNextBid\");\n return contract.auction.getMinimumNextBid(listingId);\n } else if (!isV1) {\n invariant(contract.englishAuctions.getMinimumNextBid, \"contract does not support englishAuctions.getMinimumNextBid\");\n return contract.englishAuctions.getMinimumNextBid(listingId);\n }\n invariant(false, \"Contract is not a valid marketplace contract\");\n }, {\n enabled: !!contract && listingId !== undefined\n });\n}\n\n/**\n * Get all the offers for a listing\n *\n * @remarks Fetch all the offers for a specified direct or auction listing.\n * @example\n * ```javascript\n * const listingId = 0;\n * const { data: offers, isLoading, error } = useOffers(contract, listingId);\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @param listingId - the id of the listing to fetch offers for\n * @see {@link https://portal.thirdweb.com/react/react.useoffers?utm_source=sdk | Documentation}\n */\nfunction useOffers(contract, listingId) {\n const result = useContractEvents(contract, \"NewOffer\");\n return {\n ...result,\n data: result.data?.filter(ev => ev.data.listingId.eq(listingId))?.map(ev => ev.data)\n };\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n\n/**\n * Create a new direct listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: createDirectListing,\n * isLoading,\n * error,\n * } = useCreateDirectListing(contract);\n *\n * if (error) {\n * console.error(\"failed to create direct listing\", error);\n * }\n *\n * return (\n * createDirectListing(directListingData)}\n * >\n * Create Direct Listing!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to create a new direct listing\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usecreatedirectlisting?utm_source=sdk | Documentation}\n */\nfunction useCreateDirectListing(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"No wallet connected, cannot create listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n const isV1 = isMarketplaceV1(contract);\n if (isV1) {\n invariant(contract.direct.createListing, \"contract does not support direct.createListing\");\n return await contract.direct.createListing(data);\n } else if (!isV1) {\n invariant(contract.directListings.createListing, \"contract does not support directListings.createListing\");\n return await contract.directListings.createListing(data);\n }\n invariant(false, \"Contract is not a valid marketplace contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Create a new english auction\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: createAuctionListing,\n * isLoading,\n * error,\n * } = useCreateAuctionListing(contract);\n *\n * if (error) {\n * console.error(\"failed to create auction listing\", error);\n * }\n *\n * return (\n * createAuctionListing(auctionListingData)}\n * >\n * Create Auction Listing!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to create a new auction listing\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.usecreateauctionlisting?utm_source=sdk | Documentation}\n */\nfunction useCreateAuctionListing(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot create listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n const isV1 = isMarketplaceV1(contract);\n if (isV1) {\n invariant(contract.auction.createListing, \"contract does not support auction.createListing\");\n return await contract.auction.createListing(data);\n } else if (!isV1) {\n invariant(contract.englishAuctions.createAuction, \"contract does not support englishAuctions.createAuction\");\n return await contract.englishAuctions.createAuction(data);\n }\n invariant(false, \"Contract is not a valid marketplace contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Cancel a listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: cancelListing,\n * isLoading,\n * error,\n * } = useCancelListing(contract);\n *\n * if (error) {\n * console.error(\"failed to cancel auction listing\", error);\n * }\n *\n * return (\n * \n * Cancel Auction Listing!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to cancel a listing\n * @see {@link https://portal.thirdweb.com/react/react.usecancellisting?utm_source=sdk | Documentation}\n */\nfunction useCancelListing(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot create listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (data.type === ListingType.Auction) {\n invariant(contract.auction.cancelListing, \"contract does not support auction.cancelListing\");\n return await contract.auction.cancelListing(data.id);\n } else {\n invariant(contract.direct.cancelListing, \"contract does not support direct.cancelListing\");\n return await contract.direct.cancelListing(data.id);\n }\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Cancel a direct listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: cancelDirectListing,\n * isLoading,\n * error,\n * } = useCancelDirectListing(contract);\n *\n * if (error) {\n * console.error(\"failed to cancel direct listing\", error);\n * }\n *\n * return (\n * \n * Cancel Direct Listing\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace v3 contract\n * @returns a mutation object that can be used to cancel a direct listing\n * @twfeature DirectListings\n * @see {@link https://portal.thirdweb.com/react/react.usecanceldirectlisting?utm_source=sdk | Documentation}\n */\nfunction useCancelDirectListing(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async listingId => {\n invariant(walletAddress, \"no wallet connected, cannot create listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(listingId, \"No listing id provided\");\n invariant(contract.directListings.cancelListing, \"contract does not support directListings.cancelListing\");\n return await contract.directListings.cancelListing(listingId);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Cancel an english auction\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: cancelEnglishAuction,\n * isLoading,\n * error,\n * } = useCancelEnglishAuction(contract);\n *\n * if (error) {\n * console.error(\"failed to cancel english auction\", error);\n * }\n *\n * return (\n * \n * Cancel English Auction\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace v3 contract\n * @returns a mutation object that can be used to cancel an english auction\n * @twfeature EnglishAuctions\n * @see {@link https://portal.thirdweb.com/react/react.usecancelenglishauction?utm_source=sdk | Documentation}\n */\nfunction useCancelEnglishAuction(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async auctionId => {\n invariant(walletAddress, \"no wallet connected, cannot create listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n requiredParamInvariant(auctionId, \"No auction id provided\");\n invariant(contract.englishAuctions.cancelAuction, \"contract does not support englishAuctions.cancelAuction\");\n return await contract.englishAuctions.cancelAuction(auctionId);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Make a bid on an auction listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: makeBid,\n * isLoading,\n * error,\n * } = useMakeBid(contract);\n *\n * if (error) {\n * console.error(\"failed to make a bid\", error);\n * }\n *\n * return (\n * makeBid({ listingId: 1, bid: 2 })}\n * >\n * Bid!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to make a bid on an auction listing\n * @see {@link https://portal.thirdweb.com/react/react.usemakebid?utm_source=sdk | Documentation}\n */\nfunction useMakeBid(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot make bid\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.auction.makeBid, \"contract does not support auction.makeBid\");\n return await contract.auction.makeBid(data.listingId, data.bid);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Nake an offer on a direct or auction listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: makeOffer,\n * isLoading,\n * error,\n * } = useMakeOffer(contract);\n *\n * if (error) {\n * console.error(\"failed to make a bid\", error);\n * }\n *\n * return (\n * makeOffer({ listingId: 1, pricePerToken: 0.5, quantity: 1 })}\n * >\n * Bid!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to make a bid on an auction listing\n * @see {@link https://portal.thirdweb.com/react/react.usemakeoffer?utm_source=sdk | Documentation}\n */\nfunction useMakeOffer(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot make bid\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n return await contract.makeOffer(data.listingId, data.pricePerToken, data.quantity);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Accept a specific offer on a direct listing\n *\n * @remarks will accept the latest offer by the given offeror.\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: acceptOffer,\n * isLoading,\n * error,\n * } = useAcceptDirectListingOffer(contract);\n *\n * if (error) {\n * console.error(\"failed to accept offer\", error);\n * }\n *\n * return (\n * acceptOffer({ listingId: 1, addressOfOfferor: \"{{wallet_address}}\" })}\n * >\n * Accept offer\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to accept an offer on a direct listing\n * @see {@link https://portal.thirdweb.com/react/react.useacceptdirectlistingoffer?utm_source=sdk | Documentation}\n */\nfunction useAcceptDirectListingOffer(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot make bid\");\n requiredParamInvariant(contract?.direct, \"No Direct instance provided\");\n return await contract.direct.acceptOffer(data.listingId, data.addressOfOfferor);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Execute an auction sale. Can only be executed once the auction has ended and the auction has a winning bid.\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: executeAuctionSale,\n * isLoading,\n * error,\n * } = useExecuteAuctionSale(contract);\n *\n * if (error) {\n * console.error(\"failed to execute sale\", error);\n * }\n *\n * return (\n * executeAuctionSale({ listingId: 1 })}\n * >\n * Execute sale\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to accept an offer on a direct listing\n * @see {@link https://portal.thirdweb.com/react/react.useexecuteauctionsale?utm_source=sdk | Documentation}\n */\nfunction useExecuteAuctionSale(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot make bid\");\n requiredParamInvariant(contract?.auction, \"No Auction marketplace instance provided\");\n return await contract.auction.executeSale(data.listingId);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Buy out an auction listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: buyNow,\n * isLoading,\n * error,\n * } = useBuyNow(contract);\n *\n * if (error) {\n * console.error(\"failed to buyout listing\", error);\n * }\n *\n * return (\n * buyNow({listingId: 1, type: ListingType.Auction})}\n * >\n * Buy listing!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a Marketplace contract\n * @returns a mutation object that can be used to buy out an auction listing\n * @see {@link https://portal.thirdweb.com/react/react.usebuynow?utm_source=sdk | Documentation}\n */\nfunction useBuyNow(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot make bid\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (data.type === ListingType.Direct) {\n invariant(contract.direct.buyoutListing, \"contract does not support direct.buyoutListing\");\n return await contract.direct.buyoutListing(data.id, data.buyAmount, data.buyForWallet);\n }\n invariant(contract.auction.buyoutListing, \"contract does not support auction.buyoutListing\");\n return await contract.auction.buyoutListing(data.id);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Buy a direct listing\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\", \"marketplace-v3\");\n * const {\n * mutate: buyNow,\n * isLoading,\n * error,\n * } = useBuyDirectListing(contract);\n *\n * if (error) {\n * console.error(\"failed to buy direct listing\", error);\n * }\n *\n * return (\n * buyNow({listingId: 1, quantity: 1, buyer: \"{{address}}\"})}\n * >\n * Buy listing!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a MarketplaceV3 contract\n * @returns a mutation object that can be used to buy out a direct listing\n * @see {@link https://portal.thirdweb.com/react/react.useBuyDirectListing?utm_source=sdk | Documentation}\n */\nfunction useBuyDirectListing(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const walletAddress = useAddress();\n return useMutation(async data => {\n invariant(walletAddress, \"no wallet connected, cannot buy from listing\");\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.directListings.buyFromListing, \"contract does not support directListings.buyFromListing\");\n return await contract.directListings.buyFromListing(data.listingId, data.quantity, data.buyer);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\nfunction isMarketplaceV1(contract) {\n return contract.getAllListings !== undefined;\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get a single NFT\n *\n * @example\n * ```javascript\n * const tokenId = 0; // the tokenId to look up\n * const { data: nft, isLoading, error } = useNFT(contract, tokenId);\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @param tokenId - the tokenId to look up\n * @returns a response object that includes the metadata for the given tokenId\n * @twfeature ERC721 | ERC1155\n * @see {@link https://portal.thirdweb.com/react/react.usenft?utm_source=sdk | Documentation}\n */\nfunction useNFT(contract, tokenId) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.get(contractAddress, tokenId), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc1155) {\n invariant(erc1155.get, \"Contract instance does not support get\");\n return await erc1155.get(BigNumber.from(tokenId || 0));\n }\n if (erc721) {\n invariant(erc721.get, \"Contract instance does not support get\");\n return await erc721.get(BigNumber.from(tokenId || 0));\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!erc721 || !!erc1155 && tokenId !== undefined\n });\n}\n\n/**\n * Get all NFTs\n *\n * @example\n * ```javascript\n * const { data: nfts, isLoading, error } = useNFTs(contract, { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @param queryParams - query params to pass to the query for pagination\n * @returns a response object that includes an array of NFTs\n * @twfeature ERC721Supply | ERC721Enumerable | ERC1155Enumerable\n * @see {@link https://portal.thirdweb.com/react/react.usenfts?utm_source=sdk | Documentation}\n */\nfunction useNFTs(contract, queryParams) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.query.all(contractAddress, queryParams), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc721) {\n invariant(erc721.getAll, \"Contract instance does not support getAll\");\n return await erc721.getAll(queryParams);\n }\n if (erc1155) {\n invariant(erc1155.getAll, \"Contract instance does not support getAll\");\n return await erc1155.getAll(queryParams);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!erc721 || !!erc1155\n });\n}\n\n/**\n * Get total supply count\n *\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * const { data: count, isLoading, error } = useTotalCount(contract);\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @returns a response object that includes the total count of NFTs\n * @twfeature ERC721Supply | ERC1155Enumerable\n * @see {@link https://portal.thirdweb.com/react/react.usetotalcount?utm_source=sdk | Documentation}\n */\nfunction useTotalCount(contract) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.query.totalCount(contractAddress), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc1155) {\n invariant(erc1155.totalCount, \"Contract instance does not support totalCount\");\n return await erc1155.totalCount();\n }\n if (erc721) {\n invariant(erc721.totalCount, \"Contract instance does not support totalCount\");\n return await erc721.totalCount();\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!erc721 || !!erc1155\n });\n}\n\n/**\n * Get total minted supply count\n *\n * @example\n * ```javascript\n * const { contract } = useContract(\"{{contract_address}}\");\n * const { data: totalCirculatingSupply, isLoading, error } = useTotalCirculatingSupply(contract);\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @param tokenId - required for ERC1155, the tokenId to look up\n * @returns a response object that includes the total minted supply\n * @twfeature ERC721Supply | ERC1155Enumerable\n * @see {@link https://portal.thirdweb.com/react/react.usetotalcirculatingsupply?utm_source=sdk | Documentation}\n */\nfunction useTotalCirculatingSupply(contract, tokenId) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.query.totalCirculatingSupply(contractAddress, tokenId ?? undefined), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc1155) {\n invariant(erc1155.totalCirculatingSupply, \"Contract instance does not support totalCirculatingSupply\");\n requiredParamInvariant(tokenId, \"No tokenId provided\");\n return await erc1155.totalCirculatingSupply(tokenId);\n }\n if (erc721) {\n invariant(erc721.totalCirculatingSupply, \"Contract instance does not support totalCirculatingSupply\");\n return await erc721.totalCirculatingSupply();\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!erc721 || !!erc1155 && tokenId !== undefined\n });\n}\n\n/**\n * Get all NFTs owned by a specific wallet\n *\n * @example\n * ```javascript\n * const { data: ownedNFTs, isLoading, error } = useOwnedNFTs(contract, \"{{wallet_address}}\", { start: 0, count: 100 });\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @param ownerWalletAddress - the wallet address to get owned tokens for\n * @param queryParams - query params to pass to the query for pagination\n * @returns a response object that includes the list of owned tokens\n * @twfeature ERC721Enumerable | ERC1155Enumerable | ERC721Supply\n * @see {@link https://portal.thirdweb.com/react/react.useownednfts?utm_source=sdk | Documentation}\n */\nfunction useOwnedNFTs(contract, ownerWalletAddress, queryParams) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.query.owned.all(contractAddress, ownerWalletAddress), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(ownerWalletAddress, \"No wallet address provided\");\n if (erc721) {\n return await erc721.getOwned(ownerWalletAddress, queryParams);\n }\n if (erc1155) {\n return await erc1155.getOwned(ownerWalletAddress, queryParams);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: (!!erc721 || !!erc1155) && !!ownerWalletAddress\n });\n}\n\n/**\n * Get NFT balance of a specific wallet\n *\n * @example\n * ```javascript\n * const { data: ownerBalance, isLoading, error } = useNFTBalance(contract, \"{{wallet_address}}\");\n * // for ERC1155 contracts, you can also pass a tokenId\n * const tokenId = 0;\n * const { data: ownerBalance, isLoading, error } = useNFTBalance(contract, \"{{wallet_address}}\", tokenId);\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @param ownerWalletAddress - the wallet address to check the balance of\n * @param tokenId - required for ERC1155, the tokenId to look up\n * @returns a response object that includes the total balance of the owner\n * @twfeature ERC721 | ERC1155\n * @see {@link https://portal.thirdweb.com/react/react.usenftbalance?utm_source=sdk | Documentation}\n */\nfunction useNFTBalance(contract, ownerWalletAddress, tokenId) {\n const contractAddress = contract?.getAddress();\n const {\n erc721,\n erc1155\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.balanceOf(contractAddress, ownerWalletAddress, tokenId), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(ownerWalletAddress, \"No owner wallet address provided\");\n if (erc1155) {\n requiredParamInvariant(tokenId, \"No tokenId provided\");\n invariant(erc1155.balanceOf, \"Contract instance does not support balanceOf\");\n return erc1155.balanceOf(ownerWalletAddress, tokenId);\n }\n if (erc721) {\n invariant(erc721.balanceOf, \"Contract instance does not support balanceOf\");\n return erc721.balanceOf(ownerWalletAddress);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!erc721 || !!erc1155 && !!ownerWalletAddress\n });\n}\n\n/**\n * Get the shared metadata of an Open Edition NFT contract\n *\n * @example\n * ```javascript\n * const { data: sharedMetadata, isLoading, error } = useSharedMetadata(contract);\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @returns a response object that includes the shared metadata of the contract\n * @twfeature ERC721SharedMetadata\n * @see {@link https://portal.thirdweb.com/react/react.usesharedmetadata?utm_source=sdk | Documentation}\n */\nfunction useSharedMetadata(contract) {\n const contractAddress = contract?.getAddress();\n const {\n erc721\n } = getErcs(contract);\n return useQueryWithNetwork(cacheKeys.contract.nft.sharedMetadata.get(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc721) {\n invariant(erc721.sharedMetadata.get, \"Contract instance does not support sharedMetadata.get\");\n return erc721.sharedMetadata.get();\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n enabled: !!contract\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n\n/**\n * Mint an NFT to a specific wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: mintNft,\n * isLoading,\n * error,\n * } = useMintNFT(contract);\n *\n * if (error) {\n * console.error(\"failed to mint NFT\", error);\n * }\n *\n * return (\n * mintNft({ name: \"My awesome NFT!\", to: \"{{wallet_address}}\" })}\n * >\n * Mint!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @returns a mutation object that can be used to mint a new NFT token to the connected wallet\n * @twfeature ERC721Mintable | ERC1155Mintable\n * @see {@link https://portal.thirdweb.com/react/react.usemintnft?utm_source=sdk | Documentation}\n */\nfunction useMintNFT(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc1155,\n erc721\n } = getErcs(contract);\n return useMutation(async data => {\n invariant(data.to, 'No \"to\" address provided');\n requiredParamInvariant(contract, \"contract is undefined\");\n if (erc1155) {\n invariant(\"supply\" in data, \"supply not provided\");\n const {\n to,\n metadata,\n supply\n } = data;\n return await erc1155.mintTo(to, {\n metadata,\n supply: BigNumber.from(supply || 1)\n });\n }\n if (erc721) {\n return await erc721.mintTo(data.to, data.metadata);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Increase the supply of an existing NFT\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: mintNftSupply,\n * isLoading,\n * error,\n * } = useMintNFTSupply(contract);\n *\n * if (error) {\n * console.error(\"failed to mint additional supply\", error);\n * }\n *\n * return (\n * mintNftSupply({ tokenId: 0, additionalSupply: 100, to: \"{{wallet_address}}\"})}\n * >\n * Mint Additional Supply!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link Erc1155}\n * @returns a mutation object that can be used to mint a more supply of a token id to the provided wallet\n * @twfeature ERC1155Mintable\n * @see {@link https://portal.thirdweb.com/react/react.usemintnftsupply?utm_source=sdk | Documentation}\n */\nfunction useMintNFTSupply(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async data => {\n invariant(data.to, 'No \"to\" address provided');\n requiredParamInvariant(contract, \"contract is undefined\");\n requiredParamInvariant(data.tokenId, \"tokenId not provided\");\n invariant(\"additionalSupply\" in data, \"additionalSupply not provided\");\n const {\n to,\n tokenId,\n additionalSupply\n } = data;\n return await contract.mintAdditionalSupplyTo(to, tokenId, additionalSupply);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Transfer an NFT\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: transferNFT,\n * isLoading,\n * error,\n * } = useTransferNFT(contract);\n *\n * if (error) {\n * console.error(\"failed to transfer NFT\", error);\n * }\n *\n * return (\n * transferNFT({\n * to: \"{{wallet_address}}\",\n * tokenId: 2\n * })}\n * >\n * Transfer\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @returns a mutation object that can be used to transfer NFTs\n * @twfeature ERC721 | ERC1155\n * @see {@link https://portal.thirdweb.com/react/react.usetransfernft?utm_source=sdk | Documentation}\n */\nfunction useTransferNFT(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc1155,\n erc721\n } = getErcs(contract);\n return useMutation(data => {\n invariant(\"to\" in data, \"to not provided\");\n if (erc1155) {\n invariant(erc1155.transfer, \"contract does not support transfer\");\n requiredParamInvariant(data.tokenId, \"tokenId not provided\");\n invariant(\"amount\" in data, \"amount not provided\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return erc1155.transfer(data.to, data.tokenId, data.amount);\n }\n if (erc721) {\n return erc721.transfer(data.to, data.tokenId);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Airdrop NFTs to a list of wallets\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: airdropNFT,\n * isLoading,\n * error,\n * } = useAirdropNFT(contract);\n *\n * if (error) {\n * console.error(\"failed to transfer batch NFTs\", error);\n * }\n *\n * return (\n * airdropNFT({\n * tokenId: 2,\n * addresses: [\n * { address: \"{{wallet_address}}\", quantity: 2 },\n * { address: \"{{wallet_address}}\", quantity: 4 } }\n * ]\n * )}\n * >\n * Airdrop NFT\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link Erc1155}\n * @returns a mutation object that can be used to transfer batch NFTs\n * @twfeature ERC1155\n * @see {@link https://portal.thirdweb.com/react/react.useairdropnft?utm_source=sdk | Documentation}\n */\nfunction useAirdropNFT(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(_ref => {\n let {\n tokenId,\n addresses\n } = _ref;\n requiredParamInvariant(contract, \"contract is undefined\");\n invariant(contract.airdrop, \"contract does not support airdrop\");\n return contract.airdrop(tokenId, addresses);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Burn an NFT\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: burnNFT,\n * isLoading,\n * error,\n * } = useBurnNFT(contract);\n *\n * if (error) {\n * console.error(\"failed to burn NFT\", error);\n * }\n *\n * return (\n * burnNFT({ tokenId: 0, amount: 1 })}\n * >\n * Burn!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link NFTContract}\n * @returns a mutation object that can be used to burn an NFT token from the connected wallet\n * @twfeature ERC721Burnable | ERC1155Burnable\n * @see {@link https://portal.thirdweb.com/react/react.useburnnft?utm_source=sdk | Documentation}\n */\nfunction useBurnNFT(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc1155,\n erc721\n } = getErcs(contract);\n return useMutation(async data => {\n requiredParamInvariant(data.tokenId, \"No tokenId provided\");\n requiredParamInvariant(contract, \"contract is undefined\");\n if (erc1155) {\n invariant(\"amount\" in data, \"amount not provided\");\n const {\n tokenId,\n amount\n } = data;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return await erc1155.burn(tokenId, amount);\n }\n if (erc721) {\n const {\n tokenId\n } = data;\n return await erc721.burn(tokenId);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Set shared metadata\n * TODO add docs\n * @internal\n */\nfunction useSetSharedMetadata(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const {\n erc721\n } = getErcs(contract);\n return useMutation(async data => {\n if (erc721) {\n return await erc721.sharedMetadata.set(data);\n }\n invariant(false, \"Unknown NFT type\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/** **********************/\n/** UTILS **/\n/** **********************/\n\n/**\n * @internal\n */\n/**\n * @internal\n */\n/**\n * @internal\n */\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n/**\n * Get all members of all roles\n *\n * @example\n * ```jsx\n * const { data: roles, isLoading, error } = useAllRoleMembers(contract);\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a list of addresses for all supported roles on the contract.\n * @twfeature PermissionsEnumerable\n * @see {@link https://portal.thirdweb.com/react/react.useallrolemembers?utm_source=sdk | Documentation}\n */\nfunction useAllRoleMembers(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.roles.getAll(contractAddress), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(contract.roles, \"Contract does not support roles\");\n // have to cast to any because of role bs, type is defined in the useQueryWithNetwork definition above\n return contract.roles.getAll();\n }, {\n enabled: !!contract && !!contractAddress\n });\n}\n\n/**\n * Get all members of a specific role\n *\n * @example\n * ```jsx\n * const { data: members, isLoading, error } = useRoleMembers(SmartContract, \"admin\");\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @param role - the role to get the members of, see {@link Role}\n * @returns a list of addresses that are members of the role\n * @twfeature Permissions\n * @see {@link https://portal.thirdweb.com/react/react.userolemembers?utm_source=sdk | Documentation}\n */\nfunction useRoleMembers(contract, role) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.extensions.roles.get(contractAddress, role), () => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(contract.roles, \"Contract does not support roles\");\n return contract.roles.get(role);\n }, {\n enabled: !!contract && !!contractAddress && !!role\n });\n}\n\n/**\n * Check if an address is a member of a specific role\n *\n * @example\n * ```jsx\n * const { data: isMember, isLoading, error } = useIsAddressRole(contract, \"admin\", \"{{wallet_address}}\");\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @param role - the role to check the member against, see {@link Role}\n * @param walletAddress - the address to check\n * @returns true if the address is a member of the role, or false if not\n * @twfeature PermissionsEnumerable\n * @see {@link https://portal.thirdweb.com/react/react.useisaddressrole?utm_source=sdk | Documentation}\n */\nfunction useIsAddressRole(contract, role, walletAddress) {\n // TODO this might be possible to do with `verify` fn instead?\n const contractHasRoles = !!(contract && contract.roles);\n const {\n data\n } = useRoleMembers(contractHasRoles ? contract : undefined, role);\n\n // if the contract does not have roles then everything is allowed === true\n if (contractHasRoles === false) {\n return true;\n }\n\n // switch logic (if address 0 is in the role list then anyone has permissions to it)\n if (data?.includes(constants.AddressZero)) {\n return true;\n }\n\n // actual role check logic\n return !!(walletAddress && data?.includes(walletAddress));\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n\n/**\n * Overwrite the list of members for specific roles\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: overwriteRoles,\n * isLoading,\n * error,\n * } = useSetAllRoleMembers(contract);\n *\n * if (error) {\n * console.error(\"failed to overwrite roles\", error);\n * }\n *\n * return (\n * overwriteRoles({ rolesWithAddresses: { minter: [\"{{wallet_address}\"] } })}\n * >\n * Overwrite Roles\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to overwrite all roles on the contract\n * @twfeature Permissions\n */\nfunction useSetAllRoleMembers(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async rolesWithAddresses => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(contract.roles, \"Contract does not support roles\");\n await contract.roles.setAll(rolesWithAddresses);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Grant a role to a specific address\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: grantRole,\n * isLoading,\n * error,\n * } = useGrantRole(contract);\n *\n * if (error) {\n * console.error(\"failed to grant role\", error);\n * }\n *\n * return (\n * grantRole({ role: \"admin\", address: {{wallet_address}} })}\n * >\n * Grant Role\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to grant a member of a role on the contract\n * @twfeature Permissions | PermissionsEnumerable\n * @see {@link https://portal.thirdweb.com/react/react.usegrantrole?utm_source=sdk | Documentation}\n */\nfunction useGrantRole(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async params => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(contract.roles, \"Contract does not support roles\");\n await contract.roles.grant(params.role, params.address);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Revoke a role from a specific address\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: revokeRole,\n * isLoading,\n * error,\n * } = useRevokeRole(contract);\n *\n * if (error) {\n * console.error(\"failed to revoke role\", error);\n * }\n *\n * return (\n * revokeRole({ role: \"admin\", address: {{wallet_address}} })}\n * >\n * Revoke Role\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to revoke a role from a member on the contract\n * @twfeature Permissions | PermissionsEnumerable\n * @see {@link https://portal.thirdweb.com/react/react.userevokerole?utm_source=sdk | Documentation}\n */\nfunction useRevokeRole(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async params => {\n requiredParamInvariant(contract, \"No contract provided\");\n invariant(contract.roles, \"Contract does not support roles\");\n await contract.roles.revoke(params.role, params.address);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get the total supply for this token\n *\n * @example\n * ```javascript\n * const { data: totalSupply, isLoading, error } = useTokenSupply(contract);\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a response object that includes the total minted supply\n * @twfeature ERC20\n * @see {@link https://portal.thirdweb.com/react/react.usetokensupply?utm_source=sdk | Documentation}\n */\nfunction useTokenSupply(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.token.totalSupply(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n const erc20 = getErc20(contract);\n if (erc20) {\n return erc20.totalSupply();\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n enabled: !!contract || !!contractAddress\n });\n}\n\n/**\n * Get token balance for a specific wallet\n *\n * @example\n * ```javascript\n * const { data: balance, isLoading, error } = useTokenBalance(contract, \"{{wallet_address}}\");\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a response object that includes the balance of the address\n * @twfeature ERC20\n * @see {@link https://portal.thirdweb.com/react/react.usetokenbalance?utm_source=sdk | Documentation}\n */\nfunction useTokenBalance(contract, walletAddress) {\n const contractAddress = contract?.getAddress();\n const erc20 = getErc20(contract);\n return useQueryWithNetwork(cacheKeys.contract.token.balanceOf(contractAddress, walletAddress), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(walletAddress, \"No address provided\");\n if (erc20) {\n return await erc20.balanceOf(walletAddress);\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n enabled: !!walletAddress && !!contract\n });\n}\n\n/**\n * Get token decimals\n *\n * @example\n * ```javascript\n * const { data: decimals, isLoading, error } = useTokenDecimals(contract);\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a response object that includes the decimals of the ERC20 token\n * @twfeature ERC20\n * @see {@link https://portal.thirdweb.com/react/react.usetokendecimals?utm_source=sdk | Documentation}\n */\nfunction useTokenDecimals(contract) {\n const contractAddress = contract?.getAddress();\n const erc20 = getErc20(contract);\n return useQueryWithNetwork(cacheKeys.contract.token.decimals(contractAddress), async () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n if (erc20) {\n return (await erc20.get()).decimals;\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n enabled: !!contract\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n\n/**\n * Mint tokens\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: mintTokens,\n * isLoading,\n * error,\n * } = useMintToken(contract);\n *\n * if (error) {\n * console.error(\"failed to mint tokens\", error);\n * }\n *\n * return (\n * mintTokens({ to: \"{{wallet_address}}\", amount: 1000 })}\n * >\n * Mint!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a mutation object that can be used to mint new tokens to the connected wallet\n * @twfeature ERC20Mintable\n * @see {@link https://portal.thirdweb.com/react/react.useminttoken?utm_source=sdk | Documentation}\n */\nfunction useMintToken(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const erc20 = getErc20(contract);\n return useMutation(data => {\n const {\n to,\n amount\n } = data;\n requiredParamInvariant(contract, \"contract is undefined\");\n if (erc20) {\n return erc20.mintTo(to, amount);\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Claim tokens to a specific wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: claimTokens,\n * isLoading,\n * error,\n * } = useClaimToken(contract);\n *\n * if (error) {\n * console.error(\"failed to claim tokens\", error);\n * }\n *\n * return (\n * claimTokens({ to: \"{{wallet_address}}\", amount: 100 })}\n * >\n * Claim Tokens!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a mutation object that can be used to tokens to the wallet specified in the params\n * @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1\n * @see {@link https://portal.thirdweb.com/react/react.useclaimtoken?utm_source=sdk | Documentation}\n */\nfunction useClaimToken(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const erc20 = getErc20(contract);\n return useMutation(async data => {\n invariant(data.to, 'No \"to\" address provided');\n if (erc20) {\n invariant(erc20?.claimTo, \"contract does not support claimTo\");\n return await erc20.claimTo(data.to, data.amount, {\n checkERC20Allowance: data.checkERC20Allowance\n });\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Transfer tokens to a specific wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: transferTokens,\n * isLoading,\n * error,\n * } = useTransferToken(contract);\n *\n * if (error) {\n * console.error(\"failed to transfer tokens\", error);\n * }\n *\n * return (\n * transferTokens({ to: \"{{wallet_address}}\", amount: 1000 })}\n * >\n * Transfer\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a mutation object that can be used to transfer tokens\n * @twfeature ERC20\n * @see {@link https://portal.thirdweb.com/react/react.usetransfertoken?utm_source=sdk | Documentation}\n */\nfunction useTransferToken(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const erc20 = getErc20(contract);\n return useMutation(data => {\n const {\n to,\n amount\n } = data;\n if (erc20) {\n invariant(erc20?.transfer, \"contract does not support transfer\");\n return erc20.transfer(to, amount);\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Airdrop tokens to a list of wallets\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: transferBatchTokens,\n * isLoading,\n * error,\n * } = useTransferToken(contract);\n *\n * if (error) {\n * console.error(\"failed to transfer batch tokens\", error);\n * }\n *\n * return (\n * transferBatchTokens([{ to: \"{{wallet_address}}\", amount: 1000 }, { to: \"{{wallet_address}}\", amount: 2000 }])}\n * >\n * Airdrop\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a mutation object that can be used to transfer batch tokens\n * @twfeature ERC20\n * @see {@link https://portal.thirdweb.com/react/react.usetransferbatchtoken?utm_source=sdk | Documentation}\n */\nfunction useTransferBatchToken(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const erc20 = getErc20(contract);\n return useMutation(data => {\n if (erc20) {\n invariant(erc20.transferBatch, \"contract does not support transferBatch\");\n const convertedData = data.map(token => ({\n toAddress: token.to,\n amount: token.amount\n }));\n return erc20.transferBatch(convertedData);\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n * Burn tokens\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: burnTokens,\n * isLoading,\n * error,\n * } = useBurnToken(contract);\n *\n * if (error) {\n * console.error(\"failed to burn tokens\", error);\n * }\n *\n * return (\n * burnTokens({ amount: 1000 })}\n * >\n * Burn!\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a {@link TokenContract}\n * @returns a mutation object that can be used to burn tokens from the connected wallet\n * @twfeature ERC20Burnable\n * @see {@link https://portal.thirdweb.com/react/react.useburntoken?utm_source=sdk | Documentation}\n */\nfunction useBurnToken(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n const erc20 = getErc20(contract);\n return useMutation(data => {\n const {\n amount\n } = data;\n requiredParamInvariant(contract, \"contract is undefined\");\n if (erc20) {\n invariant(erc20.burn, \"contract does not support burn\");\n return erc20.burn(amount);\n }\n invariant(false, \"Smart contract is not a valid erc20 contract\");\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get all accounts\n *\n * @example\n * ```javascript\n * const { data: accounts, isLoading, error } = useAccounts(contract);\n * ```\n *\n * @param contract - an instance of a account factory contract\n * @returns a response object that includes an array of all accounts with their associated admin\n * @twfeature AccountFactory\n * @see {@link https://portal.thirdweb.com/react/react.useaccounts?utm_source=sdk | Documentation}\n */\nfunction useAccounts(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.accountFactory.getAll(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.accountFactory.getAllAccounts, \"Contract instance does not support contract.accountFactory.getAllAccounts\");\n return contract.accountFactory.getAllAccounts();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get all accounts associated with the provided address\n *\n * @example\n * ```javascript\n * const { data: accountsForAddress, isLoading, error } = useAccountsForAddress(contract, \"{{account_address}}\");\n * ```\n *\n * @param contract - an instance of a account factory contract\n * @returns a response object that includes an array of all accounts associated with the address\n * @twfeature AccountFactory\n * @see {@link https://portal.thirdweb.com/react/react.useaccountsforaddress?utm_source=sdk | Documentation}\n */\nfunction useAccountsForAddress(contract, address) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.accountFactory.getAllForAddress(contractAddress, address), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.accountFactory.getAssociatedAccounts, \"Contract instance does not support contract.accountFactory.getAssociatedAccounts\");\n return contract.accountFactory.getAssociatedAccounts(address || \"\");\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Check if a account has been deployed for the given admin\n *\n * @example\n * ```javascript\n * const { data: isAccountDeployed, isLoading, error } = useIsAccountDeployed(contract);\n * ```\n *\n * @param contract - an instance of a account factory contract\n * @returns a boolean indicating if a account has been deployed for the given admin\n * @twfeature AccountFactory\n * @see {@link https://portal.thirdweb.com/react/react.useisaccountdeployed?utm_source=sdk | Documentation}\n */\nfunction useIsAccountDeployed(contract, admin, extraData) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.accountFactory.isAccountDeployed(contractAddress, admin), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.accountFactory.isAccountDeployed, \"Contract instance does not support contract.accountFactory.getAllAccounts\");\n invariant(admin, \"No account address provided\");\n return contract.accountFactory.isAccountDeployed(admin, extraData);\n }, {\n enabled: !!contract\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n/**\n * Create a account\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const { contract } = useContract(\"{{contract_address}}\");\n * const {\n * mutate: createAccount,\n * isLoading,\n * error,\n * } = useCreateAccount(contract);\n *\n * if (error) {\n * console.error(\"failed to create account\", error);\n * }\n *\n * return (\n * createAccount(\"0x...\")}\n * >\n * Create Account\n * \n * );\n * };\n * ```\n *\n * @param contract - an instance of a account factory contract\n * @returns a mutation object that can be used to create a account\n * @twfeature AccountFactory\n * @see {@link https://portal.thirdweb.com/react/react.usecreateaccount?utm_source=sdk | Documentation}\n */\nfunction useCreateAccount(contract) {\n const activeChainId = useSDKChainId();\n const contractAddress = contract?.getAddress();\n const queryClient = useQueryClient();\n return useMutation(async (admin, extraData) => {\n requiredParamInvariant(contract, \"contract is undefined\");\n return contract.accountFactory.createAccount(admin, extraData);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/** **********************/\n/** READ HOOKS **/\n/** **********************/\n\n/**\n * Get all signers of account\n *\n * @example\n * ```javascript\n * const { data: accounts, isLoading, error } = useAccountSigners(contract);\n * ```\n *\n * @param contract - an instance of a account\n * @returns a response object that includes an array of all signers of the provided account\n * @twfeature Account\n * @see {@link https://portal.thirdweb.com/react/react.useaccountsigners?utm_source=sdk | Documentation}\n */\nfunction useAccountSigners(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.account.signers(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.account.getAllSigners, \"Contract instance does not support contract.account.getAllSigners\");\n return contract.account.getAllSigners();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get all admins of account\n *\n * @example\n * ```javascript\n * const { data: accounts, isLoading, error } = useAccountSigners(contract);\n * ```\n *\n * @param contract - an instance of a account\n * @returns a response object that includes an array of all admins of the provided account\n * @twfeature Account\n * @see {@link https://portal.thirdweb.com/react/react.useaccountadmins?utm_source=sdk | Documentation}\n */\nfunction useAccountAdmins(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.account.signers(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.account.getAllAdmins, \"Contract instance does not support contract.account.getAllAdmins\");\n return contract.account.getAllAdmins();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Get all signers and admins of account\n *\n * @example\n * ```javascript\n * const { data: accounts, isLoading, error } = useAccountSigners(contract);\n * ```\n *\n * @param contract - an instance of a account\n * @returns a response object that includes an array of all admins of the provided account\n * @twfeature Account\n * @see {@link https://portal.thirdweb.com/react/react.useaccountadmins?utm_source=sdk | Documentation}\n */\nfunction useAccountAdminsAndSigners(contract) {\n const contractAddress = contract?.getAddress();\n return useQueryWithNetwork(cacheKeys.contract.account.signers(contractAddress), () => {\n requiredParamInvariant(contract, \"No Contract instance provided\");\n invariant(contract.account.getAllAdminsAndSigners, \"Contract instance does not support contract.account.getAllAdminsAndSigners\");\n return contract.account.getAllAdminsAndSigners();\n }, {\n enabled: !!contract\n });\n}\n\n/** **********************/\n/** WRITE HOOKS **/\n/** **********************/\n/**\n * Create and add a session key for the smart wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const {\n * mutate: createSessionKey,\n * isLoading,\n * error,\n * } = useCreateSessionKey();\n *\n * if (error) {\n * console.error(\"failed to create session key\", error);\n * }\n *\n * return (\n * createSessionKey(\n * \"0x...\",\n * {\n * approvedCallTargets: [\"0x...\"], // the addresses of contracts that the session key can call\n * nativeTokenLimitPerTransaction: 0.1, // the maximum amount of native token (in ETH) that the session key can spend per transaction\n * startDate: new Date(), // the date when the session key becomes active\n * expirationDate = new Date(Date.now() + 24 * 60 * 60 * 1000); // the date when the session key expires\n * }\n * )}\n * >\n * Create Session Key\n * \n * );\n * };\n * ```\n *\n * @twfeature Account\n */\nfunction useCreateSessionKey() {\n const smartWallet = useWallet(\"smartWallet\");\n return useMutation(async args => {\n requiredParamInvariant(smartWallet, \"wallet is not connected\");\n return smartWallet.createSessionKey(args.keyAddress, args.permissions);\n });\n}\n\n/**\n * Revoke a session key on the smart wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const {\n * mutate: revokeSessionKey,\n * isLoading,\n * error,\n * } = useRevokeSessionKey();\n *\n * if (error) {\n * console.error(\"failed to revoke session key\", error);\n * }\n *\n * return (\n * revokeSessionKey(\"0x...\")}\n * >\n * Revoke Session Key\n * \n * );\n * };\n * ```\n *\n * @twfeature Account\n */\nfunction useRevokeSessionKey() {\n const smartWallet = useWallet(\"smartWallet\");\n return useMutation(async keyAddress => {\n requiredParamInvariant(smartWallet, \"wallet is not connected\");\n return smartWallet.revokeSessionKey(keyAddress);\n });\n}\n\n/**\n * Add an additional admin on the smart wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const {\n * mutate: addAdmin,\n * isLoading,\n * error,\n * } = useAddAdmin();\n *\n * if (error) {\n * console.error(\"failed to add admin\", error);\n * }\n *\n * return (\n * addAdmin(\"0x...\")}\n * >\n * Add admin\n * \n * );\n * };\n * ```\n *\n * @twfeature Account\n */\nfunction useAddAdmin() {\n const smartWallet = useWallet(\"smartWallet\");\n return useMutation(async adminAddress => {\n requiredParamInvariant(smartWallet, \"wallet is not connected\");\n return smartWallet.addAdmin(adminAddress);\n });\n}\n\n/**\n * Add an additional admin on the smart wallet\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const {\n * mutate: removeAdmin,\n * isLoading,\n * error,\n * } = useRemoveAdmin();\n *\n * if (error) {\n * console.error(\"failed to remove admin\", error);\n * }\n *\n * return (\n * removeAdmin(\"0x...\")}\n * >\n * Remove admin\n * \n * );\n * };\n * ```\n *\n * @twfeature Account\n */\nfunction useRemoveAdmin() {\n const smartWallet = useWallet(\"smartWallet\");\n return useMutation(async adminAddress => {\n requiredParamInvariant(smartWallet, \"wallet is not connected\");\n return smartWallet.removeAdmin(adminAddress);\n });\n}\n\nfunction useAuth() {\n const wallet = useWallet();\n const authConfig = useThirdwebAuthContext();\n return useMemo(() => {\n if (!authConfig?.domain) {\n return undefined;\n }\n if (!wallet) {\n return undefined;\n }\n return new ThirdwebAuth(wallet, authConfig.domain);\n }, [wallet, authConfig?.domain]);\n}\n\n/**\n * Hook to securely login to a backend with the connected wallet. The backend\n * authentication URL must be configured on the ThirdwebProvider.\n *\n * @returns - A function to invoke to login with the connected wallet, and an isLoading state.\n *\n * @see {@link https://portal.thirdweb.com/react/react.uselogin?utm_source=sdk | Documentation}\n *\n */\nfunction useLogin() {\n const queryClient = useQueryClient();\n const authConfig = useThirdwebAuthContext();\n const wallet = useWallet();\n const login = useMutation({\n mutationFn: async () => {\n invariant(authConfig, \"Please specify an authConfig in the ThirdwebProvider\");\n invariant(wallet, \"You need a connected wallet to login.\");\n invariant(authConfig.authUrl, \"Please specify an authUrl in the authConfig.\");\n const address = await wallet.getAddress();\n const chainId = await wallet.getChainId();\n let res = await fetch(`${authConfig.authUrl}/payload`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n address,\n chainId: chainId.toString()\n })\n });\n if (!res.ok) {\n throw new Error(`Failed to get payload with status code ${res.status}`);\n }\n let payloadData;\n try {\n ({\n payload: payloadData\n } = await res.json());\n } catch {\n throw new Error(`Failed to get payload`);\n }\n const payload = await signLoginPayload({\n wallet,\n payload: payloadData\n });\n res = await fetch(`${authConfig.authUrl}/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n payload\n }),\n credentials: \"include\"\n });\n if (!res.ok) {\n const data = await res.json();\n if (data.error) {\n throw new Error(data.error);\n }\n throw new Error(`Login request failed with status code ${res.status}`);\n }\n const {\n token\n } = await res.json();\n await authConfig.secureStorage?.setItem(AUTH_TOKEN_STORAGE_KEY, token);\n queryClient.invalidateQueries(cacheKeys.auth.user());\n return token;\n }\n });\n return {\n login: () => login.mutateAsync(),\n isLoading: login.isLoading\n };\n}\n\n/**\n * Hook to get the currently logged in user.\n *\n * @returns - The currently logged in user or null if not logged in, as well as a loading state.\n *\n * @see {@link https://portal.thirdweb.com/react/react.useuser?utm_source=sdk | Documentation}\n *\n */\nfunction useUser() {\n const authConfig = useThirdwebAuthContext();\n const {\n data: user,\n isLoading\n } = useQuery(cacheKeys.auth.user(), async () => {\n invariant(authConfig, \"Please specify an authConfig in the ThirdwebProvider\");\n invariant(authConfig.authUrl, \"Please specify an authUrl in the authConfig.\");\n const token = await authConfig.secureStorage?.getItem(AUTH_TOKEN_STORAGE_KEY);\n // We include credentials so we can getUser even if API is on different URL\n const params = {\n credentials: \"include\",\n ...(token ? {\n headers: {\n Authorization: `Bearer ${token}`\n }\n } : {})\n };\n const res = await fetch(`${authConfig.authUrl}/user`, params);\n return await res.json();\n }, {\n enabled: !!authConfig\n });\n return {\n user,\n isLoggedIn: !!user,\n isLoading\n };\n}\n\nconst warnSet = new Set();\nfunction showDeprecationWarning(deprecated, replacement) {\n // deprecation warnings only in dev only in dev\n if (__DEV__) {\n if (warnSet.has(`${deprecated}:${replacement}`)) {\n return;\n }\n warnSet.add(`${deprecated}:${replacement}`);\n console.warn(`\\`${deprecated}\\` is deprecated and will be removed in a future major version. Please use \\`${replacement}\\` instead.`);\n }\n}\n\n/**\n * Hook for getting an instance of an `EditionDrop` contract. This contract is used to interface with ERC1155 compliant NFTs that can be lazily minted.\n * @param contractAddress - the address of the Edition Drop contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"edition-drop\")\n *\n * // Now you can use the edition drop contract in the rest of the component\n *\n * // For example, this function will let the connected wallet claim a new NFT\n * async function claim(tokenId, quantity) {\n * await contract.claim(tokenId, quantity)\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const editionDrop = useEditionDrop(\"0x1234...\");\n * + const editionDrop = useContract(\"0x1234...\", \"edition-drop\").contract;\n * ```\n */\nfunction useEditionDrop(contractAddress) {\n showDeprecationWarning(`useEditionDrop(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"edition-drop\")`);\n return useContract(contractAddress, \"edition-drop\").contract;\n}\n\n/**\n * Hook for getting an instance of an `Edition` contract. This contract is used to interface with ERC1155 compliant NFTs.\n * @param contractAddress - the address of the Edition contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"edition\")\n *\n * // Now you can use the edition contract in the rest of the component\n *\n * // For example, this function will return all the NFTs on this contract\n * async function getNFTs() {\n * const nfts = await contract.getAll()\n * return nfts\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const edition = useEdition(\"0x1234...\");\n * + const edition = useContract(\"0x1234...\", \"edition\").contract;\n * ```\n */\nfunction useEdition(contractAddress) {\n showDeprecationWarning(`useEdition(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"edition\")`);\n return useContract(contractAddress, \"edition\").contract;\n}\n\n/**\n * Hook for getting an instance of an `NFTDrop` contract. This contract is meant to interface with ERC721 compliant NFTs that can be lazily minted.\n * @param contractAddress - the address of the NFT Drop contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"nft-drop\")\n *\n * // Now you can use the nft drop contract in the rest of the component\n *\n * // For example, this function will let the connected wallet claim a new NFT\n * async function claim(quantity) {\n * await contract.claim(quantity)\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const nftDrop = useNFTDrop(\"0x1234...\");\n * + const nftDrop = useContract(\"0x1234...\", \"nft-drop\").contract;\n * ```\n */\nfunction useNFTDrop(contractAddress) {\n showDeprecationWarning(`useNFTDrop(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"nft-drop\")`);\n return useContract(contractAddress, \"nft-drop\").contract;\n}\n\n/**\n * Hook for getting an instance of a `Marketplace` contract. This contract is used to support marketplace for purchase and sale of on-chain assets.\n * @param contractAddress - the address of the Marketplace contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"marketplace\")\n *\n * // Now you can use the marketplace contract in the rest of the component\n *\n * // For example, this function will return all the listings on the marketplace\n * async function getListings() {\n * const listings = await contract.getAll()\n * return listings\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const marketplace = useMarketplace(\"0x1234...\");\n * + const marketplace = useContract(\"0x1234...\", \"marketplace\").contract;\n * ```\n */\nfunction useMarketplace(contractAddress) {\n showDeprecationWarning(`useMarketplace(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"marketplace\")`);\n return useContract(contractAddress, \"marketplace\").contract;\n}\n\n/**\n * Hook for getting an instance of an `NFTCollection` contract. This contract is meant to interface with ERC721 compliant NFTs.\n * @param contractAddress - the address of the NFT Collection contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract, isLoading, error } = useContract(\"\", \"nft-collection\")\n *\n * // Now you can use the nftCollection contract in the rest of the component\n *\n * // For example, this function will return all the NFTs on this contract\n * async function getNFTs() {\n * const nfts = await contract.getAll()\n * return nfts\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const nftCollection = useNFTCollection(\"0x1234...\");\n * + const nftCollection = useContract(\"0x1234...\", \"nft-collection\").contract;\n * ```\n */\nfunction useNFTCollection(contractAddress) {\n showDeprecationWarning(`useNFTCollection(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"nft-collection\")`);\n return useContract(contractAddress, \"nft-collection\").contract;\n}\n\n/**\n * Hook for getting an instance of a `Pack` contract. This contract supports the creation of on-chain luck-based lootboxes.\n * @param contractAddress - the address of the Pack contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = usePack(\"\", \"pack\")\n *\n * // Now you can use the pack contract in the rest of the component\n *\n * // For example, this function will get all the packs on this contract\n * async function getPacks() {\n * const packs = await contract.getAll()\n * return packs\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const pack = usePack(\"0x1234...\");\n * + const pack = useContract(\"0x1234...\", \"pack\").contract;\n * ```\n */\nfunction usePack(contractAddress) {\n showDeprecationWarning(`usePack(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"pack\")`);\n return useContract(contractAddress, \"pack\").contract;\n}\n\n/**\n * Hook for getting an instance of a `Token` contract. This contract supports ERC20 compliant tokens.\n * @param contractAddress - the address of the Token contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"token\")\n *\n * // Now you can use the token contract in the rest of the component\n *\n * // For example, this function will get the connected wallets token balance\n * async function balance() {\n * const balance = await contract.balance()\n * return balance\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const token = useToken(\"0x1234...\");\n * + const token = useContract(\"0x1234...\", \"token\").contract;\n * ```\n */\nfunction useToken(contractAddress) {\n showDeprecationWarning(`useToken(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"token\")`);\n return useContract(contractAddress, \"token\").contract;\n}\n\n/**\n * Hook for getting an instance of a `Token Drop` contract.\n * @param contractAddress - the address of the Token Drop contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"token-drop\")\n *\n * // Now you can use the token drop contract in the rest of the component\n *\n * // For example, this function will get the connected wallets token balance\n * async function balance() {\n * const balance = await contract.balance()\n * return balance\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const token = useTokenDrop(\"0x1234...\");\n * + const token = useContract(\"0x1234...\", \"token-drop\").contract;\n * ```\n */\nfunction useTokenDrop(contractAddress) {\n showDeprecationWarning(`useTokenDrop(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"token-drop\")`);\n return useContract(contractAddress, \"token-drop\").contract;\n}\n\n/**\n * Hook for getting an instance of an `Vote` contract. This contract enables fully featured voting-based decentralized governance systems.\n * @param contractAddress - the address of the Vote contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"vote\")\n *\n * // Now you can use the vote contract in the rest of the component\n *\n * // For example, this function will get all the proposals on this contract\n * async function getProposals() {\n * const proposals = await contract.getAll()\n * return proposals\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const vote = useVote(\"0x1234...\");\n * + const vote = useContract(\"0x1234...\", \"vote\").contract;\n * ```\n */\nfunction useVote(contractAddress) {\n showDeprecationWarning(`useVote(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"vote\")`);\n return useContract(contractAddress, \"vote\").contract;\n}\n\n/**\n * Hook for getting an instance of a `Split` contract. This contract supports fund distribution to multiple parties.\n * @param contractAddress - the address of the Split contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"split\")\n *\n * // Now you can use the split contract in the rest of the component\n *\n * // For example, this function will return all the recipients of the split\n * async function getRecipients() {\n * const recipients = await contract.getAllRecipients()\n * return recipients\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const split = useSplit(\"0x1234...\");\n * + const split = useContract(\"0x1234...\", \"split\").contract;\n * ```\n */\nfunction useSplit(contractAddress) {\n showDeprecationWarning(`useSplit(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"split\")`);\n return useContract(contractAddress, \"split\").contract;\n}\n\n/**\n * Hook for getting an instance of an `Multiwrap` contract. This contract is an ERC721 in which you can wrap ERC721, ERC1155 and ERC20 tokens.\n * @param contractAddress - the address of the Multiwrap contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"multiwrap\")\n *\n * // Now you can use the multiwrap contract in the rest of the component\n *\n * // For example, this function will let the connected wallet wrap tokens\n * async function wrap(tokensToWrap, wrappedNFTMetadata) {\n * await contract.wrap(tokensToWrap, wrappedNFTMetadata)\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const multiwrap = useMultiwrap(\"0x1234...\");\n * + const multiwrap = useContract(\"0x1234...\", \"multiwrap\").contract;\n * ```\n */\nfunction useMultiwrap(contractAddress) {\n showDeprecationWarning(`useMultiwrap(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"multiwrap\")`);\n return useContract(contractAddress, \"multiwrap\").contract;\n}\n\n/**\n * Hook for getting an instance of an `SignatureDrop` contract. This contract is meant to interface with ERC721 compliant NFTs that can be lazily minted.\n * @param contractAddress - the address of the NFT Drop contract, found in your thirdweb dashboard\n *\n * @example\n * ```javascript\n * import { useContract } from '@thirdweb-dev/react'\n *\n * export default function Component() {\n * const { contract } = useContract(\"\", \"signature-drop\")\n *\n * // Now you can use the Signature drop contract in the rest of the component\n *\n * // For example, this function will let the connected wallet claim a new NFT\n * async function claim(quantity) {\n * await contract.claim(quantity)\n * }\n *\n * ...\n * }\n * ```\n * @public\n * @deprecated\n * This hook is deprecated and will be removed in a future major version. You should use {@link useContract} instead.\n * ```diff\n * - const signatureDrop = useSignatureDrop(\"0x1234...\");\n * + const signatureDrop = useContract(\"0x1234...\", \"signature-drop\").contract;\n * ```\n */\nfunction useSignatureDrop(contractAddress) {\n showDeprecationWarning(`useSignatureDrop(\"${contractAddress || \"0x...\"}\")`, `useContract(\"${contractAddress || \"0x...\"}\", \"signature-drop\")`);\n return useContract(contractAddress, \"signature-drop\").contract;\n}\n\n/**\n * Get the configured `ThirdwebStorage` instance\n * @returns The `storageInterface` configured on the `ThirdwebProvider`\n * @see {@link https://portal.thirdweb.com/react/react.usestorage?utm_source=sdk | Documentation}\n */\nfunction useStorage() {\n const sdk = useSDK();\n return sdk?.storage;\n}\n\n/**\n * Hook used to upload any files or JSON data to decentralized storage systems like IPFS,\n * using the `storageInterface` configured on the `ThirdwebProvider`\n *\n * @param options - Configure the options for your upload\n * @returns Function used to upload files or JSON to decentralized storage systems\n *\n * @example\n * ```jsx\n * import { useStorageUpload } from \"@thirdweb-dev/react\";\n *\n * export default function Component() {\n * const { mutateAsync: upload, isLoading } = useStorageUpload();\n *\n * async function uploadData() {\n * const filesToUpload = [...];\n * const uris = await upload({ data: files });\n * console.log(uris);\n * }\n *\n * return (\n * \n * )\n * }\n * ```\n * @see {@link https://portal.thirdweb.com/react/react.usestorageupload?utm_source=sdk | Documentation}\n */\nfunction useStorageUpload(uploadOptions) {\n const sdk = useSDK();\n return useMutation(async _ref => {\n let {\n data,\n options\n } = _ref;\n invariant(sdk, \"sdk must be defined\");\n return await sdk.storage.uploadBatch(data, options || uploadOptions);\n });\n}\n\n/**\n * Hook for checking whether the connected wallet is on the correct network specified by the `network` passed to the ``.\n *\n * ```javascript\n * import { useNetworkMismatch } from \"@thirdweb-dev/react\"\n * ```\n *\n * @returns `true` if the chainId of the connected wallet is different from the chainId of the network passed into ``\n *\n * @see {@link https://portal.thirdweb.com/react/react.usenetworkmismatch?utm_source=sdk | Documentation}\n *\n * @example\n * You can check if a users wallet is connected to the correct chain ID as follows:\n * ```javascript\n * import { useNetworkMismatch } from \"@thirdweb-dev/react\"\n *\n * const App = () => {\n * const isMismatched = useNetworkMismatch()\n *\n * return
{isMismatched}
\n * }\n * ```\n *\n * From here, you can prompt users to switch their network using the `useNetwork` hook.\n *\n * @public\n */\nfunction useNetworkMismatch() {\n const walletChainId = useChainId();\n const sdkChainId = useSDKChainId();\n if (!sdkChainId) {\n // we don't know yet\n return false;\n }\n if (sdkChainId === -1) {\n // means no network is set in the , so we don't care about the network mismatch\n return false;\n }\n if (!walletChainId) {\n // means no wallet is connected yet, so we don't care about the network mismatch\n return false;\n }\n // check if the chainIds are different\n return sdkChainId !== walletChainId;\n}\n\n/**\n * @internal\n */\nfunction useReadonlySDK(readonlyRpcUrl, sdkOptions, storageInterface) {\n return useMemo(() => {\n return new ThirdwebSDK$1(readonlyRpcUrl, sdkOptions, storageInterface);\n // storageInterface should be constant!\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [readonlyRpcUrl, sdkOptions]);\n}\n\n/**\n *\n * @internal\n */\nfunction useSigner() {\n const context = useContext(ThirdwebConnectedWalletContext);\n invariant(context, \"useSigner() hook must be used within a \");\n return context.signer;\n}\n\nfunction useSupportedWallet(id) {\n const context = useWalletContext();\n const wallet = context?.wallets.find(_wallet => _wallet.id === id);\n if (!wallet) {\n throw new Error(`Wallet with id \"${id}\" is not supported`);\n }\n return wallet;\n}\n\n/**\n * Get App URI\n *\n * @example\n * ```javascript\n * const { data: contractMetadata, isLoading, error } = useAppURI(contract);\n * ```\n *\n * @param contract - the {@link SmartContract} instance of the contract to get the appURI of\n * @returns a response object that includes the appURI of the contract\n * @twfeature AppURI\n */\nfunction useAppURI(contract) {\n return useQueryWithNetwork(cacheKeys.contract.app.get(contract?.getAddress()), async () => {\n requiredParamInvariant(contract, \"Contract is required\");\n invariant(contract.app, \"Contract does not support app\");\n return await contract.app.get();\n }, {\n enabled: !!contract\n });\n}\n\n/**\n * Set App URI\n *\n * @example\n * ```jsx\n * const Component = () => {\n * const {\n * mutate: useSetAppURI,\n * isLoading,\n * error,\n * } = useSetAppURI(contract);\n *\n * if (error) {\n * console.error(\"failed to update appURI\", error);\n * }\n *\n * return (\n * useSetAppURI({ uri })}\n * >\n * Update App URI\n * \n * );\n * };\n * ```\n * @param contract - an instance of a {@link SmartContract}\n * @returns a mutation object that can be used to update the appURI of a contract\n * @twfeature AppUR\n */\nfunction useSetAppURI(contract) {\n const queryClient = useQueryClient();\n const contractAddress = contract?.getAddress();\n const activeChainId = useSDKChainId();\n return useMutation(params => {\n requiredParamInvariant(contract, \"Contract is required\");\n invariant(contract.app, \"Contract does not support app\");\n return contract.app.set(params.uri);\n }, {\n onSettled: () => invalidateContractAndBalances(queryClient, contractAddress, activeChainId)\n });\n}\n\n/**\n *\n * @internal\n */\nfunction useENS() {\n const address = useAddress();\n const supportedChains = useSupportedChains();\n const {\n clientId\n } = useWalletContext();\n const ethereum = supportedChains.find(chain => chain.chainId === 1);\n return useQuery({\n queryKey: [\"ens\", address, ethereum?.rpc],\n cacheTime: 60 * 60 * 24 * 1000,\n // 24h\n staleTime: 60 * 60 * 1000,\n // 1h\n retry: false,\n enabled: !!address,\n queryFn: async () => {\n if (!address) {\n return null;\n }\n const provider = getChainProvider(1, {\n clientId,\n supportedChains: ethereum ? [{\n chainId: 1,\n rpc: [...ethereum.rpc],\n nativeCurrency: ethereum.nativeCurrency,\n slug: ethereum.slug\n }] : undefined\n });\n if (provider instanceof providers.JsonRpcProvider) {\n const [ens, avatarUrl] = await Promise.all([provider.lookupAddress(address), provider.getAvatar(address)]);\n return {\n ens,\n avatarUrl\n };\n }\n return {\n ens: await provider.lookupAddress(address),\n avatarUrl: null\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction shortenString(str) {\n let extraShort = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return `${str.substring(0, extraShort ? 4 : 6)}...${str.substring(str.length - (extraShort ? 3 : 4))}`;\n}\n\n/**\n * This function shortens an address if it is a valid EVM address.\n *\n * @param address - The address to shorten\n * @param extraShort - If true, show the first 4 and last 3 characters\n * @returns The shortened address\n *\n * @remarks\n * Note that this function will not check if the address is an ENS.\n *\n * @example Calling shortenAddress with extraShort set to true\n * ```ts\n * const address = shortenIfAddress(\"0x1234567890123456789012345678901234567890\", true); // result will be \"0x1234...890\"\n * ```\n */\nfunction shortenAddress(address) {\n let extraShort = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!address) {\n return \"\";\n }\n try {\n const formattedAddress = utils.getAddress(address);\n return shortenString(formattedAddress, extraShort);\n } catch {\n return address;\n }\n}\n\n/**\n * @internal\n */\nfunction shortenIfAddress(address) {\n let extraShort = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (address && utils.isAddress(address)) {\n return shortenAddress(address, extraShort);\n }\n return address || \"\";\n}\n\n/**\n * @internal\n */\nfunction isEnsName(name) {\n return name?.endsWith(\".eth\");\n}\n\n/**\n * @internal\n */\nfunction isPossibleEVMAddress(address, ignoreEns) {\n if (!address) {\n return false;\n }\n if (isEnsName(address) && !ignoreEns) {\n return true;\n }\n return utils.isAddress(address);\n}\n\n/**\n * Hook that listens to transactions on a given chain for a given address.\n *\n * ```javascript\n * import { useWatchTransactions } from \"@thirdweb-dev/react\"\n * ```\n *\n * @example\n * ```js\n * const transactions = useWatchTransactions({\n * address: \"0x1234\",\n * network: \"ethereum\",\n * });\n * ```\n *\n * @returns an array of {@link Transaction} objects\n */\nfunction useWatchTransactions(watchTransactionParams) {\n const {\n address,\n network,\n sdkOptions,\n // default to 1000, max 10k\n limit: paramLimit = 1000\n } = watchTransactionParams;\n // max limit of 10k transactions to let the array grow to, then we'll start dropping the oldest ones\n const limit = Math.min(paramLimit, 10000);\n const [transactions, setTransactions] = useState([]);\n useEffect(() => {\n if (!address || !network) {\n // cant run yet\n return;\n }\n // since this already returns a function to unsubscribe, we can just return it\n return watchTransactions({\n address,\n network,\n sdkOptions,\n onTransactions: newTransactions => {\n setTransactions(prevTransactions => {\n const mergedTxns = [...newTransactions, ...prevTransactions];\n // only keep the latest transactions\n return mergedTxns.slice(0, limit);\n });\n }\n });\n }, [address, limit, network, sdkOptions]);\n return transactions;\n}\n\nexport { useContractMetadataUpdate as $, ThirdwebConfigProvider as A, useThirdwebConfigContext as B, ThirdwebConnectedWalletProvider as C, useThirdwebConnectedWalletContext as D, useActiveClaimCondition as E, useClaimerProofs as F, useClaimConditions as G, useClaimIneligibilityReasons as H, useActiveClaimConditionForWallet as I, useSetClaimConditions as J, useResetClaimConditions as K, usePrimarySaleRecipient as L, useUpdatePrimarySaleRecipient as M, useRoyaltySettings as N, useUpdateRoyaltySettings as O, usePlatformFees as P, useUpdatePlatformFees as Q, useMetadata as R, useUpdateMetadata as S, ThirdwebThemeContext as T, useContractType as U, contractType as V, useCompilerMetadata as W, compilerMetadata as X, useContract as Y, useContractMetadata as Z, __DEV__ as _, ThirdwebProviderCore as a, useMintToken as a$, useContractEvents as a0, useContractRead as a1, useContractWrite as a2, useUnclaimedNFTs as a3, useClaimedNFTs as a4, useUnclaimedNFTSupply as a5, useClaimedNFTSupply as a6, useBatchesToReveal as a7, useClaimNFT as a8, useLazyMint as a9, useAcceptDirectListingOffer as aA, useExecuteAuctionSale as aB, useOffers as aC, useBuyNow as aD, useBuyDirectListing as aE, useNFT as aF, useNFTs as aG, useTotalCount as aH, useTotalCirculatingSupply as aI, useOwnedNFTs as aJ, useNFTBalance as aK, useMintNFT as aL, useMintNFTSupply as aM, useTransferNFT as aN, useAirdropNFT as aO, useBurnNFT as aP, useSharedMetadata as aQ, useSetSharedMetadata as aR, useAllRoleMembers as aS, useRoleMembers as aT, useIsAddressRole as aU, useSetAllRoleMembers as aV, useGrantRole as aW, useRevokeRole as aX, useTokenSupply as aY, useTokenBalance as aZ, useTokenDecimals as a_, useDelayedRevealLazyMint as aa, useRevealLazyMint as ab, useListing as ac, useDirectListing as ad, useEnglishAuction as ae, useListings as af, useDirectListings as ag, useValidDirectListings as ah, useEnglishAuctions as ai, useValidEnglishAuctions as aj, useListingsCount as ak, useDirectListingsCount as al, useEnglishAuctionsCount as am, useActiveListings as an, useWinningBid as ao, useEnglishAuctionWinningBid as ap, useAuctionWinner as aq, useBidBuffer as ar, useMinimumNextBid as as, useCreateDirectListing as at, useCreateAuctionListing as au, useCancelListing as av, useCancelDirectListing as aw, useCancelEnglishAuction as ax, useMakeBid as ay, useMakeOffer as az, useConnect as b, useClaimToken as b0, useTransferToken as b1, useTransferBatchToken as b2, useBurnToken as b3, useIsAccountDeployed as b4, useAccounts as b5, useCreateAccount as b6, useAccountsForAddress as b7, useAccountSigners as b8, useAddAdmin as b9, useSigner as bA, useSupportedChains as bB, useSupportedWallet as bC, useAppURI as bD, useSetAppURI as bE, useENS as bF, ThirdwebSDKProvider as bG, useSDK as bH, useSDKChainId as bI, invalidateContractAndBalances as bJ, isEnsName as bK, isPossibleEVMAddress as bL, shortenAddress as bM, shortenIfAddress as bN, shortenString as bO, getErcs as bP, getErc1155 as bQ, getErc721 as bR, getErc20 as bS, useWatchTransactions as bT, useRemoveAdmin as ba, useCreateSessionKey as bb, useRevokeSessionKey as bc, useAccountAdmins as bd, useAccountAdminsAndSigners as be, useAuth as bf, useLogin as bg, useLogout as bh, useUser as bi, useSwitchAccount as bj, useEditionDrop as bk, useEdition as bl, useNFTDrop as bm, useMarketplace as bn, useNFTCollection as bo, usePack as bp, useToken as bq, useTokenDrop as br, useVote as bs, useSplit as bt, useMultiwrap as bu, useSignatureDrop as bv, useStorage as bw, useStorageUpload as bx, useNetworkMismatch as by, useReadonlySDK as bz, useConnectionStatus as c, useCreateWalletInstance as d, useDisconnect as e, useSwitchChain as f, useWallets as g, useWalletConfig as h, useSetConnectionStatus as i, useSetConnectedWallet as j, useNetwork as k, useWalletContext as l, usePersonalWalletAddress as m, useWalletConnectHandler as n, useBalance as o, useConnectedWallet as p, useAddress as q, resolveMimeType as r, useChainId as s, useActiveChain as t, useWallet as u, useChain as v, useBalanceForAddress as w, shouldNeverPersistQuery as x, useThirdwebAuthContext as y, ThirdwebAuthProvider as z };\n","import { a2 as hasMatchingAbi, bn as AbiSchema, cz as AmountSchema, aB as getCreate2FactoryAddress, aI as computeDeploymentInfo, az as isContractDeployed, aD as getInitBytecodeWithSalt, bb as BigNumberTransformSchema, b9 as BigNumberSchema, ba as BigNumberishSchema, bd as AddressOrEnsSchema } from './index-924d29a2.browser.esm.js';\nimport { utils, BigNumber } from 'ethers';\nimport invariant from 'tiny-invariant';\nimport { GENERATED_ABI } from '@thirdweb-dev/generated-abis';\nimport { z } from 'zod';\nimport { C as CommonNFTOutput, a as CommonNFTInput, N as NFTInputOrUriSchema } from './setErc20Allowance-5cdb760b.browser.esm.js';\n\n/**\n * @internal\n * @param contractWrapper - The contract wrapper to check\n * @param abi - The abi to check\n * @returns\n */\nfunction matchesPrebuiltAbi(contractWrapper, abi) {\n return hasMatchingAbi(AbiSchema.parse(contractWrapper.abi || []), [abi]);\n}\n\nfunction toEther(amount) {\n return utils.formatEther(amount);\n}\n\nfunction toUnits(amount, decimals) {\n return utils.parseUnits(AmountSchema.parse(amount), decimals);\n}\n\nfunction toDisplayValue(amount, decimals) {\n return utils.formatUnits(amount, decimals);\n}\n\n/**\n *\n * @internal\n * @param provider - The provider to use\n * @param storage - The storage to use\n * @param create2Factory - The create2 factory to use\n */\nasync function computeNativeTokenAddress(provider, storage, create2Factory, clientId, secretKey) {\n if (!create2Factory || create2Factory === \"\") {\n create2Factory = await getCreate2FactoryAddress(provider);\n }\n return (await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"WETH9\"\n }, clientId, secretKey)).transaction.predictedAddress;\n}\n\n/**\n * Deploy a contract at a deterministic address, using Create2 method\n * Address depends on the Create2 factory address.\n *\n * @public\n *\n * @param signer - The signer to use\n * @param bytecode - The bytecode to deploy\n * @param encodedArgs - The encoded constructor args to use\n * @param create2FactoryAddress - The create2 factory address to use\n */\nasync function deployContractDeterministicRaw(signer, bytecode, encodedArgs, create2FactoryAddress, options, predictedAddress) {\n let gasLimit = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 7000000;\n // Check if the implementation contract is already deployed\n invariant(signer.provider, \"Provider required\");\n const contractDeployed = predictedAddress ? await isContractDeployed(predictedAddress, signer.provider) : false;\n if (!contractDeployed) {\n console.debug(`deploying contract via create2 factory at: ${predictedAddress}`);\n const initBytecodeWithSalt = getInitBytecodeWithSalt(bytecode, encodedArgs);\n const tx = {\n to: create2FactoryAddress,\n data: initBytecodeWithSalt\n };\n try {\n await signer.estimateGas(tx);\n } catch (e) {\n console.debug(\"error estimating gas while deploying prebuilt: \", e);\n tx.gasLimit = BigNumber.from(gasLimit);\n }\n await (await signer.sendTransaction(tx)).wait();\n }\n}\n\nfunction getCachedAbiForContract(address) {\n if (address in GENERATED_ABI) {\n return GENERATED_ABI[address];\n }\n return undefined;\n}\n\nlet ProposalState = /*#__PURE__*/function (ProposalState) {\n ProposalState[ProposalState[\"Pending\"] = 0] = \"Pending\";\n ProposalState[ProposalState[\"Active\"] = 1] = \"Active\";\n ProposalState[ProposalState[\"Canceled\"] = 2] = \"Canceled\";\n ProposalState[ProposalState[\"Defeated\"] = 3] = \"Defeated\";\n ProposalState[ProposalState[\"Succeeded\"] = 4] = \"Succeeded\";\n ProposalState[ProposalState[\"Queued\"] = 5] = \"Queued\";\n ProposalState[ProposalState[\"Expired\"] = 6] = \"Expired\";\n ProposalState[ProposalState[\"Executed\"] = 7] = \"Executed\";\n return ProposalState;\n}({});\n\nconst PropertiesInput = /* @__PURE__ */(() => z.object({}).catchall(z.union([BigNumberTransformSchema, z.unknown()])))();\n\n/**\n * @internal\n */\nconst OptionalPropertiesInput = /* @__PURE__ */(() => z.union([z.array(PropertiesInput), PropertiesInput]).optional())();\n\n/**\n * @internal\n */\nconst EditionMetadataOutputSchema = /* @__PURE__ */(() => z.object({\n supply: BigNumberSchema,\n metadata: CommonNFTOutput\n}))();\n\n/**\n * @internal\n */\nconst EditionMetadataWithOwnerOutputSchema = /* @__PURE__ */(() => EditionMetadataOutputSchema.extend({\n owner: z.string(),\n quantityOwned: BigNumberSchema\n}))();\n\n/**\n * @internal\n */\nconst EditionMetadataInputSchema = /* @__PURE__ */(() => z.object({\n supply: BigNumberishSchema,\n metadata: CommonNFTInput\n}))();\n\n/**\n * @internal\n */\nconst EditionMetadataInputOrUriSchema = /* @__PURE__ */(() => z.object({\n supply: BigNumberishSchema,\n metadata: NFTInputOrUriSchema\n}))();\n\n/**\n * @public\n */\n\n/**\n * @public\n */\n\n/**\n * @internal\n */\nconst TokenMintInputSchema = /* @__PURE__ */(() => z.object({\n toAddress: AddressOrEnsSchema,\n amount: AmountSchema\n}))();\n\n/**\n * @public\n */\n\nexport { EditionMetadataOutputSchema as E, OptionalPropertiesInput as O, ProposalState as P, TokenMintInputSchema as T, toUnits as a, toDisplayValue as b, computeNativeTokenAddress as c, deployContractDeterministicRaw as d, EditionMetadataWithOwnerOutputSchema as e, EditionMetadataInputSchema as f, getCachedAbiForContract as g, EditionMetadataInputOrUriSchema as h, matchesPrebuiltAbi as m, toEther as t };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'VisuallyHidden';\n\ntype VisuallyHiddenElement = React.ElementRef;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef;\ninterface VisuallyHiddenProps extends PrimitiveSpanProps {}\n\nconst VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return (\n \n );\n }\n);\n\nVisuallyHidden.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = VisuallyHidden;\n\nexport {\n VisuallyHidden,\n //\n Root,\n};\nexport type { VisuallyHiddenProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slottable } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps

= P & { __scopeTooltip?: Scope };\nconst [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipProvider\n * -----------------------------------------------------------------------------------------------*/\n\nconst PROVIDER_NAME = 'TooltipProvider';\nconst DEFAULT_DELAY_DURATION = 700;\nconst TOOLTIP_OPEN = 'tooltip.open';\n\ntype TooltipProviderContextValue = {\n isOpenDelayed: boolean;\n delayDuration: number;\n onOpen(): void;\n onClose(): void;\n onPointerInTransitChange(inTransit: boolean): void;\n isPointerInTransitRef: React.MutableRefObject;\n disableHoverableContent: boolean;\n};\n\nconst [TooltipProviderContextProvider, useTooltipProviderContext] =\n createTooltipContext(PROVIDER_NAME);\n\ninterface TooltipProviderProps {\n children: React.ReactNode;\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 700\n */\n delayDuration?: number;\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number;\n /**\n * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.\n * @defaultValue false\n */\n disableHoverableContent?: boolean;\n}\n\nconst TooltipProvider: React.FC = (\n props: ScopedProps\n) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children,\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n\n return (\n {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, [])}\n onClose={React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration])}\n isPointerInTransitRef={isPointerInTransitRef}\n onPointerInTransitChange={React.useCallback((inTransit: boolean) => {\n isPointerInTransitRef.current = inTransit;\n }, [])}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n \n );\n};\n\nTooltipProvider.displayName = PROVIDER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\n\nconst TOOLTIP_NAME = 'Tooltip';\n\ntype TooltipContextValue = {\n contentId: string;\n open: boolean;\n stateAttribute: 'closed' | 'delayed-open' | 'instant-open';\n trigger: TooltipTriggerElement | null;\n onTriggerChange(trigger: TooltipTriggerElement | null): void;\n onTriggerEnter(): void;\n onTriggerLeave(): void;\n onOpen(): void;\n onClose(): void;\n disableHoverableContent: boolean;\n};\n\nconst [TooltipContextProvider, useTooltipContext] =\n createTooltipContext(TOOLTIP_NAME);\n\ninterface TooltipProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened. This will\n * override the prop with the same name passed to Provider.\n * @defaultValue 700\n */\n delayDuration?: number;\n /**\n * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.\n * @defaultValue false\n */\n disableHoverableContent?: boolean;\n}\n\nconst Tooltip: React.FC = (props: ScopedProps) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp,\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent =\n disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open) => {\n if (open) {\n providerContext.onOpen();\n\n // as `onChange` is called within a lifecycle method we\n // avoid dispatching via `dispatchDiscreteCustomEvent`.\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open);\n },\n });\n const stateAttribute = React.useMemo(() => {\n return open ? (wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open') : 'closed';\n }, [open]);\n\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n setOpen(false);\n }, [setOpen]);\n\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n }, delayDuration);\n }, [delayDuration, setOpen]);\n\n React.useEffect(() => {\n return () => window.clearTimeout(openTimerRef.current);\n }, []);\n\n return (\n \n {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen])}\n onTriggerLeave={React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.\n window.clearTimeout(openTimerRef.current);\n }\n }, [handleClose, disableHoverableContent])}\n onOpen={handleOpen}\n onClose={handleClose}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n \n \n );\n};\n\nTooltip.displayName = TOOLTIP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TooltipTrigger';\n\ntype TooltipTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipTriggerProps extends PrimitiveButtonProps {}\n\nconst TooltipTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => (isPointerDownRef.current = false), []);\n\n React.useEffect(() => {\n return () => document.removeEventListener('pointerup', handlePointerUp);\n }, [handlePointerUp]);\n\n return (\n \n {\n if (event.pointerType === 'touch') return;\n if (\n !hasPointerMoveOpenedRef.current &&\n !providerContext.isPointerInTransitRef.current\n ) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n })}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener('pointerup', handlePointerUp, { once: true });\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n })}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n onClick={composeEventHandlers(props.onClick, context.onClose)}\n />\n \n );\n }\n);\n\nTooltipTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'TooltipPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef;\ninterface TooltipPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TooltipPortal: React.FC = (props: ScopedProps) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nTooltipPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TooltipContent';\n\ntype TooltipContentElement = TooltipContentImplElement;\ninterface TooltipContentProps extends TooltipContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TooltipContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = 'top', ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n\n return (\n \n {context.disableHoverableContent ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n\ntype Point = { x: number; y: number };\ntype Polygon = Point[];\n\ntype TooltipContentHoverableElement = TooltipContentImplElement;\ninterface TooltipContentHoverableProps extends TooltipContentImplProps {}\n\nconst TooltipContentHoverable = React.forwardRef<\n TooltipContentHoverableElement,\n TooltipContentHoverableProps\n>((props: ScopedProps, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n\n const { trigger, onClose } = context;\n const content = ref.current;\n\n const { onPointerInTransitChange } = providerContext;\n\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n\n const handleCreateGraceArea = React.useCallback(\n (event: PointerEvent, hoverTarget: HTMLElement) => {\n const currentTarget = event.currentTarget as HTMLElement;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, trigger);\n\n trigger.addEventListener('pointerleave', handleTriggerLeave);\n content.addEventListener('pointerleave', handleContentLeave);\n return () => {\n trigger.removeEventListener('pointerleave', handleTriggerLeave);\n content.removeEventListener('pointerleave', handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n const target = event.target as HTMLElement;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener('pointermove', handleTrackPointerGrace);\n return () => document.removeEventListener('pointermove', handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n\n return ;\n});\n\nconst [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] =\n createTooltipContext(TOOLTIP_NAME, { isInside: false });\n\ntype TooltipContentImplElement = React.ElementRef;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipContentImplProps extends Omit {\n /**\n * A more descriptive label for accessibility purpose\n */\n 'aria-label'?: string;\n\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `Tooltip`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n}\n\nconst TooltipContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n 'aria-label': ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n\n // Close this tooltip if another one opens\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n\n // Close the tooltip if the trigger is scrolled\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event: Event) => {\n const target = event.target as HTMLElement;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener('scroll', handleScroll, { capture: true });\n return () => window.removeEventListener('scroll', handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n\n return (\n event.preventDefault()}\n onDismiss={onClose}\n >\n \n {children}\n \n \n {ariaLabel || children}\n \n \n \n \n );\n }\n);\n\nTooltipContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'TooltipArrow';\n\ntype TooltipArrowElement = React.ElementRef;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipArrowProps extends PopperArrowProps {}\n\nconst TooltipArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to\n // prevent issues in positioning the arrow due to the duplicate\n return visuallyHiddenContentContext.isInside ? null : (\n \n );\n }\n);\n\nTooltipArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype Side = NonNullable;\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left';\n case right:\n return 'right';\n case top:\n return 'top';\n case bottom:\n return 'bottom';\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const paddedExitPoints: Point[] = [];\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ];\n}\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nfunction getHull

(points: Readonly>): Array

{\n const newPoints: Array

= points.slice();\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return +1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return +1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nfunction getHullPresorted

(points: Readonly>): Array

{\n if (points.length <= 1) return points.slice();\n\n const upperHull: Array

= [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n\n const lowerHull: Array

= [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n\n if (\n upperHull.length === 1 &&\n lowerHull.length === 1 &&\n upperHull[0].x === lowerHull[0].x &&\n upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\n\nconst Provider = TooltipProvider;\nconst Root = Tooltip;\nconst Trigger = TooltipTrigger;\nconst Portal = TooltipPortal;\nconst Content = TooltipContent;\nconst Arrow = TooltipArrow;\n\nexport {\n createTooltipScope,\n //\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n //\n Provider,\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipPortalProps,\n TooltipContentProps,\n TooltipArrowProps,\n};\n","import { useWallets } from '@thirdweb-dev/react-core';\nimport { useState, useRef, useEffect, useContext, createContext } from 'react';\nimport { t as Input, S as Spacer, T as Text, B as Button, u as useCustomTheme, r as radius, s as spacing, h as fontSize, E as shadow } from './formElements-8021f017.browser.esm.js';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\n\nconst reservedScreens = {\n main: \"main\",\n getStarted: \"getStarted\",\n signIn: \"signIn\"\n};\nconst modalMaxWidthCompact = \"360px\";\nconst modalMaxWidthWide = \"730px\";\nconst wideModalMaxHeight = \"570px\";\nconst compactModalMaxHeight = \"600px\";\nconst modalCloseFadeOutDuration = 250;\nfunction onModalUnmount(cb) {\n setTimeout(cb, modalCloseFadeOutDuration + 100);\n}\n\nconst ScreenContext = /* @__PURE__ */createContext(undefined);\nfunction useScreen() {\n const walletConfigs = useWallets();\n const initialScreen = (walletConfigs.length === 1 && !walletConfigs[0]?.selectUI ? walletConfigs[0] : reservedScreens.main) || reservedScreens.main;\n const [screen, setScreen] = useState(initialScreen);\n const prevInitialScreen = useRef(initialScreen);\n\n // when the initial screen changes, reset the screen to the initial screen ( if the modal is closed )\n useEffect(() => {\n if (initialScreen !== prevInitialScreen.current) {\n prevInitialScreen.current = initialScreen;\n setScreen(initialScreen);\n }\n }, [initialScreen]);\n return {\n screen,\n setScreen,\n initialScreen\n };\n}\nfunction useScreenContext() {\n const screen = useContext(ScreenContext);\n if (!screen) {\n throw new Error(\"useScreenContext must be used within a \");\n }\n return screen;\n}\n\nconst emailIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODY0OSkiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjQ5KSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODY0OSkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzM1ODlfODY0OSkiPgo8cGF0aCBkPSJNMjQgMTQuMjVDMTguNjE3MiAxNC4yNSAxNC4yNSAxOC42MTcyIDE0LjI1IDI0QzE0LjI1IDI5LjM4MjggMTguNjE3MiAzMy43NSAyNCAzMy43NUMyNC44OTg4IDMzLjc1IDI1LjYyNSAzNC40NzYyIDI1LjYyNSAzNS4zNzVDMjUuNjI1IDM2LjI3MzggMjQuODk4OCAzNyAyNCAzN0MxNi44MTk1IDM3IDExIDMxLjE4MDUgMTEgMjRDMTEgMTYuODE5NSAxNi44MTk1IDExIDI0IDExQzMxLjE4MDUgMTEgMzcgMTYuODE5NSAzNyAyNFYyNS42MjVDMzcgMjguMzE2NCAzNC44MTY0IDMwLjUgMzIuMTI1IDMwLjVDMzAuNjM3MSAzMC41IDI5LjMwMTYgMjkuODI5NyAyOC40MDc4IDI4Ljc3ODVDMjcuMjUgMjkuODQ0OSAyNS43MDEyIDMwLjUgMjQgMzAuNUMyMC40MDk4IDMwLjUgMTcuNSAyNy41OTAyIDE3LjUgMjRDMTcuNSAyMC40MDk4IDIwLjQwOTggMTcuNSAyNCAxNy41QzI1LjQxNjggMTcuNSAyNi43MjcgMTcuOTUyIDI3Ljc5MzQgMTguNzIzOEMyOC4wODI4IDE4LjQ2OTkgMjguNDU4NiAxOC4zMTI1IDI4Ljg3NSAxOC4zMTI1QzI5Ljc3MzggMTguMzEyNSAzMC41IDE5LjAzODcgMzAuNSAxOS45Mzc1VjI1LjYyNUMzMC41IDI2LjUyMzggMzEuMjI2MiAyNy4yNSAzMi4xMjUgMjcuMjVDMzMuMDIzOCAyNy4yNSAzMy43NSAyNi41MjM4IDMzLjc1IDI1LjYyNVYyNEMzMy43NSAxOC42MTcyIDI5LjM4MjggMTQuMjUgMjQgMTQuMjVaTTI3LjI1IDI0QzI3LjI1IDIzLjEzOCAyNi45MDc2IDIyLjMxMTQgMjYuMjk4MSAyMS43MDE5QzI1LjY4ODYgMjEuMDkyNCAyNC44NjIgMjAuNzUgMjQgMjAuNzVDMjMuMTM4IDIwLjc1IDIyLjMxMTQgMjEuMDkyNCAyMS43MDE5IDIxLjcwMTlDMjEuMDkyNCAyMi4zMTE0IDIwLjc1IDIzLjEzOCAyMC43NSAyNEMyMC43NSAyNC44NjIgMjEuMDkyNCAyNS42ODg2IDIxLjcwMTkgMjYuMjk4MUMyMi4zMTE0IDI2LjkwNzYgMjMuMTM4IDI3LjI1IDI0IDI3LjI1QzI0Ljg2MiAyNy4yNSAyNS42ODg2IDI2LjkwNzYgMjYuMjk4MSAyNi4yOTgxQzI2LjkwNzYgMjUuNjg4NiAyNy4yNSAyNC44NjIgMjcuMjUgMjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8zNTg5Xzg2NDkiIHgxPSIyNS41IiB5MT0iLTYuMjk1NzJlLTA2IiB4Mj0iMzAuMjAxNiIgeTI9IjQ3LjUzNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODM1OEJBIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzdCMUNGNyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfMzU4OV84NjQ5IiB4MT0iMjUuNTYyNSIgeTE9Ii0xLjAwMDAxIiB4Mj0iMzAuNDYiIHkyPSI0OC41MTU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMzU4OV84NjQ5Ij4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiByeD0iOCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPGNsaXBQYXRoIGlkPSJjbGlwMV8zNTg5Xzg2NDkiPgo8cmVjdCB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMSAxMSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K\";\nconst phoneIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODYwMikiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjAyKSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODYwMikiLz4KPHBhdGggZD0iTTE4Ljg2MjIgMjYuODY0NkwxOS41MTk0IDI3LjUxODlDMTkuNTE5NCAyNy41MTg5IDIxLjA4MzcgMjkuMDczMSAyNS4zNTIxIDI0LjgyOTNDMjkuNjIwNSAyMC41ODU1IDI4LjA1NjEgMTkuMDMxMyAyOC4wNTYxIDE5LjAzMTNMMjcuNjQzIDE4LjYxODFDMjYuNjIxOCAxNy42MDQxIDI2LjUyNSAxNS45NzQ4IDI3LjQxNjIgMTQuNzg0NkwyOS4yMzYyIDEyLjM1MzVDMzAuMzM5OCAxMC44ODAyIDMyLjQ3MDQgMTAuNjg1MiAzMy43MzQzIDExLjk0MTlMMzYuMDAyMSAxNC4xOTUyQzM2LjYyNzUgMTQuODE5MiAzNy4wNDY0IDE1LjYyNTIgMzYuOTk1OSAxNi41MjA4QzM2Ljg2NTkgMTguODEzMSAzNS44Mjg4IDIzLjc0MzEgMzAuMDQ1MSAyOS40OTQ5QzIzLjkxMDUgMzUuNTkzNCAxOC4xNTQ0IDM1LjgzNjEgMTUuODAxNCAzNS42MTY1QzE1LjA1NiAzNS41NDcyIDE0LjQwODkgMzUuMTY4NyAxMy44ODc0IDM0LjY0ODdMMTEuODM2MyAzMi42MDkyQzEwLjQ0OTYgMzEuMjMyNiAxMC44Mzk2IDI4Ljg3MDkgMTIuNjEzNCAyNy45MDc0TDE1LjM3MjMgMjYuNDA2N0MxNi41MzY2IDI1Ljc3NCAxNy45NTIxIDI1Ljk2MDMgMTguODYyMiAyNi44NjQ2WiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzM1ODlfODYwMiIgeDE9IjI1LjUiIHkxPSItNi4yOTU3MmUtMDYiIHgyPSIzMC4yMDE2IiB5Mj0iNDcuNTM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8zNTg5Xzg2MDIiIHgxPSIyNS41NjI1IiB5MT0iLTEuMDAwMDEiIHgyPSIzMC40NiIgeTI9IjQ4LjUxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzgzNThCQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3QjFDRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zNTg5Xzg2MDIiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=\";\nconst emailAndPhoneIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM2ODVfNjcwMikiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzY4NV82NzAyKSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM2ODVfNjcwMikiLz4KPHBhdGggZD0iTTE3IDExQzEzLjY4NzUgMTEgMTEgMTMuNjg3NSAxMSAxN0MxMSAyMC4zMTI1IDEzLjY4NzUgMjMgMTcgMjNDMTcuNTUzMSAyMyAxOCAyMy40NDY5IDE4IDI0QzE4IDI0LjU1MzEgMTcuNTUzMSAyNSAxNyAyNUMxMi41ODEzIDI1IDkgMjEuNDE4NyA5IDE3QzkgMTIuNTgxMyAxMi41ODEzIDkgMTcgOUMyMS40MTg3IDkgMjUgMTIuNTgxMyAyNSAxN1YxOEMyNSAxOS42NTYyIDIzLjY1NjIgMjEgMjIgMjFDMjEuMDg0NCAyMSAyMC4yNjI1IDIwLjU4NzUgMTkuNzEyNSAxOS45NDA2QzE5IDIwLjU5NjkgMTguMDQ2OSAyMSAxNyAyMUMxNC43OTA2IDIxIDEzIDE5LjIwOTQgMTMgMTdDMTMgMTQuNzkwNiAxNC43OTA2IDEzIDE3IDEzQzE3Ljg3MTkgMTMgMTguNjc4MSAxMy4yNzgxIDE5LjMzNDQgMTMuNzUzMUMxOS41MTI1IDEzLjU5NjkgMTkuNzQzOCAxMy41IDIwIDEzLjVDMjAuNTUzMSAxMy41IDIxIDEzLjk0NjkgMjEgMTQuNVYxOEMyMSAxOC41NTMxIDIxLjQ0NjkgMTkgMjIgMTlDMjIuNTUzMSAxOSAyMyAxOC41NTMxIDIzIDE4VjE3QzIzIDEzLjY4NzUgMjAuMzEyNSAxMSAxNyAxMVpNMTkgMTdDMTkgMTYuNDY5NiAxOC43ODkzIDE1Ljk2MDkgMTguNDE0MiAxNS41ODU4QzE4LjAzOTEgMTUuMjEwNyAxNy41MzA0IDE1IDE3IDE1QzE2LjQ2OTYgMTUgMTUuOTYwOSAxNS4yMTA3IDE1LjU4NTggMTUuNTg1OEMxNS4yMTA3IDE1Ljk2MDkgMTUgMTYuNDY5NiAxNSAxN0MxNSAxNy41MzA0IDE1LjIxMDcgMTguMDM5MSAxNS41ODU4IDE4LjQxNDJDMTUuOTYwOSAxOC43ODkzIDE2LjQ2OTYgMTkgMTcgMTlDMTcuNTMwNCAxOSAxOC4wMzkxIDE4Ljc4OTMgMTguNDE0MiAxOC40MTQyQzE4Ljc4OTMgMTguMDM5MSAxOSAxNy41MzA0IDE5IDE3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTI3LjgzODQgMzMuMjY0NEwyOC4yNDI5IDMzLjY5MDdDMjguMjQyOSAzMy42OTA3IDI5LjIwNTUgMzQuNzAzNCAzMS44MzIyIDMxLjkzODNDMzQuNDU4OCAyOS4xNzMxIDMzLjQ5NjIgMjguMTYwNCAzMy40OTYyIDI4LjE2MDRMMzMuMjQxOSAyNy44OTEyQzMyLjYxMzUgMjcuMjMwNSAzMi41NTM5IDI2LjE2ODkgMzMuMTAyNCAyNS4zOTM0TDM0LjIyMjQgMjMuODA5NEMzNC45MDE1IDIyLjg0OTQgMzYuMjEyNiAyMi43MjIzIDM2Ljk5MDQgMjMuNTQxMkwzOC4zODU5IDI1LjAwOTRDMzguNzcwOCAyNS40MTYgMzkuMDI4NiAyNS45NDExIDM4Ljk5NzUgMjYuNTI0N0MzOC45MTc1IDI4LjAxODMgMzguMjc5MiAzMS4yMzA1IDM0LjcyMDIgMzQuOTc4M0MzMC45NDUxIDM4Ljk1MTkgMjcuNDAyOSAzOS4xMSAyNS45NTQ5IDM4Ljk2NjlDMjUuNDk2MiAzOC45MjE4IDI1LjA5OCAzOC42NzUyIDI0Ljc3NzEgMzguMzM2M0wyMy41MTQ5IDM3LjAwNzRDMjIuNjYxNiAzNi4xMTA1IDIyLjkwMTYgMzQuNTcxNyAyMy45OTMxIDMzLjk0MzlMMjUuNjkwOSAzMi45NjZDMjYuNDA3MyAzMi41NTM4IDI3LjI3ODQgMzIuNjc1MiAyNy44Mzg0IDMzLjI2NDRaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzY4NV82NzAyIiB4MT0iMjUuNSIgeTE9Ii02LjI5NTcyZS0wNiIgeDI9IjMwLjIwMTYiIHkyPSI0Ny41MzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzgzNThCQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3QjFDRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzM2ODVfNjcwMiIgeDE9IjI1LjU2MjUiIHkxPSItMS4wMDAwMSIgeDI9IjMwLjQ2IiB5Mj0iNDguNTE1NiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODM1OEJBIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzdCMUNGNyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzM2ODVfNjcwMiI+CjxyZWN0IHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgcng9IjgiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\";\nconst smartWalletIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xXzkxKSIvPgo8cGF0aCBkPSJNMzkuOTk2OSAxOEw0MC4yMzMzIDE4LjAxNTZMNDAuMzUxMyAxOC4wMzMzTDQwLjQ3MzYgMTguMDYyMkw0MC42OTU4IDE4LjEzNzhDNDAuODQ5NCAxOC4yMDA2IDQwLjk5NTQgMTguMjg0MiA0MS4xMzA1IDE4LjM4NjdMNDEuMzM4NyAxOC41Njg5TDQxLjg0OTMgMTkuMDUzM0M0NS44ODkxIDIyLjc3NjggNTAuOTk0NyAyNC43NzYyIDU2LjI0NTggMjQuNjkxMUw1Ni45MzA3IDI0LjY2ODlDNTcuMzc4MyAyNC42NDYyIDU3LjgyIDI0Ljc5MDkgNTguMTg0OSAyNS4wNzk4QzU4LjU0OTggMjUuMzY4NyA1OC44MTY3IDI1Ljc4NSA1OC45NDMxIDI2LjI2MjJDNTkuOTI3MSAyOS45NzY5IDYwLjIyODMgMzMuODczMSA1OS44Mjg3IDM3LjcxOTRDNTkuNDI4OSA0MS41NjU4IDU4LjMzNjcgNDUuMjgzNiA1Ni42MTY1IDQ4LjY1MjNDNTQuODk2NSA1Mi4wMjA3IDUyLjU4MzYgNTQuOTcxNCA0OS44MTU2IDU3LjMyODVDNDcuMDQ3NiA1OS42ODU2IDQzLjg4MDkgNjEuNDAxMiA0MC41MDM2IDYyLjM3MzRDNDAuMTc0IDYyLjQ2ODMgMzkuODI4IDYyLjQ2ODMgMzkuNDk4MiA2Mi4zNzM0QzM2LjEyMDkgNjEuNDAxNCAzMi45NTM4IDU5LjY4NiAzMC4xODU2IDU3LjMyODlDMjcuNDE3NiA1NC45NzE4IDI1LjEwNDUgNTIuMDIxNCAyMy4zODQyIDQ4LjY1MjlDMjEuNjYzOCA0NS4yODQzIDIwLjU3MTMgNDEuNTY2MiAyMC4xNzE1IDM3LjcxOThDMTkuNzcxNyAzMy44NzM0IDIwLjA3MjcgMjkuOTc2OSAyMS4wNTY3IDI2LjI2MjJDMjEuMTgzMSAyNS43ODUgMjEuNDUwMSAyNS4zNjg3IDIxLjgxNSAyNS4wNzk4QzIyLjE3OTkgMjQuNzkwOSAyMi42MjE1IDI0LjY0NjIgMjMuMDY5MyAyNC42Njg5QzI4LjU1MTMgMjQuOTQ3IDMzLjkyOTMgMjIuOTQ0NCAzOC4xNTA3IDE5LjA1MzNMMzguNjc3MyAxOC41NTMzTDM4Ljg2OTYgMTguMzg2N0MzOS4wMDQ3IDE4LjI4NDIgMzkuMTUwNSAxOC4yMDA2IDM5LjMwNCAxOC4xMzc4TDM5LjUyODIgMTguMDYyMkMzOS42MDY5IDE4LjA0MTIgMzkuNjg2NSAxOC4wMjU2IDM5Ljc2NjcgMTguMDE1NkwzOS45OTY5IDE4Wk00MC4wMDA5IDMzLjU1NTZDMzguOTkwNSAzMy41NTUxIDM4LjAxNzMgMzMuOTc4NyAzNy4yNzY1IDM0Ljc0MTFDMzYuNTM1NiAzNS41MDM2IDM2LjA4MTYgMzYuNTQ4NSAzNi4wMDU4IDM3LjY2NjdMMzUuOTk1OCAzOEwzNi4wMDU4IDM4LjMzMzRDMzYuMDU1MSAzOS4wNTQ3IDM2LjI2MjUgMzkuNzUxOCAzNi42MDk4IDQwLjM2NEMzNi45NTY5IDQwLjk3NjIgMzcuNDMzNiA0MS40ODUxIDM3Ljk5ODUgNDEuODQ2N1Y0NS43Nzc4TDM4LjAxMjUgNDYuMDM3OEMzOC4wNzI3IDQ2LjYwMDMgMzguMzI0MiA0Ny4xMTU4IDM4LjcxNTYgNDcuNDc5NEMzOS4xMDcxIDQ3Ljg0MjkgMzkuNjA4NyA0OC4wMjY5IDQwLjExODIgNDcuOTkzOEM0MC42Mjc4IDQ3Ljk2MDUgNDEuMTA2NyA0Ny43MTI3IDQxLjQ1NzEgNDcuMzAwOUM0MS44MDc2IDQ2Ljg4ODkgNDIuMDAyOSA0Ni4zNDQzIDQyLjAwMzYgNDUuNzc3OEw0Mi4wMDU2IDQxLjg0ODlDNDIuNzY5MSA0MS4zNTk2IDQzLjM2NiA0MC42MDQyIDQzLjcwMzQgMzkuNzAwMkM0NC4wNDA3IDM4Ljc5NiA0NC4wOTk2IDM3Ljc5MzggNDMuODcxMSAzNi44NDg3QzQzLjY0MjcgMzUuOTAzNiA0My4xMzk2IDM1LjA2ODUgNDIuNDM5OCAzNC40NzMxQzQxLjc0IDMzLjg3NzYgNDAuODgyNyAzMy41NTUxIDQwLjAwMDkgMzMuNTU1NloiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcl8xXzkxKSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzFfOTEiIHgxPSI0MCIgeTE9IjAiIHgyPSI0MCIgeTI9IjgwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU2QkQiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0MyMEY0Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xXzkxIiB4MT0iNDAiIHkxPSIxOCIgeDI9IjQwIiB5Mj0iNjIuNDQ0NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFMUQ4RkIiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K\";\n\nfunction InputSelectionUI(props) {\n const [input, setInput] = useState(\"\");\n const [error, setError] = useState();\n const [showError, setShowError] = useState(false);\n const handleSelect = () => {\n setShowError(true);\n if (!input || !!error) {\n return;\n }\n props.onSelect(input);\n };\n const renderingError = showError && !!error || !input && !!props.emptyErrorMessage && showError;\n return /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(\"div\", {\n style: {\n position: \"relative\"\n },\n children: /*#__PURE__*/jsx(Input, {\n tabIndex: -1,\n placeholder: props.placeholder,\n variant: \"outline\",\n type: props.type,\n name: props.name,\n value: input,\n \"data-error\": renderingError,\n onChange: e => {\n setInput(e.target.value);\n if (props.errorMessage) {\n setError(props.errorMessage(e.target.value));\n } else {\n setError(undefined);\n }\n },\n onKeyDown: e => {\n if (e.key === \"Enter\") {\n handleSelect();\n }\n }\n })\n }), showError && error && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: error\n })]\n }), !(showError && error) && !input && props.emptyErrorMessage && showError && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: props.emptyErrorMessage\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Button, {\n variant: \"accent\",\n onClick: handleSelect,\n fullWidth: true,\n children: props.submitButtonText\n })]\n });\n}\n\nconst googleIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=\";\nconst facebookIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+\";\nconst twitterIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgaWQ9InR3aXR0ZXIiPjxwYXRoIGZpbGw9IiMwM0E5RjQiIGQ9Ik0xNiAzLjUzOWE2LjgzOSA2LjgzOSAwIDAgMS0xLjg5LjUxOCAzLjI2MiAzLjI2MiAwIDAgMCAxLjQ0My0xLjgxMyA2LjU1NSA2LjU1NSAwIDAgMS0yLjA4Ljc5NCAzLjI4IDMuMjggMCAwIDAtNS42NzQgMi4yNDNjMCAuMjYuMDIyLjUxLjA3Ni43NDhhOS4yODQgOS4yODQgMCAwIDEtNi43NjEtMy40MzEgMy4yODUgMy4yODUgMCAwIDAgMS4wMDggNC4zODRBMy4yNCAzLjI0IDAgMCAxIC42NCA2LjU3OHYuMDM2YTMuMjk1IDMuMjk1IDAgMCAwIDIuNjI4IDMuMjIzIDMuMjc0IDMuMjc0IDAgMCAxLS44Ni4xMDggMi45IDIuOSAwIDAgMS0uNjIxLS4wNTYgMy4zMTEgMy4zMTEgMCAwIDAgMy4wNjUgMi4yODUgNi41OSA2LjU5IDAgMCAxLTQuMDY3IDEuMzk5Yy0uMjY5IDAtLjUyNy0uMDEyLS43ODUtLjA0NUE5LjIzNCA5LjIzNCAwIDAgMCA1LjAzMiAxNWM2LjAzNiAwIDkuMzM2LTUgOS4zMzYtOS4zMzQgMC0uMTQ1LS4wMDUtLjI4NS0uMDEyLS40MjRBNi41NDQgNi41NDQgMCAwIDAgMTYgMy41Mzl6Ij48L3BhdGg+PC9zdmc+\";\nconst githubIconUri = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwXzIpIj4KPHBhdGggZD0iTTcuOTk5IDBDMy41ODIwMSAwIDQuNjE2NDhlLTA2IDMuNTk2IDQuNjE2NDhlLTA2IDguMDMyQy0wLjAwMTggOS43MTU1NSAwLjUyNTUxOSAxMS4zNTcxIDEuNTA3NDQgMTIuNzI0NkMyLjQ4OTM1IDE0LjA5MjIgMy44NzYyMSAxNS4xMTY2IDUuNDcyIDE1LjY1M0M1Ljg3MiAxNS43MjcgNi4wMTggMTUuNDc5IDYuMDE4IDE1LjI2NkM2LjAxOCAxNS4wNzUgNi4wMTEgMTQuNTcgNi4wMDcgMTMuOUMzLjc4MiAxNC4zODUgMy4zMTIgMTIuODIzIDMuMzEyIDEyLjgyM0MyLjk0OSAxMS44OTUgMi40MjQgMTEuNjQ4IDIuNDI0IDExLjY0OEMxLjY5NyAxMS4xNSAyLjQ3OCAxMS4xNiAyLjQ3OCAxMS4xNkMzLjI4MSAxMS4yMTcgMy43MDMgMTEuOTg4IDMuNzAzIDExLjk4OEM0LjQxNyAxMy4yMTUgNS41NzYgMTIuODYxIDYuMDMyIDEyLjY1NUM2LjEwNCAxMi4xMzYgNi4zMTEgMTEuNzgyIDYuNTQgMTEuNTgxQzQuNzY0IDExLjM3OCAyLjg5NiAxMC42ODkgMi44OTYgNy42MTJDMi44OTYgNi43MzUgMy4yMDggNi4wMTggMy43MiA1LjQ1NkMzLjYzNyA1LjI1MyAzLjM2MyA0LjQzNiAzLjc5OCAzLjMzMUMzLjc5OCAzLjMzMSA0LjQ3IDMuMTE1IDUuOTk4IDQuMTU0QzYuNjUwNzUgMy45NzU2MSA3LjMyNDMyIDMuODg0ODIgOC4wMDEwMSAzLjg4NEM4LjY3NzcyIDMuODg1MzQgOS4zNTEyNiAzLjk3NjQ3IDEwLjAwNCA0LjE1NUMxMS41MzEgMy4xMTYgMTIuMjAyIDMuMzMyIDEyLjIwMiAzLjMzMkMxMi42MzggNC40MzggMTIuMzY0IDUuMjU0IDEyLjI4MiA1LjQ1N0MxMi43OTUgNi4wMTkgMTMuMTA0IDYuNzM2IDEzLjEwNCA3LjYxM0MxMy4xMDQgMTAuNjk4IDExLjIzNCAxMS4zNzcgOS40NTIgMTEuNTc2QzkuNzM5IDExLjgyNCA5Ljk5NSAxMi4zMTQgOS45OTUgMTMuMDYzQzkuOTk1IDE0LjEzNyA5Ljk4NSAxNS4wMDMgOS45ODUgMTUuMjY2QzkuOTg1IDE1LjQ4MSAxMC4xMjkgMTUuNzMxIDEwLjUzNSAxNS42NTJDMTIuMTI5MiAxNS4xMTQzIDEzLjUxNDQgMTQuMDg5NSAxNC40OTQ5IDEyLjcyMjNDMTUuNDc1NSAxMS4zNTUxIDE2LjAwMTkgOS43MTQ0OCAxNiA4LjAzMkMxNiAzLjU5NiAxMi40MTggMCA3Ljk5OSAwWiIgZmlsbD0iIzhCOEI4QiIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwXzIiPgo8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\";\nconst appleIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDM4IiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA0OTYuMjU1IDYwOC43MjgiIGlkPSJhcHBsZSI+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTI3My44MSA1Mi45NzNDMzEzLjgwNi4yNTcgMzY5LjQxIDAgMzY5LjQxIDBzOC4yNzEgNDkuNTYyLTMxLjQ2MyA5Ny4zMDZjLTQyLjQyNiA1MC45OC05MC42NDkgNDIuNjM4LTkwLjY0OSA0Mi42MzhzLTkuMDU1LTQwLjA5NCAyNi41MTItODYuOTcxek0yNTIuMzg1IDE3NC42NjJjMjAuNTc2IDAgNTguNzY0LTI4LjI4NCAxMDguNDcxLTI4LjI4NCA4NS41NjIgMCAxMTkuMjIyIDYwLjg4MyAxMTkuMjIyIDYwLjg4M3MtNjUuODMzIDMzLjY1OS02NS44MzMgMTE1LjMzMWMwIDkyLjEzMyA4Mi4wMSAxMjMuODg1IDgyLjAxIDEyMy44ODVzLTU3LjMyOCAxNjEuMzU3LTEzNC43NjIgMTYxLjM1N2MtMzUuNTY1IDAtNjMuMjE1LTIzLjk2Ny0xMDAuNjg4LTIzLjk2Ny0zOC4xODggMC03Ni4wODQgMjQuODYxLTEwMC43NjYgMjQuODYxQzg5LjMzIDYwOC43MyAwIDQ1NS42NjYgMCAzMzIuNjI4YzAtMTIxLjA1MiA3NS42MTItMTg0LjU1NCAxNDYuNTMzLTE4NC41NTQgNDYuMTA1IDAgODEuODgzIDI2LjU4OCAxMDUuODUyIDI2LjU4OHoiPjwvcGF0aD48L3N2Zz4=\";\nconst linkedinIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0MCIgaWQ9ImxpbmtlZGluIj48cGF0aCBmaWxsPSIjMDA3RUJCIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NCA0MGgtOS43MjVWMjUuOTM4YzAtMy42OC0xLjUyLTYuMTkzLTQuODY2LTYuMTkzLTIuNTU4IDAtMy45ODEgMS42OTYtNC42NDMgMy4zMy0uMjQ5LjU4Ni0uMjEgMS40MDMtLjIxIDIuMjJWNDBoLTkuNjM0cy4xMjQtMjQuOTA5IDAtMjcuMTczaDkuNjM0djQuMjY1Yy41Ny0xLjg2NSAzLjY0OC00LjUyNiA4LjU2LTQuNTI2QzM5LjIxMSAxMi41NjYgNDQgMTYuNDc0IDQ0IDI0Ljg5MVY0MHpNNS4xOCA5LjQyOGgtLjA2M0MyLjAxMyA5LjQyOCAwIDcuMzUxIDAgNC43MTggMCAyLjAzNCAyLjA3MiAwIDUuMjM5IDBjMy4xNjQgMCA1LjExIDIuMDI5IDUuMTcxIDQuNzEgMCAyLjYzMy0yLjAwNyA0LjcxOC01LjIzIDQuNzE4em0tNC4wNyAzLjM5OWg4LjU3NlY0MEgxLjExVjEyLjgyN3oiPjwvcGF0aD48L3N2Zz4=\";\nconst bitbucketIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImJpdGJ1Y2tldCI+PHBhdGggZmlsbD0iIzI2ODBGOCIgZD0iTTQuMjk3IDIzaDE1LjY1OWEuNzc2Ljc3NiAwIDAgMCAuNzY5LS42NTdMMjMuOTkgMS45MTZhLjc4Ljc4IDAgMCAwLS42MzUtLjg5NyAxLjEzIDEuMTMgMCAwIDAtLjEzNC0uMDA5TC43NzkgMUEuNzc1Ljc3NSAwIDAgMCAwIDEuNzc1YzAgLjA0NC4wMDUuMDkzLjAwOS4xMzdsMy4yNjUgMjAuMTk2Yy4wODIuNTA5LjUxNS44ODcgMS4wMjMuODkyek0xNS43MzYgOC4zOTFsLTEuMjExIDcuMjA1aC01TDguMTczIDguMzkxaDcuNTYzeiI+PC9wYXRoPjwvc3ZnPg==\";\nconst gitlabIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjIzMDUiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCAyNTYgMjM2IiBpZD0iZ2l0bGFiIj48cGF0aCBmaWxsPSIjRTI0MzI5IiBkPSJNMTI4LjA3NSAyMzYuMDc1bDQ3LjEwNC0xNDQuOTdIODAuOTdsNDcuMTA0IDE0NC45N3oiPjwvcGF0aD48cGF0aCBmaWxsPSIjRkM2RDI2IiBkPSJNMTI4LjA3NSAyMzYuMDc0TDgwLjk3IDkxLjEwNEgxNC45NTZsMTEzLjExOSAxNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0ZDQTMyNiIgZD0iTTE0Ljk1NiA5MS4xMDRMLjY0MiAxMzUuMTZhOS43NTIgOS43NTIgMCAwIDAgMy41NDIgMTAuOTAzbDEyMy44OTEgOTAuMDEyLTExMy4xMi0xNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0UyNDMyOSIgZD0iTTE0Ljk1NiA5MS4xMDVIODAuOTdMNTIuNjAxIDMuNzljLTEuNDYtNC40OTMtNy44MTYtNC40OTItOS4yNzUgMGwtMjguMzcgODcuMzE1eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNGQzZEMjYiIGQ9Ik0xMjguMDc1IDIzNi4wNzRsNDcuMTA0LTE0NC45N2g2Ni4wMTVsLTExMy4xMiAxNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0ZDQTMyNiIgZD0iTTI0MS4xOTQgOTEuMTA0bDE0LjMxNCA0NC4wNTZhOS43NTIgOS43NTIgMCAwIDEtMy41NDMgMTAuOTAzbC0xMjMuODkgOTAuMDEyIDExMy4xMTktMTQ0Ljk3eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNFMjQzMjkiIGQ9Ik0yNDEuMTk0IDkxLjEwNWgtNjYuMDE1bDI4LjM3LTg3LjMxNWMxLjQ2LTQuNDkzIDcuODE2LTQuNDkyIDkuMjc1IDBsMjguMzcgODcuMzE1eiI+PC9wYXRoPjwvc3ZnPg==\";\nconst twitchIconUri = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDExMS43ODY2NyAxMjcuMzg2NjciCiAgIGhlaWdodD0iMTI3LjM4NjY3IgogICB3aWR0aD0iMTExLjc4NjY3IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmczMzU1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJUd2l0Y2hfbG9nby5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xICgzYmY1YWUwZDI1LCAyMDIxLTA5LTIwKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICBpZD0iZGVmczI5Ij4KICAgIAogICAgCiAgPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgaWQ9Im5hbWVkdmlldzI3IgogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iNC4xOTkyMjg0IgogICBpbmtzY2FwZTpjeD0iLTUwLjYwNDUzNSIKICAgaW5rc2NhcGU6Y3k9IjE0MC4zODI5MyIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMzg3IgogICBpbmtzY2FwZTp3aW5kb3cteD0iMTkxMiIKICAgaW5rc2NhcGU6d2luZG93LXk9Ii04IgogICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmczMzU1IiAvPgogIDxnCiAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywxMDEuMzkzMzMsNjcuNTg5MzMyKSIKICAgaWQ9ImczMzY1Ij4KICAgICAgPHBhdGgKICAgaWQ9InBhdGgzMzY3IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICBkPSJtIDAsMCAtMTMuNjUyLC0xMy42NTEgaCAtMjEuNDQ1IGwgLTExLjY5OSwtMTEuNjk3IHYgMTEuNjk3IEggLTY0LjM0NCBWIDQyLjg5MyBIIDAgWiBtIC03Mi4xNDYsNTAuNjkyIC0zLjg5OSwtMTUuNTk5IHYgLTcwLjE5IGggMTcuNTUgdiAtOS43NTEgaCA5Ljc0NiBsIDkuNzUyLDkuNzUxIGggMTUuNTk2IEwgNy43OTUsLTMuOTA1IHYgNTQuNTk3IHoiIC8+CiAgICA8L2c+PHBhdGgKICAgaWQ9InBhdGgzMzY5IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjMzMzMzIgogICBkPSJtIDQ0LjE5NzMzMSw2Mi4zOTQyNjYgaCAxMC4zOTg2NyBWIDMxLjE5MjkzMyBoIC0xMC4zOTg2NyB6IG0gMjguNTk0NjcsMCBoIDEwLjM5ODY2IFYgMzEuMTkyOTMzIGggLTEwLjM5ODY2IHoiIC8+Cjwvc3ZnPgo=\";\nconst discordIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBpZD0iZGlzY29yZCI+PHBhdGggZmlsbD0iIzY2NjVkMiIgZD0iTTg1LjIyLDI0Ljk1OGMtMTEuNDU5LTguNTc1LTIyLjQzOC04LjMzNC0yMi40MzgtOC4zMzRsLTEuMTIyLDEuMjgyCgkJCQljMTMuNjIzLDQuMDg3LDE5Ljk1NCwxMC4wOTcsMTkuOTU0LDEwLjA5N2MtMTkuNDkxLTEwLjczMS00NC4zMTctMTAuNjU0LTY0LjU5LDBjMCwwLDYuNTcxLTYuMzMxLDIwLjk5Ni0xMC40MThsLTAuODAxLTAuOTYyCgkJCQljMCwwLTEwLjg5OS0wLjI0LTIyLjQzOCw4LjMzNGMwLDAtMTEuNTQsMjAuNzU1LTExLjU0LDQ2LjMxOWMwLDAsNi43MzIsMTEuNTQsMjQuNDQyLDEyLjEwMWMwLDAsMi45NjUtMy41MjYsNS4zNjktNi41NzEKCQkJCWMtMTAuMTc3LTMuMDQ1LTE0LjAyNC05LjM3Ni0xNC4wMjQtOS4zNzZjNi4zOTQsNC4wMDEsMTIuODU5LDYuNTA1LDIwLjkxNiw4LjA5NGMxMy4xMDgsMi42OTgsMjkuNDEzLTAuMDc2LDQxLjU5MS04LjA5NAoJCQkJYzAsMC00LjAwNyw2LjQ5MS0xNC41MDUsOS40NTZjMi40MDQsMi45NjUsNS4yODksNi40MTEsNS4yODksNi40MTFjMTcuNzEtMC41NjEsMjQuNDQxLTEyLjEwMSwyNC40NDEtMTIuMDIKCQkJCUM5Ni43NTksNDUuNzEzLDg1LjIyLDI0Ljk1OCw4NS4yMiwyNC45NTh6IE0zNS4wNTUsNjMuODI0Yy00LjQ4OCwwLTguMTc0LTMuOTI3LTguMTc0LTguODE1CgkJCQljMC4zMjgtMTEuNzA3LDE2LjEwMi0xMS42NzEsMTYuMzQ4LDBDNDMuMjI5LDU5Ljg5NywzOS42MjIsNjMuODI0LDM1LjA1NSw2My44MjR6IE02NC4zMDQsNjMuODI0CgkJCQljLTQuNDg4LDAtOC4xNzQtMy45MjctOC4xNzQtOC44MTVjMC4zNi0xMS42ODQsMTUuOTM3LTExLjY4OSwxNi4zNDgsMEM3Mi40NzgsNTkuODk3LDY4Ljg3Miw2My44MjQsNjQuMzA0LDYzLjgyNHoiPjwvcGF0aD48L3N2Zz4=\";\nconst microsoftIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICB2aWV3Qm94PSIwIDAgNDggNDgiIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiPjxwYXRoIGZpbGw9IiNmZjU3MjIiIGQ9Ik02IDZIMjJWMjJINnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMTQgMTQpIi8+PHBhdGggZmlsbD0iIzRjYWY1MCIgZD0iTTI2IDZINDJWMjJIMjZ6IiB0cmFuc2Zvcm09InJvdGF0ZSgtMTgwIDM0IDE0KSIvPjxwYXRoIGZpbGw9IiNmZmMxMDciIGQ9Ik0yNiAyNkg0MlY0MkgyNnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMzQgMzQpIi8+PHBhdGggZmlsbD0iIzAzYTlmNCIgZD0iTTYgMjZIMjJWNDJINnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMTQgMzQpIi8+PC9zdmc+\";\n\nconst ToolTip = props => {\n return /*#__PURE__*/jsx(RadixTooltip.Provider, {\n delayDuration: 200,\n children: /*#__PURE__*/jsxs(RadixTooltip.Root, {\n children: [/*#__PURE__*/jsx(RadixTooltip.Trigger, {\n asChild: true,\n children: props.children\n }), /*#__PURE__*/jsx(RadixTooltip.Portal, {\n children: /*#__PURE__*/jsxs(TooltipContent, {\n sideOffset: props.sideOffset || 6,\n align: props.align,\n side: props.side,\n children: [props.tip, /*#__PURE__*/jsx(TooltipArrow, {})]\n })\n })]\n })\n });\n};\nconst slideUpAndFade = keyframes`\nfrom {\n opacity: 0;\n transform: translateY(2px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n`;\nconst TooltipContent = /* @__PURE__ */(() => styled(RadixTooltip.Content)(() => {\n const theme = useCustomTheme();\n return {\n background: theme.colors.tooltipBg,\n color: theme.colors.tooltipText,\n borderRadius: radius.sm,\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: fontSize.sm,\n boxShadow: shadow.sm,\n userSelect: \"none\",\n willChange: \"transform, opacity\",\n animation: `${slideUpAndFade} 200ms cubic-bezier(0.16, 1, 0.3, 1)`,\n zIndex: 999999999999999,\n maxWidth: \"300px\",\n lineHeight: 1.5\n };\n}))();\nconst TooltipArrow = /* @__PURE__ */(() => styled(RadixTooltip.Arrow)(() => {\n const theme = useCustomTheme();\n return {\n fill: theme.colors.tooltipBg\n };\n}))();\n\nexport { InputSelectionUI as I, ScreenContext as S, ToolTip as T, appleIconUri as a, modalMaxWidthCompact as b, modalMaxWidthWide as c, compactModalMaxHeight as d, emailIcon as e, facebookIconUri as f, googleIconUri as g, useScreen as h, githubIconUri as i, bitbucketIconUri as j, gitlabIconUri as k, linkedinIconUri as l, modalCloseFadeOutDuration as m, twitchIconUri as n, onModalUnmount as o, discordIconUri as p, microsoftIconUri as q, reservedScreens as r, smartWalletIcon as s, twitterIconUri as t, useScreenContext as u, emailAndPhoneIcon as v, wideModalMaxHeight as w, phoneIcon as x };\n","const amber$1 = {\n amber1: 'hsl(36, 100%, 6.1%)',\n amber2: 'hsl(35, 100%, 7.6%)',\n amber3: 'hsl(32, 100%, 10.2%)',\n amber4: 'hsl(32, 100%, 12.4%)',\n amber5: 'hsl(33, 100%, 14.6%)',\n amber6: 'hsl(35, 100%, 17.1%)',\n amber7: 'hsl(35, 91.0%, 21.6%)',\n amber8: 'hsl(36, 100%, 25.5%)',\n amber9: 'hsl(39, 100%, 57.0%)',\n amber10: 'hsl(43, 100%, 64.0%)',\n amber11: 'hsl(39, 90.0%, 49.8%)',\n amber12: 'hsl(39, 97.0%, 93.2%)',\n};\n\nconst blue$1 = {\n blue1: 'hsl(212, 35.0%, 9.2%)',\n blue2: 'hsl(216, 50.0%, 11.8%)',\n blue3: 'hsl(214, 59.4%, 15.3%)',\n blue4: 'hsl(214, 65.8%, 17.9%)',\n blue5: 'hsl(213, 71.2%, 20.2%)',\n blue6: 'hsl(212, 77.4%, 23.1%)',\n blue7: 'hsl(211, 85.1%, 27.4%)',\n blue8: 'hsl(211, 89.7%, 34.1%)',\n blue9: 'hsl(206, 100%, 50.0%)',\n blue10: 'hsl(209, 100%, 60.6%)',\n blue11: 'hsl(210, 100%, 66.1%)',\n blue12: 'hsl(206, 98.0%, 95.8%)',\n};\n\nconst bronze$1 = {\n bronze1: 'hsl(17, 10.0%, 8.8%)',\n bronze2: 'hsl(15, 14.8%, 10.6%)',\n bronze3: 'hsl(15, 16.3%, 14.3%)',\n bronze4: 'hsl(16, 17.1%, 17.2%)',\n bronze5: 'hsl(16, 17.6%, 19.6%)',\n bronze6: 'hsl(16, 18.1%, 22.9%)',\n bronze7: 'hsl(17, 18.8%, 28.8%)',\n bronze8: 'hsl(17, 19.6%, 38.0%)',\n bronze9: 'hsl(17, 20.0%, 54.0%)',\n bronze10: 'hsl(18, 24.0%, 59.0%)',\n bronze11: 'hsl(18, 35.0%, 68.5%)',\n bronze12: 'hsl(18, 57.0%, 94.1%)',\n};\n\nconst brown$1 = {\n brown1: 'hsl(22, 15.0%, 8.7%)',\n brown2: 'hsl(20, 28.3%, 10.4%)',\n brown3: 'hsl(20, 28.0%, 14.0%)',\n brown4: 'hsl(21, 28.4%, 16.5%)',\n brown5: 'hsl(22, 28.7%, 18.9%)',\n brown6: 'hsl(23, 29.0%, 22.3%)',\n brown7: 'hsl(25, 29.5%, 27.8%)',\n brown8: 'hsl(27, 30.1%, 35.9%)',\n brown9: 'hsl(28, 34.0%, 51.0%)',\n brown10: 'hsl(28, 41.4%, 55.8%)',\n brown11: 'hsl(28, 60.0%, 64.5%)',\n brown12: 'hsl(30, 67.0%, 94.0%)',\n};\n\nconst crimson$1 = {\n crimson1: 'hsl(335, 20.0%, 9.6%)',\n crimson2: 'hsl(335, 32.2%, 11.6%)',\n crimson3: 'hsl(335, 42.5%, 16.5%)',\n crimson4: 'hsl(335, 47.2%, 19.3%)',\n crimson5: 'hsl(335, 50.9%, 21.8%)',\n crimson6: 'hsl(335, 55.7%, 25.3%)',\n crimson7: 'hsl(336, 62.9%, 30.8%)',\n crimson8: 'hsl(336, 74.9%, 39.0%)',\n crimson9: 'hsl(336, 80.0%, 57.8%)',\n crimson10: 'hsl(339, 84.1%, 62.6%)',\n crimson11: 'hsl(341, 90.0%, 67.3%)',\n crimson12: 'hsl(332, 87.0%, 96.0%)',\n};\n\nconst cyan$1 = {\n cyan1: 'hsl(192, 60.0%, 7.2%)',\n cyan2: 'hsl(192, 71.4%, 8.2%)',\n cyan3: 'hsl(192, 75.9%, 10.8%)',\n cyan4: 'hsl(192, 79.3%, 12.8%)',\n cyan5: 'hsl(192, 82.5%, 14.6%)',\n cyan6: 'hsl(192, 86.6%, 16.9%)',\n cyan7: 'hsl(192, 92.6%, 20.1%)',\n cyan8: 'hsl(192, 100%, 24.5%)',\n cyan9: 'hsl(190, 95.0%, 39.0%)',\n cyan10: 'hsl(188, 100%, 40.0%)',\n cyan11: 'hsl(186, 100%, 42.2%)',\n cyan12: 'hsl(185, 73.0%, 93.2%)',\n};\n\nconst gold$1 = {\n gold1: 'hsl(44, 9.0%, 8.3%)',\n gold2: 'hsl(43, 14.3%, 9.6%)',\n gold3: 'hsl(42, 15.5%, 13.0%)',\n gold4: 'hsl(41, 16.4%, 15.6%)',\n gold5: 'hsl(41, 16.9%, 17.8%)',\n gold6: 'hsl(40, 17.6%, 20.8%)',\n gold7: 'hsl(38, 18.5%, 26.4%)',\n gold8: 'hsl(36, 19.6%, 35.1%)',\n gold9: 'hsl(36, 20.0%, 49.5%)',\n gold10: 'hsl(36, 22.3%, 54.5%)',\n gold11: 'hsl(35, 30.0%, 64.0%)',\n gold12: 'hsl(49, 52.0%, 93.8%)',\n};\n\nconst grass$1 = {\n grass1: 'hsl(146, 30.0%, 7.4%)',\n grass2: 'hsl(136, 33.3%, 8.8%)',\n grass3: 'hsl(137, 36.0%, 11.4%)',\n grass4: 'hsl(137, 37.6%, 13.7%)',\n grass5: 'hsl(136, 38.7%, 16.0%)',\n grass6: 'hsl(135, 39.6%, 19.1%)',\n grass7: 'hsl(134, 40.3%, 23.8%)',\n grass8: 'hsl(131, 40.1%, 30.8%)',\n grass9: 'hsl(131, 41.0%, 46.5%)',\n grass10: 'hsl(131, 39.0%, 52.1%)',\n grass11: 'hsl(131, 43.0%, 57.2%)',\n grass12: 'hsl(137, 72.0%, 94.0%)',\n};\n\nconst gray$1 = {\n gray1: 'hsl(0, 0%, 8.5%)',\n gray2: 'hsl(0, 0%, 11.0%)',\n gray3: 'hsl(0, 0%, 13.6%)',\n gray4: 'hsl(0, 0%, 15.8%)',\n gray5: 'hsl(0, 0%, 17.9%)',\n gray6: 'hsl(0, 0%, 20.5%)',\n gray7: 'hsl(0, 0%, 24.3%)',\n gray8: 'hsl(0, 0%, 31.2%)',\n gray9: 'hsl(0, 0%, 43.9%)',\n gray10: 'hsl(0, 0%, 49.4%)',\n gray11: 'hsl(0, 0%, 62.8%)',\n gray12: 'hsl(0, 0%, 93.0%)',\n};\n\nconst green$1 = {\n green1: 'hsl(146, 30.0%, 7.4%)',\n green2: 'hsl(155, 44.2%, 8.4%)',\n green3: 'hsl(155, 46.7%, 10.9%)',\n green4: 'hsl(154, 48.4%, 12.9%)',\n green5: 'hsl(154, 49.7%, 14.9%)',\n green6: 'hsl(154, 50.9%, 17.6%)',\n green7: 'hsl(153, 51.8%, 21.8%)',\n green8: 'hsl(151, 51.7%, 28.4%)',\n green9: 'hsl(151, 55.0%, 41.5%)',\n green10: 'hsl(151, 49.3%, 46.5%)',\n green11: 'hsl(151, 50.0%, 53.2%)',\n green12: 'hsl(137, 72.0%, 94.0%)',\n};\n\nconst indigo$1 = {\n indigo1: 'hsl(229, 24.0%, 10.0%)',\n indigo2: 'hsl(230, 36.4%, 12.9%)',\n indigo3: 'hsl(228, 43.3%, 17.5%)',\n indigo4: 'hsl(227, 47.2%, 21.0%)',\n indigo5: 'hsl(227, 50.0%, 24.1%)',\n indigo6: 'hsl(226, 52.9%, 28.2%)',\n indigo7: 'hsl(226, 56.0%, 34.5%)',\n indigo8: 'hsl(226, 58.2%, 44.1%)',\n indigo9: 'hsl(226, 70.0%, 55.5%)',\n indigo10: 'hsl(227, 75.2%, 61.6%)',\n indigo11: 'hsl(228, 100%, 75.9%)',\n indigo12: 'hsl(226, 83.0%, 96.3%)',\n};\n\nconst lime$1 = {\n lime1: 'hsl(75, 55.0%, 6.0%)',\n lime2: 'hsl(74, 56.8%, 7.3%)',\n lime3: 'hsl(78, 50.2%, 9.9%)',\n lime4: 'hsl(79, 50.3%, 12.1%)',\n lime5: 'hsl(79, 52.6%, 14.2%)',\n lime6: 'hsl(78, 55.7%, 16.7%)',\n lime7: 'hsl(77, 59.7%, 20.1%)',\n lime8: 'hsl(75, 64.8%, 24.5%)',\n lime9: 'hsl(81, 67.0%, 50.0%)',\n lime10: 'hsl(75, 85.0%, 60.0%)',\n lime11: 'hsl(81, 70.0%, 43.8%)',\n lime12: 'hsl(84, 79.0%, 92.6%)',\n};\n\nconst mint$1 = {\n mint1: 'hsl(173, 50.0%, 6.6%)',\n mint2: 'hsl(176, 73.0%, 7.3%)',\n mint3: 'hsl(175, 79.3%, 8.9%)',\n mint4: 'hsl(174, 84.8%, 10.3%)',\n mint5: 'hsl(174, 90.2%, 11.9%)',\n mint6: 'hsl(173, 96.0%, 13.8%)',\n mint7: 'hsl(172, 100%, 16.8%)',\n mint8: 'hsl(170, 100%, 21.4%)',\n mint9: 'hsl(167, 65.0%, 66.0%)',\n mint10: 'hsl(163, 80.0%, 77.0%)',\n mint11: 'hsl(167, 70.0%, 48.0%)',\n mint12: 'hsl(165, 80.0%, 94.8%)',\n};\n\nconst olive$1 = {\n olive1: 'hsl(110, 5.0%, 8.6%)',\n olive2: 'hsl(105, 7.4%, 10.6%)',\n olive3: 'hsl(106, 6.4%, 13.1%)',\n olive4: 'hsl(106, 5.8%, 15.3%)',\n olive5: 'hsl(107, 5.3%, 17.4%)',\n olive6: 'hsl(107, 4.9%, 19.9%)',\n olive7: 'hsl(108, 4.4%, 23.6%)',\n olive8: 'hsl(110, 3.8%, 30.6%)',\n olive9: 'hsl(110, 6.0%, 42.5%)',\n olive10: 'hsl(111, 4.8%, 48.2%)',\n olive11: 'hsl(110, 5.0%, 61.8%)',\n olive12: 'hsl(110, 6.0%, 93.0%)',\n};\n\nconst orange$1 = {\n orange1: 'hsl(30, 70.0%, 7.2%)',\n orange2: 'hsl(28, 100%, 8.4%)',\n orange3: 'hsl(26, 91.1%, 11.6%)',\n orange4: 'hsl(25, 88.3%, 14.1%)',\n orange5: 'hsl(24, 87.6%, 16.6%)',\n orange6: 'hsl(24, 88.6%, 19.8%)',\n orange7: 'hsl(24, 92.4%, 24.0%)',\n orange8: 'hsl(25, 100%, 29.0%)',\n orange9: 'hsl(24, 94.0%, 50.0%)',\n orange10: 'hsl(24, 100%, 58.5%)',\n orange11: 'hsl(24, 100%, 62.2%)',\n orange12: 'hsl(24, 97.0%, 93.2%)',\n};\n\nconst pink$1 = {\n pink1: 'hsl(318, 25.0%, 9.6%)',\n pink2: 'hsl(319, 32.2%, 11.6%)',\n pink3: 'hsl(319, 41.0%, 16.0%)',\n pink4: 'hsl(320, 45.4%, 18.7%)',\n pink5: 'hsl(320, 49.0%, 21.1%)',\n pink6: 'hsl(321, 53.6%, 24.4%)',\n pink7: 'hsl(321, 61.1%, 29.7%)',\n pink8: 'hsl(322, 74.9%, 37.5%)',\n pink9: 'hsl(322, 65.0%, 54.5%)',\n pink10: 'hsl(323, 72.8%, 59.2%)',\n pink11: 'hsl(325, 90.0%, 66.4%)',\n pink12: 'hsl(322, 90.0%, 95.8%)',\n};\n\nconst plum$1 = {\n plum1: 'hsl(301, 20.0%, 9.4%)',\n plum2: 'hsl(300, 29.8%, 11.2%)',\n plum3: 'hsl(298, 34.4%, 15.3%)',\n plum4: 'hsl(297, 36.8%, 18.3%)',\n plum5: 'hsl(296, 38.5%, 21.1%)',\n plum6: 'hsl(295, 40.4%, 24.7%)',\n plum7: 'hsl(294, 42.7%, 30.6%)',\n plum8: 'hsl(292, 45.1%, 40.0%)',\n plum9: 'hsl(292, 45.0%, 51.0%)',\n plum10: 'hsl(295, 50.0%, 55.4%)',\n plum11: 'hsl(300, 60.0%, 62.0%)',\n plum12: 'hsl(296, 74.0%, 95.7%)',\n};\n\nconst purple$1 = {\n purple1: 'hsl(284, 20.0%, 9.6%)',\n purple2: 'hsl(283, 30.0%, 11.8%)',\n purple3: 'hsl(281, 37.5%, 16.5%)',\n purple4: 'hsl(280, 41.2%, 20.0%)',\n purple5: 'hsl(279, 43.8%, 23.3%)',\n purple6: 'hsl(277, 46.4%, 27.5%)',\n purple7: 'hsl(275, 49.3%, 34.6%)',\n purple8: 'hsl(272, 52.1%, 45.9%)',\n purple9: 'hsl(272, 51.0%, 54.0%)',\n purple10: 'hsl(273, 57.3%, 59.1%)',\n purple11: 'hsl(275, 80.0%, 71.0%)',\n purple12: 'hsl(279, 75.0%, 95.7%)',\n};\n\nconst mauve$1 = {\n mauve1: 'hsl(246, 6.0%, 9.0%)',\n mauve2: 'hsl(240, 5.1%, 11.6%)',\n mauve3: 'hsl(241, 5.0%, 14.3%)',\n mauve4: 'hsl(242, 4.9%, 16.5%)',\n mauve5: 'hsl(243, 4.9%, 18.8%)',\n mauve6: 'hsl(244, 4.9%, 21.5%)',\n mauve7: 'hsl(245, 4.9%, 25.4%)',\n mauve8: 'hsl(247, 4.8%, 32.5%)',\n mauve9: 'hsl(252, 4.0%, 45.2%)',\n mauve10: 'hsl(247, 3.4%, 50.7%)',\n mauve11: 'hsl(253, 4.0%, 63.7%)',\n mauve12: 'hsl(256, 6.0%, 93.2%)',\n};\n\nconst red$1 = {\n red1: 'hsl(353, 23.0%, 9.8%)',\n red2: 'hsl(357, 34.4%, 12.0%)',\n red3: 'hsl(356, 43.4%, 16.4%)',\n red4: 'hsl(356, 47.6%, 19.2%)',\n red5: 'hsl(356, 51.1%, 21.9%)',\n red6: 'hsl(356, 55.2%, 25.9%)',\n red7: 'hsl(357, 60.2%, 31.8%)',\n red8: 'hsl(358, 65.0%, 40.4%)',\n red9: 'hsl(358, 75.0%, 59.0%)',\n red10: 'hsl(358, 85.3%, 64.0%)',\n red11: 'hsl(358, 100%, 69.5%)',\n red12: 'hsl(351, 89.0%, 96.0%)',\n};\n\nconst sage$1 = {\n sage1: 'hsl(155, 7.0%, 8.4%)',\n sage2: 'hsl(150, 7.4%, 10.6%)',\n sage3: 'hsl(150, 6.7%, 13.1%)',\n sage4: 'hsl(150, 6.4%, 15.3%)',\n sage5: 'hsl(150, 6.1%, 17.4%)',\n sage6: 'hsl(150, 5.8%, 19.9%)',\n sage7: 'hsl(150, 5.5%, 23.6%)',\n sage8: 'hsl(150, 5.1%, 30.6%)',\n sage9: 'hsl(155, 6.0%, 42.5%)',\n sage10: 'hsl(153, 4.8%, 48.2%)',\n sage11: 'hsl(155, 5.0%, 61.8%)',\n sage12: 'hsl(155, 6.0%, 93.0%)',\n};\n\nconst sand$1 = {\n sand1: 'hsl(61, 2.0%, 8.3%)',\n sand2: 'hsl(60, 3.7%, 10.6%)',\n sand3: 'hsl(58, 3.7%, 13.1%)',\n sand4: 'hsl(57, 3.6%, 15.3%)',\n sand5: 'hsl(56, 3.7%, 17.4%)',\n sand6: 'hsl(55, 3.7%, 19.9%)',\n sand7: 'hsl(53, 3.7%, 23.6%)',\n sand8: 'hsl(50, 3.8%, 30.6%)',\n sand9: 'hsl(50, 4.0%, 42.7%)',\n sand10: 'hsl(52, 3.1%, 48.3%)',\n sand11: 'hsl(50, 4.0%, 61.8%)',\n sand12: 'hsl(56, 4.0%, 92.8%)',\n};\n\nconst sky$1 = {\n sky1: 'hsl(205, 45.0%, 8.6%)',\n sky2: 'hsl(202, 71.4%, 9.6%)',\n sky3: 'hsl(201, 74.6%, 12.2%)',\n sky4: 'hsl(201, 77.4%, 14.4%)',\n sky5: 'hsl(200, 80.3%, 16.5%)',\n sky6: 'hsl(200, 84.1%, 18.9%)',\n sky7: 'hsl(199, 90.2%, 22.1%)',\n sky8: 'hsl(198, 100%, 26.1%)',\n sky9: 'hsl(193, 98.0%, 70.0%)',\n sky10: 'hsl(192, 100%, 77.0%)',\n sky11: 'hsl(192, 85.0%, 55.8%)',\n sky12: 'hsl(198, 98.0%, 95.8%)',\n};\n\nconst slate$1 = {\n slate1: 'hsl(200, 7.0%, 8.8%)',\n slate2: 'hsl(195, 7.1%, 11.0%)',\n slate3: 'hsl(197, 6.8%, 13.6%)',\n slate4: 'hsl(198, 6.6%, 15.8%)',\n slate5: 'hsl(199, 6.4%, 17.9%)',\n slate6: 'hsl(201, 6.2%, 20.5%)',\n slate7: 'hsl(203, 6.0%, 24.3%)',\n slate8: 'hsl(207, 5.6%, 31.6%)',\n slate9: 'hsl(206, 6.0%, 43.9%)',\n slate10: 'hsl(206, 5.2%, 49.5%)',\n slate11: 'hsl(206, 6.0%, 63.0%)',\n slate12: 'hsl(210, 6.0%, 93.0%)',\n};\n\nconst teal$1 = {\n teal1: 'hsl(168, 48.0%, 6.5%)',\n teal2: 'hsl(169, 77.8%, 7.1%)',\n teal3: 'hsl(170, 76.1%, 9.2%)',\n teal4: 'hsl(171, 75.8%, 11.0%)',\n teal5: 'hsl(171, 75.7%, 12.8%)',\n teal6: 'hsl(172, 75.8%, 15.1%)',\n teal7: 'hsl(172, 76.7%, 18.6%)',\n teal8: 'hsl(173, 80.2%, 23.7%)',\n teal9: 'hsl(173, 80.0%, 36.0%)',\n teal10: 'hsl(174, 83.9%, 38.2%)',\n teal11: 'hsl(174, 90.0%, 40.7%)',\n teal12: 'hsl(166, 73.0%, 93.1%)',\n};\n\nconst tomato$1 = {\n tomato1: 'hsl(10, 23.0%, 9.4%)',\n tomato2: 'hsl(9, 44.8%, 11.4%)',\n tomato3: 'hsl(8, 52.0%, 15.3%)',\n tomato4: 'hsl(7, 56.3%, 18.0%)',\n tomato5: 'hsl(7, 60.1%, 20.6%)',\n tomato6: 'hsl(8, 64.8%, 24.0%)',\n tomato7: 'hsl(8, 71.2%, 29.1%)',\n tomato8: 'hsl(10, 80.2%, 35.7%)',\n tomato9: 'hsl(10, 78.0%, 54.0%)',\n tomato10: 'hsl(10, 81.7%, 59.0%)',\n tomato11: 'hsl(10, 85.0%, 62.8%)',\n tomato12: 'hsl(10, 89.0%, 96.0%)',\n};\n\nconst violet$1 = {\n violet1: 'hsl(250, 20.0%, 10.2%)',\n violet2: 'hsl(255, 30.3%, 12.9%)',\n violet3: 'hsl(253, 37.0%, 18.4%)',\n violet4: 'hsl(252, 40.1%, 22.5%)',\n violet5: 'hsl(252, 42.2%, 26.2%)',\n violet6: 'hsl(251, 44.3%, 31.1%)',\n violet7: 'hsl(250, 46.8%, 38.9%)',\n violet8: 'hsl(250, 51.8%, 51.2%)',\n violet9: 'hsl(252, 56.0%, 57.5%)',\n violet10: 'hsl(251, 63.2%, 63.2%)',\n violet11: 'hsl(250, 95.0%, 76.8%)',\n violet12: 'hsl(252, 87.0%, 96.4%)',\n};\n\nconst yellow$1 = {\n yellow1: 'hsl(45, 100%, 5.5%)',\n yellow2: 'hsl(46, 100%, 6.7%)',\n yellow3: 'hsl(45, 100%, 8.7%)',\n yellow4: 'hsl(45, 100%, 10.4%)',\n yellow5: 'hsl(47, 100%, 12.1%)',\n yellow6: 'hsl(49, 100%, 14.3%)',\n yellow7: 'hsl(49, 90.3%, 18.4%)',\n yellow8: 'hsl(50, 100%, 22.0%)',\n yellow9: 'hsl(53, 92.0%, 50.0%)',\n yellow10: 'hsl(54, 100%, 68.0%)',\n yellow11: 'hsl(48, 100%, 47.0%)',\n yellow12: 'hsl(53, 100%, 91.0%)',\n};\n\nconst amberA$1 = {\n amberA1: 'hsla(0, 0%, 0%, 0)',\n amberA2: 'hsla(31, 100%, 49.7%, 0.036)',\n amberA3: 'hsla(27, 100%, 49.9%, 0.094)',\n amberA4: 'hsla(29, 100%, 50.0%, 0.143)',\n amberA5: 'hsla(31, 100%, 50.0%, 0.192)',\n amberA6: 'hsla(35, 100%, 50.0%, 0.250)',\n amberA7: 'hsla(34, 99.6%, 52.9%, 0.331)',\n amberA8: 'hsla(36, 100%, 50.0%, 0.442)',\n amberA9: 'hsla(40, 100%, 57.2%, 0.980)',\n amberA10: 'hsla(44, 100%, 64.2%, 0.980)',\n amberA11: 'hsla(39, 99.9%, 52.7%, 0.938)',\n amberA12: 'hsla(45, 100%, 94.2%, 0.980)',\n};\n\nconst blueA$1 = {\n blueA1: 'hsla(0, 0%, 0%, 0)',\n blueA2: 'hsla(221, 97.8%, 52.4%, 0.059)',\n blueA3: 'hsla(215, 99.3%, 54.2%, 0.135)',\n blueA4: 'hsla(215, 99.3%, 53.8%, 0.198)',\n blueA5: 'hsla(213, 99.4%, 52.8%, 0.252)',\n blueA6: 'hsla(212, 99.9%, 51.7%, 0.323)',\n blueA7: 'hsla(211, 100%, 50.7%, 0.435)',\n blueA8: 'hsla(211, 99.8%, 50.9%, 0.597)',\n blueA9: 'hsla(205, 100%, 50.0%, 0.980)',\n blueA10: 'hsla(208, 100%, 60.7%, 0.980)',\n blueA11: 'hsla(209, 100%, 66.3%, 0.980)',\n blueA12: 'hsla(196, 100%, 96.8%, 0.980)',\n};\n\nconst bronzeA$1 = {\n bronzeA1: 'hsla(0, 0%, 0%, 0)',\n bronzeA2: 'hsla(20, 88.2%, 74.2%, 0.027)',\n bronzeA3: 'hsla(10, 99.4%, 83.0%, 0.074)',\n bronzeA4: 'hsla(18, 96.0%, 81.1%, 0.114)',\n bronzeA5: 'hsla(18, 99.4%, 81.7%, 0.148)',\n bronzeA6: 'hsla(15, 98.1%, 82.4%, 0.192)',\n bronzeA7: 'hsla(16, 99.2%, 82.9%, 0.270)',\n bronzeA8: 'hsla(18, 99.5%, 82.6%, 0.396)',\n bronzeA9: 'hsla(18, 99.3%, 85.0%, 0.592)',\n bronzeA10: 'hsla(18, 99.6%, 85.2%, 0.657)',\n bronzeA11: 'hsla(17, 99.9%, 86.1%, 0.774)',\n bronzeA12: 'hsla(20, 99.8%, 96.4%, 0.974)',\n};\n\nconst brownA$1 = {\n brownA1: 'hsla(0, 0%, 0%, 0)',\n brownA2: 'hsla(22, 99.6%, 53.6%, 0.035)',\n brownA3: 'hsla(18, 97.8%, 69.0%, 0.088)',\n brownA4: 'hsla(21, 98.2%, 71.0%, 0.123)',\n brownA5: 'hsla(25, 98.4%, 72.1%, 0.158)',\n brownA6: 'hsla(25, 98.7%, 73.5%, 0.206)',\n brownA7: 'hsla(25, 99.0%, 74.6%, 0.289)',\n brownA8: 'hsla(28, 99.2%, 75.3%, 0.407)',\n brownA9: 'hsla(28, 100%, 74.8%, 0.642)',\n brownA10: 'hsla(28, 99.9%, 74.9%, 0.712)',\n brownA11: 'hsla(28, 99.9%, 74.9%, 0.843)',\n brownA12: 'hsla(32, 98.2%, 95.7%, 0.979)',\n};\n\nconst crimsonA$1 = {\n crimsonA1: 'hsla(0, 0%, 0%, 0)',\n crimsonA2: 'hsla(336, 96.8%, 53.2%, 0.045)',\n crimsonA3: 'hsla(335, 98.7%, 59.3%, 0.138)',\n crimsonA4: 'hsla(336, 99.1%, 59.9%, 0.191)',\n crimsonA5: 'hsla(335, 99.4%, 59.4%, 0.244)',\n crimsonA6: 'hsla(335, 99.4%, 59.4%, 0.315)',\n crimsonA7: 'hsla(336, 99.5%, 57.8%, 0.439)',\n crimsonA8: 'hsla(336, 99.9%, 55.4%, 0.642)',\n crimsonA9: 'hsla(336, 99.9%, 62.8%, 0.903)',\n crimsonA10: 'hsla(339, 99.9%, 66.3%, 0.934)',\n crimsonA11: 'hsla(341, 99.9%, 69.5%, 0.965)',\n crimsonA12: 'hsla(327, 100%, 97.1%, 0.980)',\n};\n\nconst cyanA$1 = {\n cyanA1: 'hsla(0, 0%, 0%, 0)',\n cyanA2: 'hsla(196, 100%, 50.0%, 0.031)',\n cyanA3: 'hsla(192, 98.0%, 50.9%, 0.085)',\n cyanA4: 'hsla(194, 99.6%, 51.3%, 0.133)',\n cyanA5: 'hsla(192, 99.5%, 51.3%, 0.173)',\n cyanA6: 'hsla(193, 99.7%, 50.4%, 0.226)',\n cyanA7: 'hsla(192, 100%, 50.0%, 0.310)',\n cyanA8: 'hsla(193, 100%, 50.0%, 0.425)',\n cyanA9: 'hsla(190, 99.8%, 50.8%, 0.731)',\n cyanA10: 'hsla(188, 100%, 50.0%, 0.775)',\n cyanA11: 'hsla(186, 100%, 49.9%, 0.824)',\n cyanA12: 'hsla(185, 99.8%, 95.1%, 0.978)',\n};\n\nconst goldA$1 = {\n goldA1: 'hsla(0, 0%, 0%, 0)',\n goldA2: 'hsla(40, 93.7%, 70.6%, 0.022)',\n goldA3: 'hsla(40, 97.5%, 80.6%, 0.065)',\n goldA4: 'hsla(40, 95.9%, 80.8%, 0.100)',\n goldA5: 'hsla(38, 97.3%, 82.1%, 0.130)',\n goldA6: 'hsla(39, 97.2%, 82.5%, 0.169)',\n goldA7: 'hsla(37, 99.3%, 82.4%, 0.246)',\n goldA8: 'hsla(35, 98.7%, 82.2%, 0.363)',\n goldA9: 'hsla(36, 99.7%, 82.8%, 0.552)',\n goldA10: 'hsla(35, 99.2%, 83.7%, 0.613)',\n goldA11: 'hsla(35, 99.3%, 85.3%, 0.725)',\n goldA12: 'hsla(49, 98.6%, 96.7%, 0.966)',\n};\n\nconst grassA$1 = {\n grassA1: 'hsla(0, 0%, 0%, 0)',\n grassA2: 'hsla(107, 97.2%, 61.9%, 0.022)',\n grassA3: 'hsla(128, 96.5%, 69.8%, 0.066)',\n grassA4: 'hsla(130, 100%, 70.2%, 0.100)',\n grassA5: 'hsla(130, 98.2%, 69.1%, 0.140)',\n grassA6: 'hsla(132, 99.9%, 69.3%, 0.187)',\n grassA7: 'hsla(132, 99.9%, 69.8%, 0.261)',\n grassA8: 'hsla(130, 99.6%, 70.5%, 0.370)',\n grassA9: 'hsla(130, 99.7%, 70.6%, 0.618)',\n grassA10: 'hsla(131, 100%, 73.5%, 0.674)',\n grassA11: 'hsla(130, 99.7%, 75.6%, 0.731)',\n grassA12: 'hsla(137, 100%, 95.8%, 0.980)',\n};\n\nconst grayA$1 = {\n grayA1: 'hsla(0, 0%, 100%, 0)',\n grayA2: 'hsla(0, 0%, 100%, 0.026)',\n grayA3: 'hsla(0, 0%, 100%, 0.056)',\n grayA4: 'hsla(0, 0%, 100%, 0.077)',\n grayA5: 'hsla(0, 0%, 100%, 0.103)',\n grayA6: 'hsla(0, 0%, 100%, 0.129)',\n grayA7: 'hsla(0, 0%, 100%, 0.172)',\n grayA8: 'hsla(0, 0%, 100%, 0.249)',\n grayA9: 'hsla(0, 0%, 100%, 0.386)',\n grayA10: 'hsla(0, 0%, 100%, 0.446)',\n grayA11: 'hsla(0, 0%, 100%, 0.592)',\n grayA12: 'hsla(0, 0%, 100%, 0.923)',\n};\n\nconst greenA$1 = {\n greenA1: 'hsla(0, 0%, 0%, 0)',\n greenA2: 'hsla(169, 100%, 48.5%, 0.027)',\n greenA3: 'hsla(162, 98.7%, 57.9%, 0.070)',\n greenA4: 'hsla(158, 98.6%, 59.7%, 0.105)',\n greenA5: 'hsla(158, 98.6%, 60.7%, 0.140)',\n greenA6: 'hsla(156, 99.9%, 62.0%, 0.187)',\n greenA7: 'hsla(154, 99.5%, 63.1%, 0.257)',\n greenA8: 'hsla(152, 99.7%, 64.2%, 0.370)',\n greenA9: 'hsla(151, 99.7%, 63.8%, 0.605)',\n greenA10: 'hsla(152, 99.9%, 66.5%, 0.661)',\n greenA11: 'hsla(151, 99.7%, 69.2%, 0.740)',\n greenA12: 'hsla(137, 100%, 95.8%, 0.980)',\n};\n\nconst indigoA$1 = {\n indigoA1: 'hsla(0, 0%, 0%, 0)',\n indigoA2: 'hsla(234, 97.4%, 59.9%, 0.059)',\n indigoA3: 'hsla(228, 99.2%, 61.7%, 0.144)',\n indigoA4: 'hsla(227, 99.7%, 62.0%, 0.211)',\n indigoA5: 'hsla(227, 99.2%, 62.3%, 0.270)',\n indigoA6: 'hsla(226, 99.9%, 62.1%, 0.350)',\n indigoA7: 'hsla(226, 99.9%, 62.0%, 0.471)',\n indigoA8: 'hsla(226, 99.9%, 62.1%, 0.655)',\n indigoA9: 'hsla(226, 99.9%, 63.6%, 0.848)',\n indigoA10: 'hsla(227, 99.8%, 67.7%, 0.893)',\n indigoA11: 'hsla(227, 100%, 76.3%, 0.980)',\n indigoA12: 'hsla(226, 100%, 97.5%, 0.980)',\n};\n\nconst limeA$1 = {\n limeA1: 'hsla(0, 0%, 0%, 0)',\n limeA2: 'hsla(75, 96.4%, 59.6%, 0.022)',\n limeA3: 'hsla(88, 98.0%, 70.4%, 0.061)',\n limeA4: 'hsla(81, 97.8%, 67.4%, 0.096)',\n limeA5: 'hsla(82, 98.4%, 65.6%, 0.135)',\n limeA6: 'hsla(79, 99.7%, 64.3%, 0.182)',\n limeA7: 'hsla(77, 99.1%, 62.1%, 0.252)',\n limeA8: 'hsla(75, 100%, 60.0%, 0.342)',\n limeA9: 'hsla(81, 99.8%, 59.7%, 0.819)',\n limeA10: 'hsla(75, 99.8%, 63.7%, 0.936)',\n limeA11: 'hsla(81, 99.9%, 58.7%, 0.719)',\n limeA12: 'hsla(83, 100%, 94.2%, 0.980)',\n};\n\nconst mintA$1 = {\n mintA1: 'hsla(0, 0%, 0%, 0)',\n mintA2: 'hsla(180, 100%, 49.2%, 0.031)',\n mintA3: 'hsla(176, 100%, 49.7%, 0.070)',\n mintA4: 'hsla(173, 100%, 49.7%, 0.105)',\n mintA5: 'hsla(173, 100%, 49.8%, 0.144)',\n mintA6: 'hsla(172, 100%, 49.8%, 0.192)',\n mintA7: 'hsla(171, 100%, 49.9%, 0.266)',\n mintA8: 'hsla(169, 100%, 49.9%, 0.366)',\n mintA9: 'hsla(167, 99.8%, 75.0%, 0.870)',\n mintA10: 'hsla(163, 99.9%, 80.7%, 0.948)',\n mintA11: 'hsla(167, 99.9%, 58.7%, 0.796)',\n mintA12: 'hsla(169, 100%, 96.2%, 0.980)',\n};\n\nconst oliveA$1 = {\n oliveA1: 'hsla(0, 0%, 0%, 0)',\n oliveA2: 'hsla(91, 97.0%, 84.0%, 0.026)',\n oliveA3: 'hsla(101, 87.4%, 87.7%, 0.057)',\n oliveA4: 'hsla(92, 91.8%, 94.1%, 0.078)',\n oliveA5: 'hsla(101, 92.6%, 93.5%, 0.104)',\n oliveA6: 'hsla(102, 91.1%, 94.6%, 0.130)',\n oliveA7: 'hsla(102, 92.5%, 95.9%, 0.173)',\n oliveA8: 'hsla(107, 100%, 96.5%, 0.250)',\n oliveA9: 'hsla(110, 98.3%, 94.1%, 0.397)',\n oliveA10: 'hsla(109, 99.6%, 95.3%, 0.457)',\n oliveA11: 'hsla(113, 95.3%, 97.2%, 0.600)',\n oliveA12: 'hsla(120, 93.5%, 99.6%, 0.927)',\n};\n\nconst orangeA$1 = {\n orangeA1: 'hsla(0, 0%, 0%, 0)',\n orangeA2: 'hsla(13, 100%, 49.7%, 0.054)',\n orangeA3: 'hsla(20, 100%, 49.7%, 0.117)',\n orangeA4: 'hsla(23, 100%, 49.8%, 0.166)',\n orangeA5: 'hsla(23, 99.4%, 50.1%, 0.215)',\n orangeA6: 'hsla(23, 99.8%, 51.1%, 0.286)',\n orangeA7: 'hsla(23, 99.7%, 50.6%, 0.389)',\n orangeA8: 'hsla(24, 100%, 49.9%, 0.523)',\n orangeA9: 'hsla(24, 99.9%, 51.6%, 0.965)',\n orangeA10: 'hsla(25, 100%, 58.6%, 0.980)',\n orangeA11: 'hsla(24, 100%, 62.4%, 0.980)',\n orangeA12: 'hsla(26, 100%, 94.2%, 0.980)',\n};\n\nconst pinkA$1 = {\n pinkA1: 'hsla(0, 0%, 0%, 0)',\n pinkA2: 'hsla(320, 98.1%, 64.1%, 0.036)',\n pinkA3: 'hsla(320, 99.1%, 63.1%, 0.121)',\n pinkA4: 'hsla(320, 99.5%, 62.7%, 0.170)',\n pinkA5: 'hsla(319, 99.7%, 61.5%, 0.219)',\n pinkA6: 'hsla(322, 99.4%, 60.8%, 0.291)',\n pinkA7: 'hsla(321, 99.6%, 58.7%, 0.407)',\n pinkA8: 'hsla(322, 99.7%, 55.4%, 0.608)',\n pinkA9: 'hsla(322, 100%, 64.6%, 0.817)',\n pinkA10: 'hsla(323, 100%, 66.3%, 0.875)',\n pinkA11: 'hsla(325, 99.9%, 68.6%, 0.960)',\n pinkA12: 'hsla(314, 100%, 96.9%, 0.980)',\n};\n\nconst plumA$1 = {\n plumA1: 'hsla(0, 0%, 0%, 0)',\n plumA2: 'hsla(300, 96.4%, 58.4%, 0.036)',\n plumA3: 'hsla(300, 99.4%, 67.1%, 0.102)',\n plumA4: 'hsla(295, 99.8%, 66.3%, 0.155)',\n plumA5: 'hsla(295, 99.4%, 67.1%, 0.204)',\n plumA6: 'hsla(294, 99.0%, 67.8%, 0.262)',\n plumA7: 'hsla(294, 99.9%, 67.7%, 0.363)',\n plumA8: 'hsla(292, 99.8%, 67.5%, 0.527)',\n plumA9: 'hsla(292, 99.9%, 69.2%, 0.695)',\n plumA10: 'hsla(295, 99.9%, 70.8%, 0.748)',\n plumA11: 'hsla(300, 99.8%, 72.9%, 0.828)',\n plumA12: 'hsla(300, 100%, 97.1%, 0.980)',\n};\n\nconst purpleA$1 = {\n purpleA1: 'hsla(0, 0%, 0%, 0)',\n purpleA2: 'hsla(280, 96.5%, 57.5%, 0.045)',\n purpleA3: 'hsla(279, 98.7%, 62.8%, 0.129)',\n purpleA4: 'hsla(279, 99.1%, 64.0%, 0.191)',\n purpleA5: 'hsla(278, 99.8%, 64.2%, 0.248)',\n purpleA6: 'hsla(276, 99.6%, 64.6%, 0.328)',\n purpleA7: 'hsla(274, 99.9%, 64.6%, 0.456)',\n purpleA8: 'hsla(272, 99.7%, 64.6%, 0.660)',\n purpleA9: 'hsla(272, 99.9%, 69.1%, 0.748)',\n purpleA10: 'hsla(273, 100%, 71.3%, 0.801)',\n purpleA11: 'hsla(275, 99.9%, 75.3%, 0.934)',\n purpleA12: 'hsla(286, 100%, 97.1%, 0.980)',\n};\n\nconst mauveA$1 = {\n mauveA1: 'hsla(0, 0%, 0%, 0)',\n mauveA2: 'hsla(240, 76.7%, 91.2%, 0.031)',\n mauveA3: 'hsla(240, 86.0%, 95.8%, 0.061)',\n mauveA4: 'hsla(240, 91.8%, 94.7%, 0.087)',\n mauveA5: 'hsla(240, 91.5%, 95.8%, 0.113)',\n mauveA6: 'hsla(240, 92.0%, 93.8%, 0.148)',\n mauveA7: 'hsla(240, 94.8%, 95.3%, 0.191)',\n mauveA8: 'hsla(249, 98.1%, 95.2%, 0.273)',\n mauveA9: 'hsla(248, 97.6%, 96.2%, 0.416)',\n mauveA10: 'hsla(248, 95.5%, 96.6%, 0.477)',\n mauveA11: 'hsla(250, 98.0%, 98.0%, 0.615)',\n mauveA12: 'hsla(240, 93.9%, 99.6%, 0.931)',\n};\n\nconst redA$1 = {\n redA1: 'hsla(0, 0%, 0%, 0)',\n redA2: 'hsla(5, 98.5%, 53.8%, 0.045)',\n redA3: 'hsla(359, 99.1%, 61.1%, 0.130)',\n redA4: 'hsla(358, 98.8%, 61.0%, 0.184)',\n redA5: 'hsla(357, 99.6%, 60.3%, 0.237)',\n redA6: 'hsla(358, 99.6%, 60.3%, 0.322)',\n redA7: 'hsla(357, 100%, 59.5%, 0.442)',\n redA8: 'hsla(358, 99.8%, 59.1%, 0.621)',\n redA9: 'hsla(358, 100%, 65.5%, 0.884)',\n redA10: 'hsla(358, 100%, 67.5%, 0.942)',\n redA11: 'hsla(358, 100%, 69.7%, 0.980)',\n redA12: 'hsla(352, 100%, 97.1%, 0.980)',\n};\n\nconst sageA$1 = {\n sageA1: 'hsla(0, 0%, 0%, 0)',\n sageA2: 'hsla(123, 94.4%, 91.4%, 0.026)',\n sageA3: 'hsla(123, 82.9%, 91.0%, 0.057)',\n sageA4: 'hsla(124, 97.9%, 94.5%, 0.082)',\n sageA5: 'hsla(125, 90.0%, 95.2%, 0.104)',\n sageA6: 'hsla(142, 95.1%, 94.8%, 0.134)',\n sageA7: 'hsla(143, 92.8%, 95.7%, 0.173)',\n sageA8: 'hsla(146, 94.7%, 95.3%, 0.255)',\n sageA9: 'hsla(151, 98.2%, 94.4%, 0.397)',\n sageA10: 'hsla(148, 99.5%, 95.5%, 0.457)',\n sageA11: 'hsla(152, 95.1%, 97.3%, 0.600)',\n sageA12: 'hsla(149, 93.3%, 99.6%, 0.927)',\n};\n\nconst sandA$1 = {\n sandA1: 'hsla(0, 0%, 0%, 0)',\n sandA2: 'hsla(60, 89.8%, 91.4%, 0.026)',\n sandA3: 'hsla(60, 95.5%, 92.5%, 0.056)',\n sandA4: 'hsla(60, 75.6%, 96.4%, 0.078)',\n sandA5: 'hsla(60, 81.9%, 95.2%, 0.104)',\n sandA6: 'hsla(41, 87.6%, 94.8%, 0.134)',\n sandA7: 'hsla(60, 95.4%, 96.2%, 0.172)',\n sandA8: 'hsla(49, 93.5%, 95.7%, 0.254)',\n sandA9: 'hsla(52, 97.3%, 96.2%, 0.391)',\n sandA10: 'hsla(52, 97.8%, 96.7%, 0.451)',\n sandA11: 'hsla(51, 97.0%, 97.8%, 0.597)',\n sandA12: 'hsla(60, 88.7%, 99.8%, 0.923)',\n};\n\nconst skyA$1 = {\n skyA1: 'hsla(0, 0%, 0%, 0)',\n skyA2: 'hsla(208, 100%, 49.8%, 0.045)',\n skyA3: 'hsla(201, 100%, 49.8%, 0.099)',\n skyA4: 'hsla(201, 100%, 50.0%, 0.148)',\n skyA5: 'hsla(200, 100%, 49.8%, 0.198)',\n skyA6: 'hsla(199, 100%, 49.9%, 0.256)',\n skyA7: 'hsla(199, 100%, 49.9%, 0.337)',\n skyA8: 'hsla(199, 100%, 50.0%, 0.453)',\n skyA9: 'hsla(192, 100%, 70.8%, 0.980)',\n skyA10: 'hsla(190, 100%, 77.6%, 0.980)',\n skyA11: 'hsla(192, 99.9%, 59.6%, 0.924)',\n skyA12: 'hsla(189, 100%, 96.8%, 0.980)',\n};\n\nconst slateA$1 = {\n slateA1: 'hsla(0, 0%, 0%, 0)',\n slateA2: 'hsla(181, 98.9%, 91.8%, 0.026)',\n slateA3: 'hsla(182, 86.7%, 91.4%, 0.057)',\n slateA4: 'hsla(209, 86.7%, 93.9%, 0.083)',\n slateA5: 'hsla(200, 90.3%, 93.4%, 0.109)',\n slateA6: 'hsla(209, 95.3%, 93.5%, 0.139)',\n slateA7: 'hsla(204, 98.5%, 93.9%, 0.182)',\n slateA8: 'hsla(209, 94.0%, 94.7%, 0.265)',\n slateA9: 'hsla(207, 97.3%, 94.0%, 0.412)',\n slateA10: 'hsla(209, 99.4%, 95.2%, 0.472)',\n slateA11: 'hsla(208, 98.7%, 96.8%, 0.615)',\n slateA12: 'hsla(211, 86.7%, 99.6%, 0.927)',\n};\n\nconst tealA$1 = {\n tealA1: 'hsla(0, 0%, 0%, 0)',\n tealA2: 'hsla(171, 100%, 49.2%, 0.031)',\n tealA3: 'hsla(172, 100%, 49.7%, 0.070)',\n tealA4: 'hsla(175, 100%, 49.7%, 0.105)',\n tealA5: 'hsla(174, 98.9%, 50.1%, 0.140)',\n tealA6: 'hsla(174, 100%, 51.8%, 0.187)',\n tealA7: 'hsla(173, 99.6%, 53.2%, 0.257)',\n tealA8: 'hsla(174, 99.6%, 53.3%, 0.366)',\n tealA9: 'hsla(173, 99.9%, 54.6%, 0.609)',\n tealA10: 'hsla(174, 99.9%, 53.8%, 0.670)',\n tealA11: 'hsla(174, 100%, 52.0%, 0.748)',\n tealA12: 'hsla(166, 98.6%, 95.0%, 0.979)',\n};\n\nconst tomatoA$1 = {\n tomatoA1: 'hsla(0, 0%, 0%, 0)',\n tomatoA2: 'hsla(5, 100%, 49.6%, 0.058)',\n tomatoA3: 'hsla(6, 99.6%, 54.9%, 0.133)',\n tomatoA4: 'hsla(6, 99.2%, 55.4%, 0.191)',\n tomatoA5: 'hsla(6, 99.5%, 55.8%, 0.244)',\n tomatoA6: 'hsla(7, 99.7%, 55.9%, 0.319)',\n tomatoA7: 'hsla(8, 99.8%, 54.8%, 0.434)',\n tomatoA8: 'hsla(10, 99.8%, 53.5%, 0.598)',\n tomatoA9: 'hsla(10, 100%, 59.7%, 0.885)',\n tomatoA10: 'hsla(10, 100%, 63.6%, 0.916)',\n tomatoA11: 'hsla(10, 99.7%, 66.4%, 0.939)',\n tomatoA12: 'hsla(12, 100%, 97.1%, 0.980)',\n};\n\nconst violetA$1 = {\n violetA1: 'hsla(0, 0%, 0%, 0)',\n violetA2: 'hsla(258, 98.2%, 61.0%, 0.054)',\n violetA3: 'hsla(252, 98.8%, 65.8%, 0.148)',\n violetA4: 'hsla(253, 99.7%, 65.7%, 0.219)',\n violetA5: 'hsla(252, 99.7%, 66.4%, 0.286)',\n violetA6: 'hsla(251, 99.7%, 66.2%, 0.371)',\n violetA7: 'hsla(250, 99.7%, 66.3%, 0.514)',\n violetA8: 'hsla(250, 99.7%, 66.1%, 0.733)',\n violetA9: 'hsla(252, 99.9%, 70.3%, 0.786)',\n violetA10: 'hsla(251, 99.9%, 72.9%, 0.844)',\n violetA11: 'hsla(250, 100%, 77.9%, 0.980)',\n violetA12: 'hsla(254, 100%, 97.5%, 0.980)',\n};\n\nconst yellowA$1 = {\n yellowA1: 'hsla(0, 0%, 0%, 0)',\n yellowA2: 'hsla(49, 100%, 49.1%, 0.027)',\n yellowA3: 'hsla(45, 100%, 49.7%, 0.071)',\n yellowA4: 'hsla(46, 100%, 49.7%, 0.111)',\n yellowA5: 'hsla(47, 100%, 49.9%, 0.150)',\n yellowA6: 'hsla(51, 100%, 49.8%, 0.199)',\n yellowA7: 'hsla(51, 99.8%, 53.6%, 0.269)',\n yellowA8: 'hsla(51, 100%, 49.9%, 0.371)',\n yellowA9: 'hsla(53, 100%, 52.0%, 0.956)',\n yellowA10: 'hsla(56, 100%, 68.4%, 0.980)',\n yellowA11: 'hsla(48, 100%, 50.0%, 0.934)',\n yellowA12: 'hsla(60, 100%, 91.8%, 0.980)',\n};\n\nconst amber = {\n amber1: 'hsl(39, 70.0%, 99.0%)',\n amber2: 'hsl(40, 100%, 96.5%)',\n amber3: 'hsl(44, 100%, 91.7%)',\n amber4: 'hsl(43, 100%, 86.8%)',\n amber5: 'hsl(42, 100%, 81.8%)',\n amber6: 'hsl(38, 99.7%, 76.3%)',\n amber7: 'hsl(36, 86.1%, 67.1%)',\n amber8: 'hsl(35, 85.2%, 55.1%)',\n amber9: 'hsl(39, 100%, 57.0%)',\n amber10: 'hsl(35, 100%, 55.5%)',\n amber11: 'hsl(30, 100%, 34.0%)',\n amber12: 'hsl(20, 80.0%, 17.0%)',\n};\n\nconst blue = {\n blue1: 'hsl(206, 100%, 99.2%)',\n blue2: 'hsl(210, 100%, 98.0%)',\n blue3: 'hsl(209, 100%, 96.5%)',\n blue4: 'hsl(210, 98.8%, 94.0%)',\n blue5: 'hsl(209, 95.0%, 90.1%)',\n blue6: 'hsl(209, 81.2%, 84.5%)',\n blue7: 'hsl(208, 77.5%, 76.9%)',\n blue8: 'hsl(206, 81.9%, 65.3%)',\n blue9: 'hsl(206, 100%, 50.0%)',\n blue10: 'hsl(208, 100%, 47.3%)',\n blue11: 'hsl(211, 100%, 43.2%)',\n blue12: 'hsl(211, 100%, 15.0%)',\n};\n\nconst bronze = {\n bronze1: 'hsl(15, 30.0%, 99.1%)',\n bronze2: 'hsl(17, 63.6%, 97.8%)',\n bronze3: 'hsl(17, 42.1%, 95.2%)',\n bronze4: 'hsl(17, 35.2%, 92.1%)',\n bronze5: 'hsl(17, 31.5%, 88.2%)',\n bronze6: 'hsl(17, 29.0%, 83.0%)',\n bronze7: 'hsl(17, 26.9%, 75.6%)',\n bronze8: 'hsl(17, 25.1%, 66.5%)',\n bronze9: 'hsl(17, 20.0%, 54.0%)',\n bronze10: 'hsl(17, 18.1%, 50.1%)',\n bronze11: 'hsl(15, 20.0%, 43.1%)',\n bronze12: 'hsl(12, 22.0%, 21.5%)',\n};\n\nconst brown = {\n brown1: 'hsl(30, 40.0%, 99.1%)',\n brown2: 'hsl(30, 50.0%, 97.6%)',\n brown3: 'hsl(30, 52.5%, 94.6%)',\n brown4: 'hsl(30, 53.0%, 91.2%)',\n brown5: 'hsl(29, 52.9%, 86.8%)',\n brown6: 'hsl(29, 52.5%, 80.9%)',\n brown7: 'hsl(29, 51.5%, 72.8%)',\n brown8: 'hsl(28, 50.0%, 63.1%)',\n brown9: 'hsl(28, 34.0%, 51.0%)',\n brown10: 'hsl(27, 31.8%, 47.6%)',\n brown11: 'hsl(25, 30.0%, 41.0%)',\n brown12: 'hsl(20, 30.0%, 19.0%)',\n};\n\nconst crimson = {\n crimson1: 'hsl(332, 100%, 99.4%)',\n crimson2: 'hsl(330, 100%, 98.4%)',\n crimson3: 'hsl(331, 85.6%, 96.6%)',\n crimson4: 'hsl(331, 78.1%, 94.2%)',\n crimson5: 'hsl(332, 72.1%, 91.1%)',\n crimson6: 'hsl(333, 67.0%, 86.7%)',\n crimson7: 'hsl(335, 63.5%, 80.4%)',\n crimson8: 'hsl(336, 62.3%, 72.9%)',\n crimson9: 'hsl(336, 80.0%, 57.8%)',\n crimson10: 'hsl(336, 73.7%, 53.5%)',\n crimson11: 'hsl(336, 75.0%, 47.2%)',\n crimson12: 'hsl(340, 65.0%, 14.5%)',\n};\n\nconst cyan = {\n cyan1: 'hsl(185, 60.0%, 98.7%)',\n cyan2: 'hsl(185, 73.3%, 97.1%)',\n cyan3: 'hsl(186, 70.2%, 94.4%)',\n cyan4: 'hsl(186, 63.8%, 90.6%)',\n cyan5: 'hsl(187, 58.3%, 85.4%)',\n cyan6: 'hsl(188, 54.6%, 78.4%)',\n cyan7: 'hsl(189, 53.7%, 68.7%)',\n cyan8: 'hsl(189, 60.3%, 52.5%)',\n cyan9: 'hsl(190, 95.0%, 39.0%)',\n cyan10: 'hsl(191, 91.2%, 36.8%)',\n cyan11: 'hsl(192, 85.0%, 31.0%)',\n cyan12: 'hsl(192, 88.0%, 12.5%)',\n};\n\nconst gold = {\n gold1: 'hsl(50, 20.0%, 99.1%)',\n gold2: 'hsl(47, 52.9%, 96.7%)',\n gold3: 'hsl(46, 38.2%, 93.7%)',\n gold4: 'hsl(44, 32.7%, 90.1%)',\n gold5: 'hsl(43, 29.9%, 85.7%)',\n gold6: 'hsl(41, 28.3%, 79.8%)',\n gold7: 'hsl(39, 27.6%, 71.9%)',\n gold8: 'hsl(36, 27.2%, 61.8%)',\n gold9: 'hsl(36, 20.0%, 49.5%)',\n gold10: 'hsl(36, 19.8%, 45.7%)',\n gold11: 'hsl(36, 20.0%, 39.0%)',\n gold12: 'hsl(36, 16.0%, 20.0%)',\n};\n\nconst grass = {\n grass1: 'hsl(116, 50.0%, 98.9%)',\n grass2: 'hsl(120, 60.0%, 97.1%)',\n grass3: 'hsl(120, 53.6%, 94.8%)',\n grass4: 'hsl(121, 47.5%, 91.4%)',\n grass5: 'hsl(122, 42.6%, 86.5%)',\n grass6: 'hsl(124, 39.0%, 79.7%)',\n grass7: 'hsl(126, 37.1%, 70.2%)',\n grass8: 'hsl(131, 38.1%, 56.3%)',\n grass9: 'hsl(131, 41.0%, 46.5%)',\n grass10: 'hsl(132, 43.1%, 42.2%)',\n grass11: 'hsl(133, 50.0%, 32.5%)',\n grass12: 'hsl(130, 30.0%, 14.9%)',\n};\n\nconst gray = {\n gray1: 'hsl(0, 0%, 99.0%)',\n gray2: 'hsl(0, 0%, 97.3%)',\n gray3: 'hsl(0, 0%, 95.1%)',\n gray4: 'hsl(0, 0%, 93.0%)',\n gray5: 'hsl(0, 0%, 90.9%)',\n gray6: 'hsl(0, 0%, 88.7%)',\n gray7: 'hsl(0, 0%, 85.8%)',\n gray8: 'hsl(0, 0%, 78.0%)',\n gray9: 'hsl(0, 0%, 56.1%)',\n gray10: 'hsl(0, 0%, 52.3%)',\n gray11: 'hsl(0, 0%, 43.5%)',\n gray12: 'hsl(0, 0%, 9.0%)',\n};\n\nconst green = {\n green1: 'hsl(136, 50.0%, 98.9%)',\n green2: 'hsl(138, 62.5%, 96.9%)',\n green3: 'hsl(139, 55.2%, 94.5%)',\n green4: 'hsl(140, 48.7%, 91.0%)',\n green5: 'hsl(141, 43.7%, 86.0%)',\n green6: 'hsl(143, 40.3%, 79.0%)',\n green7: 'hsl(146, 38.5%, 69.0%)',\n green8: 'hsl(151, 40.2%, 54.1%)',\n green9: 'hsl(151, 55.0%, 41.5%)',\n green10: 'hsl(152, 57.5%, 37.6%)',\n green11: 'hsl(153, 67.0%, 28.5%)',\n green12: 'hsl(155, 40.0%, 14.0%)',\n};\n\nconst indigo = {\n indigo1: 'hsl(225, 60.0%, 99.4%)',\n indigo2: 'hsl(223, 100%, 98.6%)',\n indigo3: 'hsl(223, 98.4%, 97.1%)',\n indigo4: 'hsl(223, 92.9%, 95.0%)',\n indigo5: 'hsl(224, 87.1%, 92.0%)',\n indigo6: 'hsl(224, 81.9%, 87.8%)',\n indigo7: 'hsl(225, 77.4%, 82.1%)',\n indigo8: 'hsl(226, 75.4%, 74.5%)',\n indigo9: 'hsl(226, 70.0%, 55.5%)',\n indigo10: 'hsl(226, 58.6%, 51.3%)',\n indigo11: 'hsl(226, 55.0%, 45.0%)',\n indigo12: 'hsl(226, 62.0%, 17.0%)',\n};\n\nconst lime = {\n lime1: 'hsl(85, 50.0%, 98.7%)',\n lime2: 'hsl(85, 66.7%, 96.5%)',\n lime3: 'hsl(85, 76.0%, 92.3%)',\n lime4: 'hsl(84, 75.3%, 87.5%)',\n lime5: 'hsl(84, 71.5%, 81.9%)',\n lime6: 'hsl(82, 65.0%, 74.6%)',\n lime7: 'hsl(79, 53.2%, 61.8%)',\n lime8: 'hsl(76, 61.7%, 45.1%)',\n lime9: 'hsl(81, 67.0%, 50.0%)',\n lime10: 'hsl(80, 68.3%, 46.9%)',\n lime11: 'hsl(75, 80.0%, 26.0%)',\n lime12: 'hsl(78, 70.0%, 11.5%)',\n};\n\nconst mint = {\n mint1: 'hsl(165, 80.0%, 98.8%)',\n mint2: 'hsl(164, 88.2%, 96.7%)',\n mint3: 'hsl(164, 76.6%, 93.3%)',\n mint4: 'hsl(165, 68.8%, 89.5%)',\n mint5: 'hsl(165, 60.6%, 84.5%)',\n mint6: 'hsl(165, 53.5%, 76.9%)',\n mint7: 'hsl(166, 50.7%, 66.1%)',\n mint8: 'hsl(168, 52.8%, 51.0%)',\n mint9: 'hsl(167, 65.0%, 66.0%)',\n mint10: 'hsl(167, 59.3%, 63.1%)',\n mint11: 'hsl(172, 72.0%, 28.5%)',\n mint12: 'hsl(172, 70.0%, 12.0%)',\n};\n\nconst olive = {\n olive1: 'hsl(110, 20.0%, 99.0%)',\n olive2: 'hsl(120, 16.7%, 97.6%)',\n olive3: 'hsl(119, 10.1%, 95.2%)',\n olive4: 'hsl(118, 8.1%, 93.0%)',\n olive5: 'hsl(117, 7.1%, 90.8%)',\n olive6: 'hsl(115, 6.4%, 88.5%)',\n olive7: 'hsl(114, 5.9%, 85.4%)',\n olive8: 'hsl(110, 5.2%, 77.3%)',\n olive9: 'hsl(110, 3.5%, 55.5%)',\n olive10: 'hsl(111, 2.8%, 51.7%)',\n olive11: 'hsl(110, 3.0%, 43.0%)',\n olive12: 'hsl(110, 25.0%, 9.5%)',\n};\n\nconst orange = {\n orange1: 'hsl(24, 70.0%, 99.0%)',\n orange2: 'hsl(24, 83.3%, 97.6%)',\n orange3: 'hsl(24, 100%, 95.3%)',\n orange4: 'hsl(25, 100%, 92.2%)',\n orange5: 'hsl(25, 100%, 88.2%)',\n orange6: 'hsl(25, 100%, 82.8%)',\n orange7: 'hsl(24, 100%, 75.3%)',\n orange8: 'hsl(24, 94.5%, 64.3%)',\n orange9: 'hsl(24, 94.0%, 50.0%)',\n orange10: 'hsl(24, 100%, 46.5%)',\n orange11: 'hsl(24, 100%, 37.0%)',\n orange12: 'hsl(15, 60.0%, 17.0%)',\n};\n\nconst pink = {\n pink1: 'hsl(322, 100%, 99.4%)',\n pink2: 'hsl(323, 100%, 98.4%)',\n pink3: 'hsl(323, 86.3%, 96.5%)',\n pink4: 'hsl(323, 78.7%, 94.2%)',\n pink5: 'hsl(323, 72.2%, 91.1%)',\n pink6: 'hsl(323, 66.3%, 86.6%)',\n pink7: 'hsl(323, 62.0%, 80.1%)',\n pink8: 'hsl(323, 60.3%, 72.4%)',\n pink9: 'hsl(322, 65.0%, 54.5%)',\n pink10: 'hsl(322, 63.9%, 50.7%)',\n pink11: 'hsl(322, 75.0%, 46.0%)',\n pink12: 'hsl(320, 70.0%, 13.5%)',\n};\n\nconst plum = {\n plum1: 'hsl(292, 90.0%, 99.4%)',\n plum2: 'hsl(300, 100%, 98.6%)',\n plum3: 'hsl(299, 71.2%, 96.4%)',\n plum4: 'hsl(299, 62.0%, 93.8%)',\n plum5: 'hsl(298, 56.1%, 90.5%)',\n plum6: 'hsl(296, 51.3%, 85.8%)',\n plum7: 'hsl(295, 48.2%, 78.9%)',\n plum8: 'hsl(292, 47.7%, 70.8%)',\n plum9: 'hsl(292, 45.0%, 51.0%)',\n plum10: 'hsl(292, 50.2%, 46.9%)',\n plum11: 'hsl(292, 60.0%, 42.5%)',\n plum12: 'hsl(291, 66.0%, 14.0%)',\n};\n\nconst purple = {\n purple1: 'hsl(280, 65.0%, 99.4%)',\n purple2: 'hsl(276, 100%, 99.0%)',\n purple3: 'hsl(276, 83.1%, 97.0%)',\n purple4: 'hsl(275, 76.4%, 94.7%)',\n purple5: 'hsl(275, 70.8%, 91.8%)',\n purple6: 'hsl(274, 65.4%, 87.8%)',\n purple7: 'hsl(273, 61.0%, 81.7%)',\n purple8: 'hsl(272, 60.0%, 73.5%)',\n purple9: 'hsl(272, 51.0%, 54.0%)',\n purple10: 'hsl(272, 46.8%, 50.3%)',\n purple11: 'hsl(272, 50.0%, 45.8%)',\n purple12: 'hsl(272, 66.0%, 16.0%)',\n};\n\nconst mauve = {\n mauve1: 'hsl(300, 20.0%, 99.0%)',\n mauve2: 'hsl(300, 7.7%, 97.5%)',\n mauve3: 'hsl(294, 5.5%, 95.3%)',\n mauve4: 'hsl(289, 4.7%, 93.3%)',\n mauve5: 'hsl(283, 4.4%, 91.3%)',\n mauve6: 'hsl(278, 4.1%, 89.1%)',\n mauve7: 'hsl(271, 3.9%, 86.3%)',\n mauve8: 'hsl(255, 3.7%, 78.8%)',\n mauve9: 'hsl(252, 4.0%, 57.3%)',\n mauve10: 'hsl(253, 3.5%, 53.5%)',\n mauve11: 'hsl(252, 4.0%, 44.8%)',\n mauve12: 'hsl(260, 25.0%, 11.0%)',\n};\n\nconst red = {\n red1: 'hsl(359, 100%, 99.4%)',\n red2: 'hsl(359, 100%, 98.6%)',\n red3: 'hsl(360, 100%, 96.8%)',\n red4: 'hsl(360, 97.9%, 94.8%)',\n red5: 'hsl(360, 90.2%, 91.9%)',\n red6: 'hsl(360, 81.7%, 87.8%)',\n red7: 'hsl(359, 74.2%, 81.7%)',\n red8: 'hsl(359, 69.5%, 74.3%)',\n red9: 'hsl(358, 75.0%, 59.0%)',\n red10: 'hsl(358, 69.4%, 55.2%)',\n red11: 'hsl(358, 65.0%, 48.7%)',\n red12: 'hsl(354, 50.0%, 14.6%)',\n};\n\nconst sage = {\n sage1: 'hsl(155, 30.0%, 98.8%)',\n sage2: 'hsl(150, 16.7%, 97.6%)',\n sage3: 'hsl(151, 10.6%, 95.2%)',\n sage4: 'hsl(151, 8.8%, 93.0%)',\n sage5: 'hsl(151, 7.8%, 90.8%)',\n sage6: 'hsl(152, 7.2%, 88.4%)',\n sage7: 'hsl(153, 6.7%, 85.3%)',\n sage8: 'hsl(154, 6.1%, 77.5%)',\n sage9: 'hsl(155, 3.5%, 55.5%)',\n sage10: 'hsl(154, 2.8%, 51.7%)',\n sage11: 'hsl(155, 3.0%, 43.0%)',\n sage12: 'hsl(155, 24.0%, 9.0%)',\n};\n\nconst sand = {\n sand1: 'hsl(50, 20.0%, 99.0%)',\n sand2: 'hsl(60, 7.7%, 97.5%)',\n sand3: 'hsl(59, 6.5%, 95.1%)',\n sand4: 'hsl(58, 6.1%, 92.9%)',\n sand5: 'hsl(57, 6.0%, 90.7%)',\n sand6: 'hsl(56, 5.9%, 88.4%)',\n sand7: 'hsl(55, 5.9%, 85.2%)',\n sand8: 'hsl(51, 6.0%, 77.1%)',\n sand9: 'hsl(50, 2.0%, 55.7%)',\n sand10: 'hsl(55, 1.7%, 51.9%)',\n sand11: 'hsl(50, 2.0%, 43.1%)',\n sand12: 'hsl(50, 6.0%, 10.0%)',\n};\n\nconst sky = {\n sky1: 'hsl(193, 100%, 98.8%)',\n sky2: 'hsl(193, 100%, 97.3%)',\n sky3: 'hsl(193, 99.0%, 94.7%)',\n sky4: 'hsl(193, 91.4%, 91.4%)',\n sky5: 'hsl(194, 82.0%, 86.6%)',\n sky6: 'hsl(194, 74.1%, 79.5%)',\n sky7: 'hsl(194, 72.3%, 69.6%)',\n sky8: 'hsl(193, 77.9%, 53.9%)',\n sky9: 'hsl(193, 98.0%, 70.0%)',\n sky10: 'hsl(193, 87.0%, 66.5%)',\n sky11: 'hsl(195, 100%, 31.5%)',\n sky12: 'hsl(195, 100%, 13.0%)',\n};\n\nconst slate = {\n slate1: 'hsl(206, 30.0%, 98.8%)',\n slate2: 'hsl(210, 16.7%, 97.6%)',\n slate3: 'hsl(209, 13.3%, 95.3%)',\n slate4: 'hsl(209, 12.2%, 93.2%)',\n slate5: 'hsl(208, 11.7%, 91.1%)',\n slate6: 'hsl(208, 11.3%, 88.9%)',\n slate7: 'hsl(207, 11.1%, 85.9%)',\n slate8: 'hsl(205, 10.7%, 78.0%)',\n slate9: 'hsl(206, 6.0%, 56.1%)',\n slate10: 'hsl(206, 5.8%, 52.3%)',\n slate11: 'hsl(206, 6.0%, 43.5%)',\n slate12: 'hsl(206, 24.0%, 9.0%)',\n};\n\nconst teal = {\n teal1: 'hsl(165, 60.0%, 98.8%)',\n teal2: 'hsl(169, 64.7%, 96.7%)',\n teal3: 'hsl(169, 59.8%, 94.0%)',\n teal4: 'hsl(169, 53.1%, 90.2%)',\n teal5: 'hsl(170, 47.1%, 85.0%)',\n teal6: 'hsl(170, 42.6%, 77.9%)',\n teal7: 'hsl(170, 39.9%, 68.1%)',\n teal8: 'hsl(172, 42.1%, 52.5%)',\n teal9: 'hsl(173, 80.0%, 36.0%)',\n teal10: 'hsl(173, 83.4%, 32.5%)',\n teal11: 'hsl(174, 90.0%, 25.2%)',\n teal12: 'hsl(170, 50.0%, 12.5%)',\n};\n\nconst tomato = {\n tomato1: 'hsl(10, 100%, 99.4%)',\n tomato2: 'hsl(8, 100%, 98.4%)',\n tomato3: 'hsl(8, 100%, 96.6%)',\n tomato4: 'hsl(8, 100%, 94.3%)',\n tomato5: 'hsl(8, 92.8%, 91.0%)',\n tomato6: 'hsl(9, 84.7%, 86.3%)',\n tomato7: 'hsl(10, 77.3%, 79.5%)',\n tomato8: 'hsl(10, 71.6%, 71.0%)',\n tomato9: 'hsl(10, 78.0%, 54.0%)',\n tomato10: 'hsl(10, 71.5%, 50.0%)',\n tomato11: 'hsl(10, 82.0%, 43.5%)',\n tomato12: 'hsl(10, 50.0%, 13.5%)',\n};\n\nconst violet = {\n violet1: 'hsl(255, 65.0%, 99.4%)',\n violet2: 'hsl(252, 100%, 99.0%)',\n violet3: 'hsl(252, 96.9%, 97.4%)',\n violet4: 'hsl(252, 91.5%, 95.5%)',\n violet5: 'hsl(252, 85.1%, 93.0%)',\n violet6: 'hsl(252, 77.8%, 89.4%)',\n violet7: 'hsl(252, 71.0%, 83.7%)',\n violet8: 'hsl(252, 68.6%, 76.3%)',\n violet9: 'hsl(252, 56.0%, 57.5%)',\n violet10: 'hsl(251, 48.1%, 53.5%)',\n violet11: 'hsl(250, 43.0%, 48.0%)',\n violet12: 'hsl(254, 60.0%, 18.5%)',\n};\n\nconst yellow = {\n yellow1: 'hsl(60, 54.0%, 98.5%)',\n yellow2: 'hsl(52, 100%, 95.5%)',\n yellow3: 'hsl(55, 100%, 90.9%)',\n yellow4: 'hsl(54, 100%, 86.6%)',\n yellow5: 'hsl(52, 97.9%, 82.0%)',\n yellow6: 'hsl(50, 89.4%, 76.1%)',\n yellow7: 'hsl(47, 80.4%, 68.0%)',\n yellow8: 'hsl(48, 100%, 46.1%)',\n yellow9: 'hsl(53, 92.0%, 50.0%)',\n yellow10: 'hsl(50, 100%, 48.5%)',\n yellow11: 'hsl(42, 100%, 29.0%)',\n yellow12: 'hsl(40, 55.0%, 13.5%)',\n};\n\nconst amberA = {\n amberA1: 'hsla(40, 94.9%, 38.7%, 0.016)',\n amberA2: 'hsla(40, 100%, 50.3%, 0.071)',\n amberA3: 'hsla(44, 100%, 50.1%, 0.165)',\n amberA4: 'hsla(43, 100%, 50.0%, 0.263)',\n amberA5: 'hsla(42, 100%, 50.0%, 0.365)',\n amberA6: 'hsla(38, 100%, 50.1%, 0.475)',\n amberA7: 'hsla(36, 99.9%, 46.2%, 0.612)',\n amberA8: 'hsla(35, 99.8%, 46.0%, 0.832)',\n amberA9: 'hsla(39, 100%, 50.0%, 0.859)',\n amberA10: 'hsla(35, 100%, 50.0%, 0.891)',\n amberA11: 'hsla(29, 100%, 33.6%, 0.980)',\n amberA12: 'hsla(20, 99.8%, 14.1%, 0.965)',\n};\n\nconst blueA = {\n blueA1: 'hsla(210, 100%, 51.0%, 0.016)',\n blueA2: 'hsla(210, 100%, 51.0%, 0.040)',\n blueA3: 'hsla(210, 100%, 50.3%, 0.071)',\n blueA4: 'hsla(210, 100%, 50.1%, 0.118)',\n blueA5: 'hsla(208, 99.1%, 47.1%, 0.189)',\n blueA6: 'hsla(209, 99.5%, 45.3%, 0.283)',\n blueA7: 'hsla(208, 99.9%, 43.8%, 0.412)',\n blueA8: 'hsla(206, 99.8%, 45.1%, 0.632)',\n blueA9: 'hsla(206, 100%, 50.0%, 0.980)',\n blueA10: 'hsla(208, 100%, 47.2%, 0.980)',\n blueA11: 'hsla(212, 100%, 43.0%, 0.980)',\n blueA12: 'hsla(213, 100%, 14.4%, 0.980)',\n};\n\nconst bronzeA = {\n bronzeA1: 'hsla(0, 89.3%, 18.3%, 0.012)',\n bronzeA2: 'hsla(17, 95.1%, 40.1%, 0.036)',\n bronzeA3: 'hsla(18, 98.3%, 29.8%, 0.067)',\n bronzeA4: 'hsla(17, 99.6%, 26.0%, 0.106)',\n bronzeA5: 'hsla(19, 99.6%, 23.8%, 0.157)',\n bronzeA6: 'hsla(17, 99.2%, 22.5%, 0.220)',\n bronzeA7: 'hsla(18, 99.7%, 21.6%, 0.310)',\n bronzeA8: 'hsla(17, 99.5%, 20.2%, 0.420)',\n bronzeA9: 'hsla(18, 99.9%, 16.7%, 0.553)',\n bronzeA10: 'hsla(17, 99.2%, 15.4%, 0.589)',\n bronzeA11: 'hsla(15, 99.9%, 13.2%, 0.655)',\n bronzeA12: 'hsla(12, 98.7%, 5.7%, 0.832)',\n};\n\nconst brownA = {\n brownA1: 'hsla(30, 94.3%, 34.6%, 0.012)',\n brownA2: 'hsla(30, 94.3%, 34.6%, 0.036)',\n brownA3: 'hsla(30, 97.7%, 33.9%, 0.083)',\n brownA4: 'hsla(31, 98.5%, 34.2%, 0.134)',\n brownA5: 'hsla(29, 100%, 34.3%, 0.200)',\n brownA6: 'hsla(28, 99.2%, 34.6%, 0.291)',\n brownA7: 'hsla(29, 99.8%, 33.8%, 0.412)',\n brownA8: 'hsla(28, 100%, 33.3%, 0.553)',\n brownA9: 'hsla(28, 99.9%, 25.5%, 0.655)',\n brownA10: 'hsla(27, 99.7%, 22.4%, 0.675)',\n brownA11: 'hsla(25, 99.8%, 17.3%, 0.714)',\n brownA12: 'hsla(21, 99.4%, 6.6%, 0.867)',\n};\n\nconst crimsonA = {\n crimsonA1: 'hsla(340, 100%, 51.0%, 0.012)',\n crimsonA2: 'hsla(330, 100%, 51.0%, 0.032)',\n crimsonA3: 'hsla(332, 99.1%, 47.1%, 0.063)',\n crimsonA4: 'hsla(331, 99.9%, 44.3%, 0.102)',\n crimsonA5: 'hsla(333, 99.9%, 42.3%, 0.153)',\n crimsonA6: 'hsla(333, 99.5%, 40.5%, 0.224)',\n crimsonA7: 'hsla(335, 99.7%, 39.1%, 0.322)',\n crimsonA8: 'hsla(336, 99.5%, 38.5%, 0.440)',\n crimsonA9: 'hsla(336, 99.9%, 44.3%, 0.761)',\n crimsonA10: 'hsla(336, 100%, 42.5%, 0.808)',\n crimsonA11: 'hsla(336, 99.8%, 40.3%, 0.883)',\n crimsonA12: 'hsla(340, 99.0%, 10.0%, 0.950)',\n};\n\nconst cyanA = {\n cyanA1: 'hsla(195, 95.2%, 41.2%, 0.020)',\n cyanA2: 'hsla(185, 99.9%, 42.3%, 0.051)',\n cyanA3: 'hsla(186, 97.8%, 42.2%, 0.095)',\n cyanA4: 'hsla(186, 99.9%, 38.5%, 0.153)',\n cyanA5: 'hsla(187, 99.3%, 36.6%, 0.232)',\n cyanA6: 'hsla(188, 99.4%, 35.4%, 0.334)',\n cyanA7: 'hsla(189, 99.6%, 35.0%, 0.483)',\n cyanA8: 'hsla(189, 99.9%, 37.6%, 0.761)',\n cyanA9: 'hsla(190, 100%, 37.8%, 0.980)',\n cyanA10: 'hsla(191, 99.9%, 34.6%, 0.969)',\n cyanA11: 'hsla(192, 100%, 27.6%, 0.953)',\n cyanA12: 'hsla(192, 100%, 11.0%, 0.980)',\n};\n\nconst goldA = {\n goldA1: 'hsla(60, 89.3%, 18.3%, 0.012)',\n goldA2: 'hsla(47, 99.9%, 34.6%, 0.051)',\n goldA3: 'hsla(45, 97.0%, 27.9%, 0.087)',\n goldA4: 'hsla(46, 98.0%, 25.4%, 0.134)',\n goldA5: 'hsla(43, 98.4%, 22.6%, 0.185)',\n goldA6: 'hsla(41, 99.7%, 22.0%, 0.259)',\n goldA7: 'hsla(38, 99.8%, 21.5%, 0.357)',\n goldA8: 'hsla(36, 99.3%, 21.5%, 0.487)',\n goldA9: 'hsla(36, 99.9%, 16.2%, 0.604)',\n goldA10: 'hsla(36, 99.2%, 14.6%, 0.636)',\n goldA11: 'hsla(35, 99.1%, 11.2%, 0.687)',\n goldA12: 'hsla(38, 98.0%, 3.8%, 0.832)',\n};\n\nconst grassA = {\n grassA1: 'hsla(120, 94.9%, 38.7%, 0.016)',\n grassA2: 'hsla(120, 94.9%, 38.7%, 0.048)',\n grassA3: 'hsla(120, 98.0%, 35.5%, 0.079)',\n grassA4: 'hsla(120, 98.7%, 31.5%, 0.126)',\n grassA5: 'hsla(122, 98.5%, 29.9%, 0.193)',\n grassA6: 'hsla(125, 99.2%, 27.9%, 0.283)',\n grassA7: 'hsla(125, 99.9%, 27.0%, 0.408)',\n grassA8: 'hsla(131, 100%, 27.6%, 0.604)',\n grassA9: 'hsla(131, 99.7%, 26.3%, 0.726)',\n grassA10: 'hsla(132, 99.9%, 24.0%, 0.761)',\n grassA11: 'hsla(133, 99.5%, 19.5%, 0.840)',\n grassA12: 'hsla(128, 98.0%, 4.9%, 0.895)',\n};\n\nconst grayA = {\n grayA1: 'hsla(0, 0%, 0%, 0.012)',\n grayA2: 'hsla(0, 0%, 0%, 0.027)',\n grayA3: 'hsla(0, 0%, 0%, 0.047)',\n grayA4: 'hsla(0, 0%, 0%, 0.071)',\n grayA5: 'hsla(0, 0%, 0%, 0.090)',\n grayA6: 'hsla(0, 0%, 0%, 0.114)',\n grayA7: 'hsla(0, 0%, 0%, 0.141)',\n grayA8: 'hsla(0, 0%, 0%, 0.220)',\n grayA9: 'hsla(0, 0%, 0%, 0.439)',\n grayA10: 'hsla(0, 0%, 0%, 0.478)',\n grayA11: 'hsla(0, 0%, 0%, 0.565)',\n grayA12: 'hsla(0, 0%, 0%, 0.910)',\n};\n\nconst greenA = {\n greenA1: 'hsla(140, 94.9%, 38.7%, 0.016)',\n greenA2: 'hsla(138, 99.9%, 38.5%, 0.051)',\n greenA3: 'hsla(139, 97.7%, 36.9%, 0.087)',\n greenA4: 'hsla(139, 98.5%, 32.7%, 0.134)',\n greenA5: 'hsla(141, 100%, 30.4%, 0.200)',\n greenA6: 'hsla(142, 99.0%, 28.9%, 0.295)',\n greenA7: 'hsla(146, 99.5%, 27.6%, 0.428)',\n greenA8: 'hsla(151, 99.5%, 28.8%, 0.644)',\n greenA9: 'hsla(151, 99.9%, 28.0%, 0.812)',\n greenA10: 'hsla(152, 99.6%, 25.8%, 0.840)',\n greenA11: 'hsla(153, 99.9%, 21.0%, 0.906)',\n greenA12: 'hsla(155, 99.4%, 6.2%, 0.918)',\n};\n\nconst indigoA = {\n indigoA1: 'hsla(240, 92.6%, 26.5%, 0.008)',\n indigoA2: 'hsla(223, 100%, 51.0%, 0.028)',\n indigoA3: 'hsla(224, 100%, 50.1%, 0.059)',\n indigoA4: 'hsla(223, 98.0%, 48.5%, 0.099)',\n indigoA5: 'hsla(225, 98.6%, 46.4%, 0.150)',\n indigoA6: 'hsla(224, 99.5%, 44.9%, 0.224)',\n indigoA7: 'hsla(225, 99.7%, 43.9%, 0.318)',\n indigoA8: 'hsla(226, 99.5%, 43.1%, 0.448)',\n indigoA9: 'hsla(226, 100%, 41.2%, 0.757)',\n indigoA10: 'hsla(226, 99.8%, 37.1%, 0.773)',\n indigoA11: 'hsla(226, 99.6%, 31.1%, 0.797)',\n indigoA12: 'hsla(226, 99.3%, 11.4%, 0.938)',\n};\n\nconst limeA = {\n limeA1: 'hsla(80, 93.8%, 31.4%, 0.020)',\n limeA2: 'hsla(85, 99.3%, 40.2%, 0.059)',\n limeA3: 'hsla(84, 98.7%, 43.2%, 0.138)',\n limeA4: 'hsla(84, 99.6%, 43.0%, 0.220)',\n limeA5: 'hsla(85, 99.8%, 41.8%, 0.310)',\n limeA6: 'hsla(82, 99.8%, 39.3%, 0.420)',\n limeA7: 'hsla(79, 99.7%, 34.6%, 0.585)',\n limeA8: 'hsla(76, 99.8%, 33.7%, 0.828)',\n limeA9: 'hsla(81, 99.8%, 40.2%, 0.836)',\n limeA10: 'hsla(80, 100%, 37.6%, 0.851)',\n limeA11: 'hsla(75, 99.5%, 22.0%, 0.950)',\n limeA12: 'hsla(78, 99.6%, 8.4%, 0.965)',\n};\n\nconst mintA = {\n mintA1: 'hsla(168, 95.4%, 42.8%, 0.024)',\n mintA2: 'hsla(164, 99.1%, 47.1%, 0.063)',\n mintA3: 'hsla(164, 99.3%, 43.5%, 0.118)',\n mintA4: 'hsla(164, 99.3%, 41.3%, 0.177)',\n mintA5: 'hsla(165, 99.0%, 37.5%, 0.248)',\n mintA6: 'hsla(165, 100%, 35.0%, 0.353)',\n mintA7: 'hsla(166, 99.9%, 33.5%, 0.510)',\n mintA8: 'hsla(168, 99.6%, 34.6%, 0.750)',\n mintA9: 'hsla(167, 99.9%, 39.5%, 0.561)',\n mintA10: 'hsla(167, 99.7%, 37.4%, 0.589)',\n mintA11: 'hsla(172, 99.8%, 22.4%, 0.922)',\n mintA12: 'hsla(172, 99.7%, 8.8%, 0.965)',\n};\n\nconst oliveA = {\n oliveA1: 'hsla(120, 89.3%, 18.3%, 0.012)',\n oliveA2: 'hsla(120, 87.7%, 16.0%, 0.028)',\n oliveA3: 'hsla(120, 99.5%, 7.7%, 0.051)',\n oliveA4: 'hsla(120, 92.3%, 8.5%, 0.075)',\n oliveA5: 'hsla(120, 86.0%, 6.9%, 0.099)',\n oliveA6: 'hsla(120, 94.8%, 6.8%, 0.122)',\n oliveA7: 'hsla(120, 99.3%, 5.2%, 0.153)',\n oliveA8: 'hsla(110, 93.8%, 5.2%, 0.240)',\n oliveA9: 'hsla(111, 98.7%, 3.0%, 0.459)',\n oliveA10: 'hsla(111, 93.5%, 2.9%, 0.499)',\n oliveA11: 'hsla(111, 95.2%, 2.5%, 0.585)',\n oliveA12: 'hsla(110, 97.6%, 2.6%, 0.930)',\n};\n\nconst orangeA = {\n orangeA1: 'hsla(20, 94.9%, 38.7%, 0.016)',\n orangeA2: 'hsla(24, 95.8%, 46.5%, 0.044)',\n orangeA3: 'hsla(25, 100%, 50.5%, 0.095)',\n orangeA4: 'hsla(26, 100%, 50.0%, 0.157)',\n orangeA5: 'hsla(25, 100%, 50.1%, 0.236)',\n orangeA6: 'hsla(25, 100%, 50.1%, 0.346)',\n orangeA7: 'hsla(24, 100%, 50.1%, 0.495)',\n orangeA8: 'hsla(24, 99.7%, 48.7%, 0.695)',\n orangeA9: 'hsla(24, 99.9%, 48.4%, 0.969)',\n orangeA10: 'hsla(23, 100%, 46.4%, 0.980)',\n orangeA11: 'hsla(23, 100%, 36.8%, 0.980)',\n orangeA12: 'hsla(15, 99.4%, 11.0%, 0.934)',\n};\n\nconst pinkA = {\n pinkA1: 'hsla(320, 100%, 51.0%, 0.012)',\n pinkA2: 'hsla(323, 100%, 51.0%, 0.032)',\n pinkA3: 'hsla(323, 98.9%, 47.3%, 0.067)',\n pinkA4: 'hsla(323, 99.9%, 44.3%, 0.102)',\n pinkA5: 'hsla(324, 99.9%, 42.3%, 0.153)',\n pinkA6: 'hsla(323, 99.5%, 39.6%, 0.224)',\n pinkA7: 'hsla(323, 99.7%, 38.5%, 0.322)',\n pinkA8: 'hsla(323, 99.5%, 37.7%, 0.444)',\n pinkA9: 'hsla(322, 99.7%, 39.3%, 0.750)',\n pinkA10: 'hsla(322, 100%, 39.1%, 0.808)',\n pinkA11: 'hsla(322, 99.8%, 39.0%, 0.887)',\n pinkA12: 'hsla(321, 99.8%, 10.0%, 0.961)',\n};\n\nconst plumA = {\n plumA1: 'hsla(280, 100%, 51.0%, 0.012)',\n plumA2: 'hsla(300, 100%, 51.0%, 0.028)',\n plumA3: 'hsla(300, 99.0%, 40.9%, 0.063)',\n plumA4: 'hsla(300, 99.9%, 38.5%, 0.102)',\n plumA5: 'hsla(298, 98.2%, 35.9%, 0.150)',\n plumA6: 'hsla(297, 99.6%, 33.7%, 0.216)',\n plumA7: 'hsla(295, 99.7%, 32.6%, 0.314)',\n plumA8: 'hsla(292, 99.6%, 32.4%, 0.432)',\n plumA9: 'hsla(292, 99.9%, 31.0%, 0.710)',\n plumA10: 'hsla(292, 99.9%, 30.8%, 0.765)',\n plumA11: 'hsla(292, 99.8%, 30.7%, 0.832)',\n plumA12: 'hsla(291, 99.9%, 9.7%, 0.953)',\n};\n\nconst purpleA = {\n purpleA1: 'hsla(300, 94.3%, 34.6%, 0.012)',\n purpleA2: 'hsla(276, 100%, 51.0%, 0.020)',\n purpleA3: 'hsla(277, 99.6%, 46.5%, 0.055)',\n purpleA4: 'hsla(274, 97.9%, 44.3%, 0.095)',\n purpleA5: 'hsla(276, 98.6%, 42.0%, 0.142)',\n purpleA6: 'hsla(275, 100%, 39.2%, 0.200)',\n purpleA7: 'hsla(273, 99.2%, 38.2%, 0.295)',\n purpleA8: 'hsla(272, 99.7%, 37.6%, 0.424)',\n purpleA9: 'hsla(272, 99.6%, 34.0%, 0.695)',\n purpleA10: 'hsla(272, 99.7%, 32.0%, 0.730)',\n purpleA11: 'hsla(272, 99.8%, 29.7%, 0.773)',\n purpleA12: 'hsla(272, 99.2%, 11.3%, 0.946)',\n};\n\nconst mauveA = {\n mauveA1: 'hsla(300, 89.3%, 18.3%, 0.012)',\n mauveA2: 'hsla(300, 78.1%, 9.0%, 0.028)',\n mauveA3: 'hsla(300, 99.5%, 7.7%, 0.051)',\n mauveA4: 'hsla(270, 90.5%, 6.1%, 0.071)',\n mauveA5: 'hsla(270, 83.0%, 5.2%, 0.091)',\n mauveA6: 'hsla(300, 93.5%, 3.7%, 0.114)',\n mauveA7: 'hsla(270, 82.6%, 3.3%, 0.142)',\n mauveA8: 'hsla(255, 95.2%, 3.7%, 0.220)',\n mauveA9: 'hsla(255, 94.8%, 3.7%, 0.444)',\n mauveA10: 'hsla(253, 96.5%, 3.8%, 0.483)',\n mauveA11: 'hsla(247, 97.9%, 3.2%, 0.569)',\n mauveA12: 'hsla(261, 98.7%, 3.0%, 0.918)',\n};\n\nconst redA = {\n redA1: 'hsla(0, 100%, 51.0%, 0.012)',\n redA2: 'hsla(0, 100%, 51.0%, 0.032)',\n redA3: 'hsla(0, 100%, 50.2%, 0.063)',\n redA4: 'hsla(0, 100%, 50.0%, 0.102)',\n redA5: 'hsla(0, 99.9%, 47.5%, 0.153)',\n redA6: 'hsla(0, 99.5%, 44.9%, 0.224)',\n redA7: 'hsla(359, 99.7%, 42.7%, 0.318)',\n redA8: 'hsla(359, 99.6%, 41.1%, 0.436)',\n redA9: 'hsla(358, 99.9%, 42.9%, 0.718)',\n redA10: 'hsla(358, 99.9%, 41.0%, 0.761)',\n redA11: 'hsla(358, 99.8%, 38.3%, 0.832)',\n redA12: 'hsla(355, 99.3%, 7.9%, 0.926)',\n};\n\nconst sageA = {\n sageA1: 'hsla(150, 92.6%, 26.5%, 0.016)',\n sageA2: 'hsla(150, 87.7%, 16.0%, 0.028)',\n sageA3: 'hsla(160, 98.4%, 10.9%, 0.055)',\n sageA4: 'hsla(140, 92.3%, 8.5%, 0.075)',\n sageA5: 'hsla(160, 86.0%, 6.9%, 0.099)',\n sageA6: 'hsla(156, 95.1%, 8.2%, 0.126)',\n sageA7: 'hsla(156, 98.6%, 6.3%, 0.157)',\n sageA8: 'hsla(154, 94.6%, 6.0%, 0.240)',\n sageA9: 'hsla(154, 98.7%, 3.0%, 0.459)',\n sageA10: 'hsla(154, 93.5%, 2.9%, 0.499)',\n sageA11: 'hsla(154, 95.2%, 2.5%, 0.585)',\n sageA12: 'hsla(158, 97.0%, 2.4%, 0.934)',\n};\n\nconst sandA = {\n sandA1: 'hsla(60, 89.3%, 18.3%, 0.012)',\n sandA2: 'hsla(60, 78.1%, 9.0%, 0.028)',\n sandA3: 'hsla(60, 99.0%, 3.9%, 0.051)',\n sandA4: 'hsla(60, 88.9%, 5.9%, 0.075)',\n sandA5: 'hsla(60, 86.0%, 6.9%, 0.099)',\n sandA6: 'hsla(60, 93.2%, 5.2%, 0.122)',\n sandA7: 'hsla(60, 98.3%, 5.1%, 0.157)',\n sandA8: 'hsla(51, 94.1%, 6.0%, 0.244)',\n sandA9: 'hsla(60, 99.8%, 1.7%, 0.451)',\n sandA10: 'hsla(60, 90.7%, 1.8%, 0.491)',\n sandA11: 'hsla(45, 93.7%, 1.5%, 0.577)',\n sandA12: 'hsla(60, 98.0%, 0.7%, 0.906)',\n};\n\nconst skyA = {\n skyA1: 'hsla(190, 100%, 51.0%, 0.024)',\n skyA2: 'hsla(193, 100%, 50.1%, 0.055)',\n skyA3: 'hsla(193, 100%, 50.1%, 0.106)',\n skyA4: 'hsla(194, 99.6%, 47.7%, 0.165)',\n skyA5: 'hsla(194, 99.2%, 45.4%, 0.244)',\n skyA6: 'hsla(194, 99.9%, 42.3%, 0.357)',\n skyA7: 'hsla(194, 99.8%, 42.2%, 0.526)',\n skyA8: 'hsla(193, 99.9%, 43.8%, 0.820)',\n skyA9: 'hsla(193, 99.7%, 49.4%, 0.593)',\n skyA10: 'hsla(193, 99.8%, 46.6%, 0.628)',\n skyA11: 'hsla(196, 100%, 31.2%, 0.980)',\n skyA12: 'hsla(196, 100%, 12.2%, 0.980)',\n};\n\nconst slateA = {\n slateA1: 'hsla(210, 92.6%, 26.5%, 0.016)',\n slateA2: 'hsla(210, 87.7%, 16.0%, 0.028)',\n slateA3: 'hsla(210, 98.8%, 14.4%, 0.055)',\n slateA4: 'hsla(210, 94.1%, 11.1%, 0.075)',\n slateA5: 'hsla(216, 91.1%, 10.9%, 0.099)',\n slateA6: 'hsla(206, 96.4%, 11.3%, 0.126)',\n slateA7: 'hsla(210, 99.1%, 10.1%, 0.157)',\n slateA8: 'hsla(205, 96.5%, 10.0%, 0.244)',\n slateA9: 'hsla(206, 98.8%, 5.9%, 0.467)',\n slateA10: 'hsla(206, 99.6%, 5.4%, 0.506)',\n slateA11: 'hsla(206, 97.0%, 4.8%, 0.593)',\n slateA12: 'hsla(202, 97.0%, 2.4%, 0.934)',\n};\n\nconst tealA = {\n tealA1: 'hsla(165, 95.2%, 41.2%, 0.020)',\n tealA2: 'hsla(169, 99.5%, 39.4%, 0.055)',\n tealA3: 'hsla(167, 97.6%, 38.1%, 0.095)',\n tealA4: 'hsla(168, 98.1%, 34.6%, 0.150)',\n tealA5: 'hsla(170, 99.4%, 32.3%, 0.220)',\n tealA6: 'hsla(170, 99.7%, 30.1%, 0.314)',\n tealA7: 'hsla(170, 99.3%, 28.7%, 0.448)',\n tealA8: 'hsla(172, 99.8%, 29.7%, 0.675)',\n tealA9: 'hsla(173, 99.8%, 31.1%, 0.930)',\n tealA10: 'hsla(173, 99.7%, 28.7%, 0.946)',\n tealA11: 'hsla(174, 99.8%, 23.3%, 0.977)',\n tealA12: 'hsla(171, 98.8%, 6.8%, 0.938)',\n};\n\nconst tomatoA = {\n tomatoA1: 'hsla(0, 100%, 51.0%, 0.012)',\n tomatoA2: 'hsla(8, 100%, 51.0%, 0.032)',\n tomatoA3: 'hsla(7, 100%, 50.2%, 0.067)',\n tomatoA4: 'hsla(8, 100%, 50.1%, 0.114)',\n tomatoA5: 'hsla(7, 99.5%, 47.9%, 0.173)',\n tomatoA6: 'hsla(9, 99.9%, 46.2%, 0.255)',\n tomatoA7: 'hsla(10, 99.8%, 43.6%, 0.365)',\n tomatoA8: 'hsla(10, 99.5%, 41.8%, 0.499)',\n tomatoA9: 'hsla(10, 99.9%, 43.8%, 0.820)',\n tomatoA10: 'hsla(10, 100%, 41.8%, 0.859)',\n tomatoA11: 'hsla(10, 99.9%, 38.8%, 0.922)',\n tomatoA12: 'hsla(10, 99.0%, 7.4%, 0.934)',\n};\n\nconst violetA = {\n violetA1: 'hsla(270, 94.3%, 34.6%, 0.012)',\n violetA2: 'hsla(252, 100%, 51.0%, 0.020)',\n violetA3: 'hsla(254, 100%, 50.0%, 0.051)',\n violetA4: 'hsla(251, 98.3%, 48.2%, 0.087)',\n violetA5: 'hsla(252, 99.0%, 45.7%, 0.130)',\n violetA6: 'hsla(251, 99.1%, 44.0%, 0.189)',\n violetA7: 'hsla(252, 99.5%, 41.7%, 0.279)',\n violetA8: 'hsla(252, 100%, 40.7%, 0.400)',\n violetA9: 'hsla(252, 99.9%, 35.8%, 0.663)',\n violetA10: 'hsla(251, 99.6%, 32.5%, 0.691)',\n violetA11: 'hsla(250, 99.8%, 28.4%, 0.726)',\n violetA12: 'hsla(254, 99.5%, 11.9%, 0.926)',\n};\n\nconst yellowA = {\n yellowA1: 'hsla(60, 94.3%, 34.6%, 0.024)',\n yellowA2: 'hsla(52, 100%, 50.4%, 0.091)',\n yellowA3: 'hsla(55, 100%, 50.2%, 0.181)',\n yellowA4: 'hsla(54, 100%, 50.1%, 0.267)',\n yellowA5: 'hsla(52, 99.9%, 49.5%, 0.357)',\n yellowA6: 'hsla(50, 100%, 47.4%, 0.451)',\n yellowA7: 'hsla(47, 99.8%, 44.6%, 0.577)',\n yellowA8: 'hsla(48, 100%, 46.0%, 0.980)',\n yellowA9: 'hsla(53, 100%, 48.0%, 0.961)',\n yellowA10: 'hsla(50, 100%, 48.4%, 0.980)',\n yellowA11: 'hsla(42, 100%, 28.6%, 0.980)',\n yellowA12: 'hsla(41, 98.9%, 8.0%, 0.942)',\n};\n\nconst blackA = {\n blackA1: 'hsla(0, 0%, 0%, 0.012)',\n blackA2: 'hsla(0, 0%, 0%, 0.027)',\n blackA3: 'hsla(0, 0%, 0%, 0.047)',\n blackA4: 'hsla(0, 0%, 0%, 0.071)',\n blackA5: 'hsla(0, 0%, 0%, 0.090)',\n blackA6: 'hsla(0, 0%, 0%, 0.114)',\n blackA7: 'hsla(0, 0%, 0%, 0.141)',\n blackA8: 'hsla(0, 0%, 0%, 0.220)',\n blackA9: 'hsla(0, 0%, 0%, 0.439)',\n blackA10: 'hsla(0, 0%, 0%, 0.478)',\n blackA11: 'hsla(0, 0%, 0%, 0.565)',\n blackA12: 'hsla(0, 0%, 0%, 0.910)',\n};\n\nconst whiteA = {\n whiteA1: 'hsla(0, 0%, 100%, 0)',\n whiteA2: 'hsla(0, 0%, 100%, 0.013)',\n whiteA3: 'hsla(0, 0%, 100%, 0.034)',\n whiteA4: 'hsla(0, 0%, 100%, 0.056)',\n whiteA5: 'hsla(0, 0%, 100%, 0.086)',\n whiteA6: 'hsla(0, 0%, 100%, 0.124)',\n whiteA7: 'hsla(0, 0%, 100%, 0.176)',\n whiteA8: 'hsla(0, 0%, 100%, 0.249)',\n whiteA9: 'hsla(0, 0%, 100%, 0.386)',\n whiteA10: 'hsla(0, 0%, 100%, 0.446)',\n whiteA11: 'hsla(0, 0%, 100%, 0.592)',\n whiteA12: 'hsla(0, 0%, 100%, 0.923)',\n};\n\nexport { amber, amberA, amber$1 as amberDark, amberA$1 as amberDarkA, blackA, blue, blueA, blue$1 as blueDark, blueA$1 as blueDarkA, bronze, bronzeA, bronze$1 as bronzeDark, bronzeA$1 as bronzeDarkA, brown, brownA, brown$1 as brownDark, brownA$1 as brownDarkA, crimson, crimsonA, crimson$1 as crimsonDark, crimsonA$1 as crimsonDarkA, cyan, cyanA, cyan$1 as cyanDark, cyanA$1 as cyanDarkA, gold, goldA, gold$1 as goldDark, goldA$1 as goldDarkA, grass, grassA, grass$1 as grassDark, grassA$1 as grassDarkA, gray, grayA, gray$1 as grayDark, grayA$1 as grayDarkA, green, greenA, green$1 as greenDark, greenA$1 as greenDarkA, indigo, indigoA, indigo$1 as indigoDark, indigoA$1 as indigoDarkA, lime, limeA, lime$1 as limeDark, limeA$1 as limeDarkA, mauve, mauveA, mauve$1 as mauveDark, mauveA$1 as mauveDarkA, mint, mintA, mint$1 as mintDark, mintA$1 as mintDarkA, olive, oliveA, olive$1 as oliveDark, oliveA$1 as oliveDarkA, orange, orangeA, orange$1 as orangeDark, orangeA$1 as orangeDarkA, pink, pinkA, pink$1 as pinkDark, pinkA$1 as pinkDarkA, plum, plumA, plum$1 as plumDark, plumA$1 as plumDarkA, purple, purpleA, purple$1 as purpleDark, purpleA$1 as purpleDarkA, red, redA, red$1 as redDark, redA$1 as redDarkA, sage, sageA, sage$1 as sageDark, sageA$1 as sageDarkA, sand, sandA, sand$1 as sandDark, sandA$1 as sandDarkA, sky, skyA, sky$1 as skyDark, skyA$1 as skyDarkA, slate, slateA, slate$1 as slateDark, slateA$1 as slateDarkA, teal, tealA, teal$1 as tealDark, tealA$1 as tealDarkA, tomato, tomatoA, tomato$1 as tomatoDark, tomatoA$1 as tomatoDarkA, violet, violetA, violet$1 as violetDark, violetA$1 as violetDarkA, whiteA, yellow, yellowA, yellow$1 as yellowDark, yellowA$1 as yellowDarkA };\n","import { keyframes } from '@emotion/react';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { useContext, createContext, useState, useRef, useEffect } from 'react';\nimport { useStorage, useDisconnect, useConnectionStatus } from '@thirdweb-dev/react-core';\nimport { ChevronLeftIcon } from '@radix-ui/react-icons';\nimport { walletIds } from '@thirdweb-dev/wallets';\nimport { detect } from 'detect-browser';\nimport { mauveDark, tomato, green, mauve } from '@radix-ui/colors';\nimport styled from '@emotion/styled';\n\nconst darkColors = {\n base1: \"hsl(230deg 11.63% 8.43%)\",\n base2: \"hsl(230deg 11.63% 12%)\",\n base3: \"hsl(230deg 11.63% 15%)\",\n base4: \"hsl(230deg 11.63% 17%)\",\n primaryText: mauveDark.mauve12,\n secondaryText: mauveDark.mauve10,\n danger: tomato.tomato9,\n success: green.green8,\n overlay: \"rgba(0, 0, 0, 0.7)\",\n accentText: \"#3385FF\",\n accentBg: \"hsl(216 100% 50%)\",\n textOnAccent: mauveDark.mauve12\n};\nconst lightColors = {\n base1: mauve.mauve1,\n base2: mauve.mauve3,\n base3: mauve.mauve5,\n base4: mauve.mauve6,\n primaryText: mauve.mauve12,\n secondaryText: mauveDark.mauve9,\n accentText: \"hsl(216 100% 45%)\",\n success: green.green9,\n danger: tomato.tomato9,\n overlay: \"rgba(0, 0, 0, 0.7)\",\n accentBg: \"hsl(216 100% 50%)\",\n textOnAccent: mauve.mauve1\n};\nfunction createThemeObj(colors) {\n return {\n type: \"dark\",\n colors: {\n primaryText: colors.primaryText,\n secondaryText: colors.secondaryText,\n accentText: colors.accentText,\n danger: colors.danger,\n success: colors.success,\n modalOverlayBg: colors.overlay,\n accentButtonBg: colors.accentBg,\n accentButtonText: colors.textOnAccent,\n primaryButtonBg: colors.primaryText,\n primaryButtonText: colors.base1,\n secondaryButtonBg: colors.base3,\n secondaryButtonText: colors.primaryText,\n secondaryButtonHoverBg: colors.base4,\n modalBg: colors.base1,\n dropdownBg: colors.base1,\n tooltipBg: colors.primaryText,\n tooltipText: colors.base1,\n inputAutofillBg: colors.base2,\n scrollbarBg: colors.base2,\n walletSelectorButtonHoverBg: colors.base2,\n separatorLine: colors.base4,\n secondaryIconColor: colors.secondaryText,\n secondaryIconHoverBg: colors.base3,\n secondaryIconHoverColor: colors.primaryText,\n borderColor: colors.base4,\n skeletonBg: colors.base3,\n selectedTextColor: colors.base1,\n selectedTextBg: colors.primaryText,\n connectedButtonBg: colors.base1,\n connectedButtonBgHover: colors.base2\n },\n fontFamily: \"inherit\"\n };\n}\nconst darkThemeObj = /* @__PURE__ */createThemeObj(darkColors);\nconst lightThemeObj = /* @__PURE__ */createThemeObj(lightColors);\nconst fontSize = {\n xs: \"12px\",\n sm: \"14px\",\n md: \"16px\",\n lg: \"20px\",\n xl: \"24px\"\n};\nconst spacing = {\n xxs: \"6px\",\n xs: \"8px\",\n sm: \"12px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n xxl: \"48px\",\n \"3xl\": \"64px\"\n};\nconst radius = {\n sm: \"6px\",\n md: \"8px\",\n lg: \"12px\",\n xl: \"20px\",\n xxl: \"32px\"\n};\nconst iconSize = {\n xs: \"12\",\n sm: \"16\",\n md: \"24\",\n lg: \"32\",\n xl: \"48\",\n xxl: \"64\"\n};\n\n// desktop first style media query\nconst media = {\n mobile: `@media (max-width: 640px)`\n};\n\n// TODO - move to theme\nconst shadow = {\n sm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n md: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n lg: \"0 10px 15px -3px rgb(0 0 0 / 0.07), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n xl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n};\n\n/**\n * Create a custom light theme object by using the default dark theme as a base and applying overrides.\n *\n * @example\n * ```ts\n * const customTheme = lightTheme({\n * colors: {\n * modalBg: \"red\",\n * }\n * })\n * ```\n */\nfunction lightTheme(overrides) {\n if (!overrides) {\n return lightThemeObj;\n }\n return applyThemeOverrides(lightThemeObj, overrides);\n}\n\n/**\n * Create a custom dark theme object by using the default dark theme as a base and applying overrides.\n *\n * @example\n * ```ts\n * const customTheme = darkTheme({\n * colors: {\n * modalBg: \"red\",\n * }\n * })\n * ```\n */\nfunction darkTheme(overrides) {\n if (!overrides) {\n return darkThemeObj;\n }\n return applyThemeOverrides(darkThemeObj, overrides);\n}\nfunction applyThemeOverrides(baseTheme, themeOverrides) {\n const theme = {\n ...baseTheme\n };\n if (themeOverrides.colors) {\n theme.colors = {\n ...theme.colors,\n ...themeOverrides.colors\n };\n }\n if (themeOverrides.fontFamily) {\n theme.fontFamily = themeOverrides.fontFamily;\n }\n return theme;\n}\n\nconst Spacer = _ref => {\n let {\n y\n } = _ref;\n return /*#__PURE__*/jsx(\"div\", {\n style: {\n height: spacing[y]\n }\n });\n};\n\nconst CustomThemeCtx = /* @__PURE__ */createContext(darkThemeObj);\nfunction CustomThemeProvider(props) {\n const {\n theme,\n children\n } = props;\n let themeObj;\n if (typeof theme === \"string\") {\n themeObj = theme === \"light\" ? lightThemeObj : darkThemeObj;\n } else {\n themeObj = theme;\n }\n return /*#__PURE__*/jsx(CustomThemeCtx.Provider, {\n value: themeObj,\n children: children\n });\n}\nfunction useCustomTheme() {\n return useContext(CustomThemeCtx);\n}\n\nconst StyledDiv = styled.div;\nconst StyledSvg = styled.svg;\nconst StyledCircle = styled.circle;\nconst StyledSpan = styled.span;\nconst StyledAnchor = styled.a;\nconst StyledButton = styled.button;\nconst StyledLabel = styled.label;\nconst StyledInput = styled.input;\nconst StyledH2 = styled.h2;\nconst StyledP = styled.p;\nconst StyledUl = styled.ul;\nconst StyledSelect = styled.select;\n\nconst Button = /* @__PURE__ */StyledButton(props => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: radius.md,\n padding: `${fontSize.sm} ${fontSize.sm}`,\n fontSize: fontSize.md,\n fontWeight: 500,\n boxSizing: \"border-box\",\n WebkitTapHighlightColor: \"transparent\",\n lineHeight: \"normal\",\n flexShrink: 0,\n transition: \"border 200ms ease\",\n gap: props.gap && spacing[props.gap] || 0,\n width: props.fullWidth ? \"100%\" : undefined,\n background: (() => {\n switch (props.variant) {\n case \"primary\":\n return theme.colors.primaryButtonBg;\n case \"accent\":\n return theme.colors.accentButtonBg;\n case \"secondary\":\n return theme.colors.secondaryButtonBg;\n default:\n return \"none\";\n }\n })(),\n color: (() => {\n switch (props.variant) {\n case \"primary\":\n return theme.colors.primaryButtonText;\n case \"accent\":\n return theme.colors.accentButtonText;\n case \"secondary\":\n return theme.colors.secondaryButtonText;\n case \"outline\":\n return theme.colors.secondaryButtonText;\n case \"link\":\n return theme.colors.accentText;\n default:\n return theme.colors.primaryButtonText;\n }\n })(),\n \"&:active\": {\n transform: \"translateY(1px)\"\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\"\n },\n ...(() => {\n if (props.variant === \"outline\") {\n return {\n border: `1.5px solid ${theme.colors.borderColor}`,\n \"&:hover\": {\n borderColor: theme.colors.accentText\n }\n };\n }\n if (props.variant === \"secondary\") {\n return {\n \"&:hover\": {\n background: theme.colors.secondaryButtonHoverBg\n }\n };\n }\n if (props.variant === \"link\") {\n return {\n padding: 0,\n \"&:hover\": {\n color: theme.colors.primaryText\n }\n };\n }\n })()\n };\n});\nconst IconButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: radius.sm,\n WebkitTapHighlightColor: \"transparent\",\n color: theme.colors.secondaryIconColor,\n padding: \"2px\",\n transition: \"background 200ms ease, color 200ms ease\",\n \"&:hover\": {\n background: theme.colors.secondaryIconHoverBg,\n color: theme.colors.secondaryIconHoverColor\n }\n };\n});\nconst InputButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: radius.sm,\n padding: spacing.sm,\n cursor: \"pointer\",\n WebkitTapHighlightColor: \"transparent\",\n color: theme.colors.secondaryText,\n \"&:hover\": {\n color: theme.colors.primaryText\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\"\n }\n };\n});\n\nconst ModalTitle = /* @__PURE__ */StyledH2(props => {\n const theme = useCustomTheme();\n return {\n margin: 0,\n fontWeight: 600,\n fontSize: fontSize.lg,\n color: theme.colors.primaryText,\n lineHeight: 1.3,\n textAlign: \"left\",\n [media.mobile]: {\n textAlign: props.centerOnMobile ? \"center\" : \"left\"\n }\n };\n});\nconst ModalDescription = /* @__PURE__ */StyledP(props => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n display: \"block\",\n fontSize: props.sm ? fontSize.sm : fontSize.md,\n color: theme.colors.secondaryText,\n lineHeight: 1.5,\n [media.mobile]: {\n textAlign: props.centerOnMobile ? \"center\" : \"left\"\n }\n };\n});\nconst BackButton = props => {\n return /*#__PURE__*/jsx(IconButton, {\n onClick: props.onClick,\n style: {\n transform: \"translateX(-25%)\",\n ...props.style\n },\n type: \"button\",\n children: /*#__PURE__*/jsx(ChevronLeftIcon, {\n width: iconSize.md,\n height: iconSize.md\n })\n });\n};\nconst HelperLink = /* @__PURE__ */StyledAnchor(props => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n cursor: \"pointer\",\n color: theme.colors.accentText,\n fontSize: props.md ? fontSize.md : fontSize.sm,\n textDecoration: \"none\",\n display: \"block\",\n lineHeight: 1.5,\n [media.mobile]: {\n textAlign: \"center\"\n },\n \"&:hover\": {\n color: theme.colors.primaryText,\n textDecoration: \"none\"\n }\n };\n});\n\nconst Img = props => {\n const storage = useStorage();\n const getSrc = () => {\n try {\n return storage ? storage.resolveScheme(props.src) : props.src.replace(\"ipfs://\", \"https://ipfs.io/ipfs/\");\n } catch {\n return props.src;\n }\n };\n return /*#__PURE__*/jsx(\"img\", {\n width: props.width,\n height: props.height,\n src: getSrc(),\n alt: props.alt || \"\",\n loading: props.loading,\n decoding: \"async\",\n style: {\n height: props.height ? props.height + \"px\" : undefined,\n width: props.width ? props.width + \"px\" : undefined,\n userSelect: \"none\",\n ...props.style\n },\n draggable: false,\n className: props.className\n });\n};\n\nconst floatUpAnimation = keyframes`\n from {\n opacity: 0;\n transform: translateY(20%) scale(0.8) ;\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`;\nconst floatDownAnimation = keyframes`\n from {\n opacity: 0;\n transform: translateY(-20%) scale(0.8) ;\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`;\nconst fadeInAnimation = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\n\nconst ScreenBottomContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n borderTop: `1px solid ${theme.colors.separatorLine}`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: spacing.lg,\n padding: spacing.lg\n };\n});\nconst noScrollBar = {\n scrollbarWidth: \"none\",\n \"&::-webkit-scrollbar\": {\n width: 0,\n display: \"none\"\n }\n};\nfunction ModalHeader(props) {\n const {\n onBack,\n title,\n imgSrc\n } = props;\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\"\n },\n children: [onBack && /*#__PURE__*/jsx(BackButton, {\n onClick: onBack,\n style: {\n position: \"absolute\",\n left: 0,\n top: 0\n }\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"xs\",\n center: \"both\",\n children: [imgSrc && /*#__PURE__*/jsx(Img, {\n src: imgSrc,\n width: iconSize.md,\n height: iconSize.md\n }), typeof title === \"string\" ? /*#__PURE__*/jsx(ModalTitle, {\n children: title\n }) : title]\n })]\n });\n}\nconst Line = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n height: \"1px\",\n background: theme.colors.separatorLine\n };\n});\nfunction Container(props) {\n const styles = {};\n if (props.relative) {\n styles.position = \"relative\";\n }\n if (props.fullHeight) {\n styles.height = \"100%\";\n }\n if (props.expand) {\n styles.flex = \"1 1 0%\";\n }\n if (props.flex) {\n styles.display = \"flex\";\n styles.flexDirection = props.flex;\n if (props.flex === \"row\") {\n styles.flexWrap = \"wrap\";\n }\n if (props.gap) {\n styles.gap = spacing[props.gap];\n }\n if (props.center) {\n if (props.center === \"both\") {\n styles.justifyContent = \"center\";\n styles.alignItems = \"center\";\n }\n if (props.center === \"x\" && props.flex === \"row\" || props.center === \"y\" && props.flex === \"column\") {\n styles.justifyContent = \"center\";\n }\n if (props.center === \"x\" && props.flex === \"column\" || props.center === \"y\" && props.flex === \"row\") {\n styles.alignItems = \"center\";\n }\n }\n }\n if (props.p) {\n styles.padding = spacing[props.p];\n }\n if (props.px) {\n styles.paddingLeft = spacing[props.px];\n styles.paddingRight = spacing[props.px];\n }\n if (props.py) {\n styles.paddingTop = spacing[props.py];\n styles.paddingBottom = spacing[props.py];\n }\n if (props.debug) {\n styles.outline = \"1px solid red\";\n styles.outlineOffset = \"-1px\";\n }\n return /*#__PURE__*/jsx(Box, {\n \"data-scrolly\": props.scrollY,\n \"data-animate\": props.animate,\n color: props.color,\n style: {\n ...styles,\n ...props.style\n },\n children: props.children\n });\n}\nconst Box = /* @__PURE__ */StyledDiv(props => {\n const theme = useCustomTheme();\n return {\n color: props.color ? theme.colors[props.color] : \"inherit\",\n \"&[data-animate='fadein']\": {\n opacity: 0,\n animation: `${fadeInAnimation} 350ms ease forwards`\n },\n \"&[data-animate='floatup']\": {\n opacity: 0,\n animation: `${floatUpAnimation} 350ms ease forwards`\n },\n \"&[data-animate='floatdown']\": {\n opacity: 0,\n animation: `${floatDownAnimation} 350ms ease forwards`\n },\n \"&[data-scrolly='true']\": {\n overflowY: \"auto\",\n ...noScrollBar\n }\n };\n});\n\nconst Text = /* @__PURE__ */StyledSpan(p => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize[p.size || \"md\"],\n color: theme.colors[p.color || \"secondaryText\"],\n margin: 0,\n display: p.inline ? \"inline\" : \"block\",\n fontWeight: p.weight || 500,\n lineHeight: p.multiline ? 1.5 : \"normal\",\n textAlign: p.center ? \"center\" : \"left\",\n textWrap: p.balance ? \"balance\" : \"inherit\",\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n };\n});\nconst Link = /* @__PURE__ */StyledAnchor(p => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n cursor: \"pointer\",\n color: theme.colors[p.color || \"accentText\"],\n fontSize: fontSize[p.size || \"md\"],\n textDecoration: \"none\",\n textAlign: p.center ? \"center\" : \"left\",\n display: p.inline ? \"inline\" : \"block\",\n fontWeight: p.weight || 500,\n lineHeight: \"normal\",\n transition: \"color 0.2s ease\",\n \"&:hover\": {\n color: theme.colors[p.hoverColor || \"primaryText\"],\n textDecoration: \"none\"\n }\n };\n});\n\nfunction detectEnv(userAgent) {\n return detect(userAgent);\n}\n\n/**\n * @internal\n */\nfunction isAndroid() {\n const os = detectOS();\n return os ? os.toLowerCase().includes(\"android\") : false;\n}\n\n/**\n * @internal\n */\nfunction isIOS() {\n const os = detectOS();\n return os ? os.toLowerCase().includes(\"ios\") || os.toLowerCase().includes(\"mac\") && navigator.maxTouchPoints > 1 : false;\n}\n\n/**\n * @internal\n */\nfunction detectOS() {\n const env = detectEnv();\n return env?.os ? env.os : undefined;\n}\n\n/**\n * @internal\n */\nfunction isMobile() {\n const os = detectOS();\n return os ? isAndroid() || isIOS() : false;\n}\n\n/**\n * Create a new object with given overrides object applied on top of given base object without mutating the base and overrides object\n *\n * @param defaultObj - the object to use as the base object\n * @param overrides - the object to use as the overrides\n */\nfunction immutableOverride(defaultObj, overrides) {\n const output = {\n ...defaultObj\n };\n for (const key in overrides) {\n const value = overrides[key];\n // only apply overrides if it is not undefined\n if (value !== undefined) {\n // partially apply overrides object\n if (typeof value === \"object\" && value !== null) {\n output[key] = immutableOverride(defaultObj[key], value);\n }\n // completely override non-object values\n else {\n output[key] = value;\n }\n }\n }\n return output;\n}\n\n// wallets that connect via extension and QR scan\nfunction extensionAndQRScanScreens(walletName) {\n return {\n connectionScreen: {\n inProgress: \"Awaiting Confirmation\",\n failed: \"Connection failed\",\n instruction: `Accept the connection request in ${walletName} wallet`,\n retry: \"Try Again\"\n },\n getStartedScreen: {\n instruction: `Scan the QR code to download ${walletName} app`\n },\n scanScreen: {\n instruction: `Scan the QR code with ${walletName} wallet app to connect`\n },\n getStartedLink: `Don't have ${walletName} wallet?`\n };\n}\nfunction enDefault() {\n return {\n connectWallet: {\n signIn: \"Sign in\",\n defaultButtonTitle: \"Connect Wallet\",\n connecting: \"Connecting\",\n switchNetwork: \"Switch Network\",\n switchingNetwork: \"Switching Network\",\n defaultModalTitle: \"Connect\",\n recommended: \"Recommended\",\n installed: \"Installed\",\n continueAsGuest: \"Continue as guest\",\n connectAWallet: \"Connect a wallet\",\n newToWallets: \"New to wallets?\",\n getStarted: \"Get started\",\n guest: \"Guest\",\n send: \"Send\",\n receive: \"Receive\",\n currentNetwork: \"Current network\",\n switchAccount: \"Switch Account\",\n requestTestnetFunds: \"Request Testnet Funds\",\n transactionHistory: \"Transaction History\",\n backupWallet: \"Backup Wallet\",\n guestWalletWarning: \"This is a temporary guest wallet. Backup if you don't want to lose access to it\",\n switchTo: \"Switch to\",\n // Used in \"Switch to \"\n connectedToSmartWallet: \"Connected To Smart Wallet\",\n confirmInWallet: \"Confirm in wallet\",\n disconnectWallet: \"Disconnect Wallet\",\n copyAddress: \"Copy Address\",\n personalWallet: \"Personal Wallet\",\n smartWallet: \"Smart Wallet\",\n or: \"OR\",\n download: {\n chrome: \"Download Chrome Extension\",\n android: \"Download on Google Play\",\n iOS: \"Download on App Store\"\n },\n welcomeScreen: {\n defaultTitle: \"Your gateway to the decentralized world\",\n defaultSubtitle: \"Connect a wallet to get started\"\n },\n agreement: {\n prefix: \"By connecting, you agree to the\",\n termsOfService: \"Terms of Service\",\n and: \"&\",\n privacyPolicy: \"Privacy Policy\"\n },\n networkSelector: {\n title: \"Select Network\",\n mainnets: \"Mainnets\",\n testnets: \"Testnets\",\n allNetworks: \"All\",\n addCustomNetwork: \"Add Custom Network\",\n inputPlaceholder: \"Search Network or Chain ID\",\n categoryLabel: {\n recentlyUsed: \"Recently Used\",\n popular: \"Popular\",\n others: \"All Networks\"\n },\n loading: \"Loading\",\n failedToSwitch: \"Failed to switch network\"\n },\n receiveFundsScreen: {\n title: \"Receive Funds\",\n instruction: \"Copy the wallet address to send funds to this wallet\"\n },\n sendFundsScreen: {\n title: \"Send Funds\",\n submitButton: \"Send\",\n token: \"Token\",\n sendTo: \"Send to\",\n amount: \"Amount\",\n successMessage: \"Transaction Successful\",\n invalidAddress: \"Invalid Address\",\n noTokensFound: \"No Tokens Found\",\n searchToken: \"Search or Paste token address\",\n transactionFailed: \"Transaction Failed\",\n transactionRejected: \"Transaction Rejected\",\n insufficientFunds: \"Insufficient Funds\",\n selectTokenTitle: \"Select a Token\",\n sending: \"Sending\"\n },\n signatureScreen: {\n instructionScreen: {\n title: \"Sign in\",\n instruction: \"Please sign the message request in your wallet to continue\",\n signInButton: \"Sign in\"\n },\n signingScreen: {\n title: \"Signing In\",\n prompt: \"Sign the signature request in your wallet\",\n promptForSafe: \"Sign signature request in your wallet & approve transaction in Safe\",\n approveTransactionInSafe: \"Approve transaction in Safe\",\n tryAgain: \"Try Again\",\n failedToSignIn: \"Failed to Sign in\",\n inProgress: \"Awaiting Confirmation\"\n }\n }\n },\n wallets: {\n walletConnect: {\n scanInstruction: \"Scan this with your wallet app to connect\"\n },\n smartWallet: {\n connecting: \"Connecting to Smart Wallet\",\n failedToConnect: \"Failed to connect to Smart Wallet\",\n wrongNetworkScreen: {\n title: \"Wrong Network\",\n subtitle: \"Your wallet is not connected to the required network\",\n failedToSwitch: \"Failed to switch network\"\n }\n },\n safeWallet: {\n connectWalletScreen: {\n title: \"Link personal wallet\",\n subtitle: \"Connect your personal wallet to use Safe.\",\n learnMoreLink: \"Learn more\"\n },\n accountDetailsScreen: {\n title: \"Enter your safe details\",\n findSafeAddressIn: \"You can find your safe address in\",\n // You can find your safe address in + \n dashboardLink: \"Safe Dashboard\",\n // \n network: \"Safe Network\",\n selectNetworkPlaceholder: \"Network your safe is deployed to\",\n invalidChainConfig: \"Can not use Safe: No Safe supported chains are configured in App\",\n failedToConnect: \"Could not connect to Safe. Make sure safe address and network are correct.\",\n failedToSwitch: \"Failed to switch network\",\n switchNetwork: \"Switch Network\",\n switchingNetwork: \"Switching Network\",\n connectToSafe: \"Connect to Safe\",\n connecting: \"Connecting\",\n mainnets: \"Mainnets\",\n testnets: \"Testnets\",\n safeAddress: \"Safe Address\"\n }\n },\n coinbaseWallet: extensionAndQRScanScreens(\"Coinbase\"),\n metamaskWallet: extensionAndQRScanScreens(\"MetaMask\"),\n okxWallet: extensionAndQRScanScreens(\"OKX\"),\n phantomWallet: extensionAndQRScanScreens(\"Phantom\"),\n rainbowWallet: extensionAndQRScanScreens(\"Rainbow\"),\n trustWallet: extensionAndQRScanScreens(\"Trust\"),\n zerionWallet: extensionAndQRScanScreens(\"Zerion\"),\n coreWallet: extensionAndQRScanScreens(\"Core\"),\n oneKeyWallet: extensionAndQRScanScreens(\"OneKey\"),\n cryptoDefiWallet: extensionAndQRScanScreens(\"Crypto Defi\"),\n rabbyWallet: extensionAndQRScanScreens(\"Rabby\"),\n coin98Wallet: extensionAndQRScanScreens(\"Coin98\"),\n paperWallet: {\n signIn: \"Sign in\",\n signInWithGoogle: \"Sign in with Google\",\n emailPlaceholder: \"Enter your email address\",\n submitEmail: \"Continue\",\n invalidEmail: \"Invalid email address\",\n emailRequired: \"Email address is required\",\n googleLoginScreen: {\n title: \"Sign in\",\n instruction: \"Select your Google account in the pop-up\",\n failed: \"Failed to sign in\",\n retry: \"Retry\"\n },\n emailLoginScreen: {\n title: \"Sign in\",\n enterCodeSendTo: \"Enter the verification code sent to\",\n // Enter the verification code sent to + \n newDeviceDetected: \"New device detected\",\n enterRecoveryCode: \"Enter the recovery code emailed to you when you first signed up\",\n invalidCode: \"Invalid verification code\",\n invalidCodeOrRecoveryCode: \"Invalid verification code or Recovery code\",\n verify: \"Verify\",\n failedToSendCode: \"Failed to send verification code\",\n sendingCode: \"Sending verification code\",\n resendCode: \"Resend verification code\"\n }\n },\n embeddedWallet: {\n signInWithGoogle: \"Sign in with Google\",\n signInWithFacebook: \"Sign in with Facebook\",\n signInWithApple: \"Sign in with Apple\",\n emailPlaceholder: \"Enter your email address\",\n submitEmail: \"Continue\",\n signIn: \"Sign in\",\n emailRequired: \"Email address is required\",\n invalidEmail: \"Invalid email address\",\n socialLoginScreen: {\n title: \"Sign in\",\n instruction: \"Sign into your account in the pop-up\",\n failed: \"Failed to sign in\",\n retry: \"Retry\"\n },\n emailLoginScreen: {\n title: \"Sign in\",\n enterCodeSendTo: \"Enter the verification code sent to\",\n newDeviceDetected: \"New device detected\",\n enterRecoveryCode: \"Enter the recovery code emailed to you when you first signed up\",\n invalidCode: \"Invalid verification code\",\n invalidCodeOrRecoveryCode: \"Invalid verification code or Recovery code\",\n verify: \"Verify\",\n failedToSendCode: \"Failed to send verification code\",\n sendingCode: \"Sending verification code\",\n resendCode: \"Resend verification code\"\n },\n createPassword: {\n title: \"Create Password\",\n instruction: \"Set a password for your account. You will need this password when connecting from a new device.\",\n saveInstruction: \"Make sure to save it\",\n inputPlaceholder: \"Enter your password\",\n confirmation: \"I have saved my password\",\n submitButton: \"Set Password\",\n failedToSetPassword: \"Failed to set password\"\n },\n enterPassword: {\n title: \"Enter Password\",\n instruction: \"Enter the password for your account\",\n inputPlaceholder: \"Enter your password\",\n submitButton: \"Verify\",\n wrongPassword: \"Wrong password\"\n }\n },\n magicLink: {\n signIn: \"Sign in\",\n loginWith: \"Login with\",\n submitEmail: \"Continue\",\n loginWithEmailOrPhone: \"Login with email or phone number\",\n emailOrPhoneRequired: \"email or phone number is required\",\n loginWithPhone: \"Login with phone number\",\n phoneRequired: \"phone number is required\",\n invalidEmail: \"Invalid email address\",\n invalidPhone: \"Invalid phone number\",\n invalidEmailOrPhone: \"Invalid email address or phone number\",\n countryCodeMissing: \"Phone number must start with a country code\",\n emailPlaceholder: \"Enter your email address\",\n emailRequired: \"Email address is required\"\n },\n localWallet: {\n passwordLabel: \"Password\",\n confirmPasswordLabel: \"Confirm Password\",\n enterYourPassword: \"Enter your password\",\n warningScreen: {\n title: \"Warning\",\n warning: \"Your current wallet will be deleted if you create a new wallet. Backup wallet to your device before creating a new wallet\",\n backupWallet: \"Backup Wallet\"\n },\n reconnectScreen: {\n title: \"Connect to saved wallet\",\n savedWallet: \"Saved Wallet\",\n continue: \"Continue\",\n createNewWallet: \"Create a new wallet\"\n },\n createScreen: {\n instruction: \"Choose a password for your wallet. You'll be able to access and export this wallet with the same password\",\n importWallet: \"Import Wallet\",\n createNewWallet: \"Create new wallet\",\n connecting: \"Connecting\"\n },\n exportScreen: {\n description1: \"This will download a JSON file containing the wallet information onto your device encrypted with the password\",\n description2: \"You can use this JSON file to import the account in MetaMask using the same password\",\n walletAddress: \"Wallet Address\",\n download: \"Download\",\n title: \"Backup Wallet\"\n },\n importScreen: {\n title: \"Import Wallet\",\n description1: \"The application can authorize any transactions on behalf of the wallet without any approvals\",\n description2: \"We recommend only connecting to trusted applications\",\n import: \"Import\",\n uploadJSON: \"Please upload a JSON file\",\n uploadedSuccessfully: \"Uploaded successfully\"\n }\n },\n frameWallet: {\n ...extensionAndQRScanScreens(\"Frame\"),\n connectionFailedScreen: {\n title: \"Failed to connect to Frame\",\n description: \"Make sure the desktop app is installed and running. You can download Frame from the link below. Make sure to refresh this page once Frame is running.\",\n downloadFrame: \"Download Frame\",\n supportLink: \"Still having troubles connecting?\"\n }\n }\n }\n };\n}\n\n/**\n * Calling this function will return the default English locale object to be set on `ThirdwebProvider` to localize the thirdweb components.\n *\n * You can also overrides parts of the default locale object by passing an object with the same structure as the default locale object and only those parts will be overridden.\n *\n * @example\n *\n * ### Use default English Locale\n * ```tsx\n * const english = en(); // default English locale object\n *\n * \n * ```\n *\n * ### Override English Locale\n * ```tsx\n * const english = en({\n * connectWallet: {\n * signIn: \"Sign in!\"\n * }\n * })\n *\n * \n * \n * \n * ```\n */\nfunction en(overrides) {\n const defaultObj = enDefault();\n if (!overrides) {\n return defaultObj;\n }\n return immutableOverride(defaultObj, overrides);\n}\n\nconst ThirdwebLocaleContext = /* @__PURE__ */(() => /*#__PURE__*/createContext(enDefault()))();\nfunction useTWLocale() {\n return useContext(ThirdwebLocaleContext);\n}\n\nconst WalletModalOpen = /* @__PURE__ */createContext(false);\nconst SetWalletModalOpen = /* @__PURE__ */createContext(undefined);\nconst ModalConfigCtx = /* @__PURE__ */createContext({\n title: \"\",\n theme: \"dark\",\n data: undefined,\n modalSize: \"wide\"\n});\nconst SetModalConfigCtx = /* @__PURE__ */createContext(() => {});\nconst WalletUIStatesProvider = props => {\n const [isWalletModalOpen, setIsWalletModalOpen] = useState(false);\n const _isMobile = isMobile();\n const locale = useTWLocale();\n const [modalConfig, setModalConfig] = useState({\n title: props.title || locale.connectWallet.defaultModalTitle,\n theme: props.theme || \"dark\",\n data: undefined,\n modalSize: (_isMobile ? \"compact\" : props.modalSize) || \"wide\",\n termsOfServiceUrl: props.termsOfServiceUrl,\n privacyPolicyUrl: props.privacyPolicyUrl,\n welcomeScreen: props.welcomeScreen,\n titleIconUrl: props.titleIconUrl\n });\n return /*#__PURE__*/jsx(WalletModalOpen.Provider, {\n value: isWalletModalOpen,\n children: /*#__PURE__*/jsx(SetWalletModalOpen.Provider, {\n value: setIsWalletModalOpen,\n children: /*#__PURE__*/jsx(ModalConfigCtx.Provider, {\n value: modalConfig,\n children: /*#__PURE__*/jsx(SetModalConfigCtx.Provider, {\n value: setModalConfig,\n children: props.children\n })\n })\n })\n });\n};\nconst useIsWalletModalOpen = () => {\n return useContext(WalletModalOpen);\n};\nconst useSetIsWalletModalOpen = () => {\n const context = useContext(SetWalletModalOpen);\n if (context === undefined) {\n throw new Error(\"useSetWalletModalOpen must be used within a ThirdwebProvider\");\n }\n return context;\n};\n\nconst Spinner = props => {\n const theme = useCustomTheme();\n return /*#__PURE__*/jsx(Svg, {\n style: {\n width: iconSize[props.size] + \"px\",\n height: iconSize[props.size] + \"px\"\n },\n viewBox: \"0 0 50 50\",\n children: /*#__PURE__*/jsx(Circle, {\n cx: \"25\",\n cy: \"25\",\n r: \"20\",\n fill: \"none\",\n stroke: theme.colors[props.color],\n strokeWidth: \"4\"\n })\n });\n};\n\n// animations\nconst dashAnimation = keyframes`\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n`;\nconst rotateAnimation = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\nconst Svg = /* @__PURE__ */StyledSvg({\n animation: `${rotateAnimation} 2s linear infinite`,\n width: \"1em\",\n height: \"1em\"\n});\nconst Circle = /* @__PURE__ */StyledCircle({\n strokeLinecap: \"round\",\n animation: `${dashAnimation} 1.5s ease-in-out infinite`\n});\n\nconst TWIcon = props => {\n return /*#__PURE__*/jsxs(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.size,\n height: props.size,\n viewBox: \"0 0 27 16\",\n fill: \"none\",\n children: [/*#__PURE__*/jsx(\"path\", {\n d: \"M13.6891 0C13.8482 0.0317795 13.9983 0.0957213 14.1292 0.1875C14.2768 0.297724 14.39 0.444328 14.4563 0.611413C14.8718 1.60272 15.2885 2.59348 15.7064 3.5837L17.0986 6.89022C17.3418 7.46902 17.5832 8.0462 17.8298 8.62337C17.8823 8.74121 17.9094 8.86791 17.9094 8.99592C17.9094 9.12393 17.8823 9.25064 17.8298 9.36848C17.1243 11.0446 16.4182 12.7217 15.7115 14.4C15.654 14.5572 15.5516 14.696 15.4157 14.8009C15.2799 14.9057 15.1161 14.9724 14.9426 14.9935C14.7283 15.0315 14.5068 14.9982 14.3153 14.899C14.1238 14.7998 13.9741 14.6409 13.8912 14.4489C13.4939 13.5196 13.1052 12.587 12.713 11.6543C12.0463 10.075 11.3813 8.49456 10.718 6.91304C10.1255 5.50543 9.5336 4.09891 8.94223 2.69348C8.7453 2.22717 8.55522 1.75761 8.34973 1.29293C8.29321 1.16705 8.26644 1.03087 8.27132 0.894047C8.27619 0.757221 8.31259 0.623087 8.37794 0.501137C8.44329 0.379187 8.53599 0.272402 8.64948 0.188339C8.76297 0.104275 8.89448 0.0449885 9.03471 0.0146733C9.05183 0.0146733 9.06724 0.0048913 9.08437 0H13.6891Z\",\n fill: \"currentColor\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M5.42129 0C5.47438 0.0146739 5.52575 0.0260873 5.57712 0.0423917C5.71022 0.0819151 5.83236 0.14928 5.93458 0.239555C6.0368 0.329829 6.11653 0.440727 6.16791 0.56413C6.62457 1.63913 7.07779 2.71413 7.52759 3.78913C7.97739 4.86413 8.43404 5.95109 8.89755 7.05L9.57053 8.64456C9.62093 8.75806 9.6469 8.88004 9.6469 9.00326C9.6469 9.12648 9.62093 9.24846 9.57053 9.36196C9.32052 9.9587 9.06936 10.5565 8.81706 11.1554L7.43512 14.431C7.36255 14.6012 7.23853 14.7471 7.07879 14.8501C6.91904 14.9532 6.73075 15.0087 6.5378 15.0098C6.33426 15.0125 6.13478 14.9554 5.96654 14.8463C5.7983 14.7372 5.6695 14.5814 5.59767 14.4C5.16956 13.3712 4.74145 12.344 4.30307 11.3168L2.54781 7.14946L0.763448 2.91033C0.539118 2.37554 0.314789 1.83913 0.0784718 1.30435C-0.0212674 1.08161 -0.026107 0.830668 0.0649731 0.604591C0.156053 0.378515 0.335913 0.195028 0.566519 0.0929347C0.650596 0.0604572 0.73701 0.0337587 0.825096 0.0130438L5.42129 0Z\",\n fill: \"currentColor\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M26.0098 9.14348C25.8865 9.54782 25.7067 9.92935 25.5355 10.3239C25.0708 11.4315 24.6033 12.5397 24.133 13.6484C24.0251 13.9109 23.9155 14.1554 23.811 14.4114C23.7364 14.591 23.605 14.744 23.4351 14.8495C23.2651 14.9549 23.065 15.0075 22.8623 15C22.6689 14.995 22.4813 14.9353 22.3237 14.8284C22.166 14.7216 22.0453 14.5724 21.977 14.4C21.2989 12.7848 20.6196 11.1696 19.9392 9.55435C19.3524 8.16522 18.7633 6.77283 18.172 5.37717C17.6011 4.01087 17.0303 2.64456 16.4595 1.27826C16.4042 1.15338 16.3784 1.01844 16.3839 0.882999C16.3895 0.747561 16.4262 0.614939 16.4916 0.494528C16.5569 0.374117 16.6493 0.268861 16.7621 0.186219C16.875 0.103577 17.0055 0.0455688 17.1445 0.0163041L17.201 0H21.8023L21.8451 0.0130438C22.0073 0.0455066 22.158 0.116718 22.2833 0.219974C22.4085 0.32323 22.504 0.455132 22.5609 0.60326C22.8281 1.23913 23.0964 1.87554 23.3658 2.5125C24.0679 4.18206 24.77 5.85163 25.4721 7.52119C25.657 7.96141 25.8625 8.39348 26.0132 8.84511L26.0098 9.14348Z\",\n fill: \"currentColor\"\n })]\n });\n};\n\nconst TextDivider = props => {\n return /*#__PURE__*/jsx(TextDividerEl, {\n style: {\n paddingBlock: props.py ? spacing[props.py] : 0\n },\n children: /*#__PURE__*/jsxs(\"span\", {\n children: [\" \", props.text]\n })\n });\n};\nconst TextDividerEl = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n display: \"flex\",\n alignItems: \"center\",\n color: theme.colors.secondaryText,\n fontSize: fontSize.sm,\n \"&::before, &::after\": {\n content: '\"\"',\n flex: 1,\n borderBottom: `1px solid ${theme.colors.separatorLine}`\n },\n span: {\n margin: \"0 16px\"\n }\n };\n});\n\nfunction TOS(props) {\n const {\n termsOfServiceUrl,\n privacyPolicyUrl\n } = props;\n const locale = useTWLocale().connectWallet.agreement;\n if (!termsOfServiceUrl && !privacyPolicyUrl) {\n return null;\n }\n const bothGiven = termsOfServiceUrl && privacyPolicyUrl;\n return /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n children: /*#__PURE__*/jsxs(Text, {\n size: \"xs\",\n multiline: true,\n balance: true,\n inline: true,\n center: true,\n style: {\n maxWidth: \"250px\"\n },\n children: [locale.prefix, \" \", termsOfServiceUrl && /*#__PURE__*/jsxs(Link, {\n inline: true,\n size: \"xs\",\n href: termsOfServiceUrl,\n target: \"_blank\",\n style: {\n whiteSpace: \"nowrap\"\n },\n children: [\" \", locale.termsOfService, \" \"]\n }), bothGiven && locale.and + \" \", privacyPolicyUrl && /*#__PURE__*/jsx(Link, {\n inline: true,\n size: \"xs\",\n href: privacyPolicyUrl,\n target: \"_blank\",\n children: locale.privacyPolicy\n })]\n })\n });\n}\n\nconst WalletSelector = props => {\n const modalConfig = useContext(ModalConfigCtx);\n const isCompact = modalConfig.modalSize === \"compact\";\n const {\n termsOfServiceUrl,\n privacyPolicyUrl\n } = modalConfig;\n const [isWalletGroupExpanded, setIsWalletGroupExpanded] = useState(false);\n const disconnect = useDisconnect();\n const connectionStatus = useConnectionStatus();\n const locale = useTWLocale().connectWallet;\n const localWalletConfig = props.walletConfigs.find(w => w.id === walletIds.localWallet);\n const nonLocalWalletConfigs = props.walletConfigs.filter(w => w.id !== walletIds.localWallet);\n const socialWallets = nonLocalWalletConfigs.filter(w => w.category === \"socialLogin\");\n const eoaWallets = sortWalletConfigs(nonLocalWalletConfigs.filter(w => w.category !== \"socialLogin\"));\n const continueAsGuest = localWalletConfig && /*#__PURE__*/jsx(Button, {\n fullWidth: true,\n variant: isCompact ? \"outline\" : \"link\",\n style: !isCompact ? {\n textAlign: \"left\",\n justifyContent: \"flex-start\"\n } : undefined,\n onClick: () => {\n props.selectWallet(localWalletConfig);\n },\n \"data-test\": \"continue-as-guest-button\",\n children: locale.continueAsGuest\n });\n\n // prevent accidental clicks on the TW icon when clicking on back icon from previous screen\n const enableTWIconLink = useRef(false);\n useEffect(() => {\n setTimeout(() => {\n enableTWIconLink.current = true;\n }, 1000);\n }, []);\n const twTitle = /*#__PURE__*/jsxs(Container, {\n gap: \"xxs\",\n center: \"y\",\n flex: \"row\",\n children: [modalConfig.titleIconUrl === undefined ? /*#__PURE__*/jsx(Link, {\n color: \"primaryText\",\n hoverColor: \"accentText\",\n target: \"_blank\",\n href: \"https://thirdweb.com/connect?utm_source=cw\",\n style: {\n display: \"flex\",\n alignItems: \"center\"\n },\n onClick: e => {\n if (!enableTWIconLink.current) {\n e.preventDefault();\n }\n },\n children: /*#__PURE__*/jsx(TWIcon, {\n size: iconSize.md\n })\n }) : modalConfig.titleIconUrl === \"\" ? null : /*#__PURE__*/jsx(Img, {\n src: modalConfig.titleIconUrl,\n width: iconSize.md,\n height: iconSize.md\n }), /*#__PURE__*/jsxs(ModalTitle, {\n children: [\" \", props.title, \" \"]\n })]\n });\n const handleSelect = async wallet => {\n if (connectionStatus !== \"disconnected\") {\n await disconnect();\n }\n props.selectWallet(wallet);\n };\n const connectAWallet = /*#__PURE__*/jsxs(Button, {\n fullWidth: true,\n variant: \"outline\",\n style: {\n display: \"flex\",\n justifyContent: \"center\",\n gap: spacing.sm,\n padding: spacing.md\n },\n onClick: () => {\n setIsWalletGroupExpanded(true);\n },\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n gap: \"xxs\",\n children: eoaWallets.slice(0, 2).map(w => /*#__PURE__*/jsx(Img, {\n width: iconSize.sm,\n height: iconSize.sm,\n src: w.meta.iconURL\n }, w.id))\n }), locale.connectAWallet]\n });\n const newToWallets = /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n style: {\n justifyContent: \"space-between\"\n },\n children: [/*#__PURE__*/jsx(Text, {\n color: \"secondaryText\",\n size: \"sm\",\n weight: 500,\n children: locale.newToWallets\n }), /*#__PURE__*/jsx(Link, {\n weight: 500,\n size: \"sm\",\n target: \"_blank\",\n href: \"https://blog.thirdweb.com/web3-wallet/\",\n children: locale.getStarted\n })]\n });\n const tos = termsOfServiceUrl || privacyPolicyUrl ? /*#__PURE__*/jsx(TOS, {\n termsOfServiceUrl: termsOfServiceUrl,\n privacyPolicyUrl: privacyPolicyUrl\n }) : undefined;\n let topSection;\n let bottomSection;\n\n // wide modal\n if (!isCompact) {\n topSection = /*#__PURE__*/jsx(WalletSelection, {\n walletConfigs: nonLocalWalletConfigs,\n selectWallet: handleSelect\n });\n if (continueAsGuest) {\n bottomSection = /*#__PURE__*/jsx(ScreenBottomContainer, {\n children: continueAsGuest\n });\n }\n }\n\n // compact\n else {\n // no social logins\n if (socialWallets.length === 0) {\n topSection = /*#__PURE__*/jsx(WalletSelection, {\n walletConfigs: nonLocalWalletConfigs,\n selectWallet: handleSelect\n });\n bottomSection = /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n p: \"lg\",\n gap: \"lg\",\n children: [newToWallets, continueAsGuest]\n }), !continueAsGuest && /*#__PURE__*/jsx(Line, {}), tos && /*#__PURE__*/jsx(Container, {\n px: \"md\",\n style: {\n paddingBottom: spacing.md,\n paddingTop: continueAsGuest ? 0 : spacing.md\n },\n children: tos\n })]\n });\n }\n\n // social logins\n else {\n // not expanded state\n if (!isWalletGroupExpanded) {\n topSection = /*#__PURE__*/jsxs(Container, {\n px: \"xs\",\n children: [/*#__PURE__*/jsx(WalletSelection, {\n walletConfigs: socialWallets,\n selectWallet: handleSelect\n }), eoaWallets.length > 0 && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(TextDivider, {\n text: locale.or\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n })]\n })]\n });\n\n // only social login - no eoa wallets\n if (eoaWallets.length === 0) {\n bottomSection = tos || continueAsGuest ? /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Line, {}), continueAsGuest && /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n children: [\" \", continueAsGuest]\n }), tos && /*#__PURE__*/jsxs(Container, {\n p: \"md\",\n children: [\" \", tos, \" \"]\n })]\n }) : /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n });\n }\n\n // social login + eoa wallets\n else {\n // social login + More than 1 eoa wallets\n if (eoaWallets.length > 1) {\n bottomSection = /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"sm\",\n children: [/*#__PURE__*/jsxs(Container, {\n px: \"lg\",\n flex: \"column\",\n gap: \"md\",\n children: [connectAWallet, continueAsGuest]\n }), tos ? /*#__PURE__*/jsxs(Container, {\n p: \"md\",\n children: [\" \", tos, \" \"]\n }) : /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n })]\n });\n }\n\n // social login + single eoa wallet\n else {\n bottomSection = /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Container, {\n px: \"lg\",\n children: /*#__PURE__*/jsx(WalletSelection, {\n walletConfigs: eoaWallets,\n selectWallet: handleSelect\n })\n }), continueAsGuest && /*#__PURE__*/jsx(Container, {\n flex: \"column\",\n px: \"lg\",\n gap: \"lg\",\n children: continueAsGuest\n }), tos ? /*#__PURE__*/jsxs(Fragment, {\n children: [continueAsGuest ? /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }) : /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n p: \"md\",\n children: [\" \", tos, \" \"]\n })]\n }) : /*#__PURE__*/jsx(Fragment, {\n children: continueAsGuest && /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n })\n })]\n });\n }\n }\n }\n\n // expanded state\n else {\n topSection = /*#__PURE__*/jsx(WalletSelection, {\n walletConfigs: eoaWallets,\n selectWallet: handleSelect\n });\n bottomSection = /*#__PURE__*/jsx(ScreenBottomContainer, {\n children: newToWallets\n });\n }\n }\n }\n return /*#__PURE__*/jsxs(Container, {\n scrollY: true,\n flex: \"column\",\n animate: \"fadein\",\n fullHeight: true,\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: isWalletGroupExpanded ? /*#__PURE__*/jsx(ModalHeader, {\n title: twTitle,\n onBack: () => {\n setIsWalletGroupExpanded(false);\n }\n }) : twTitle\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n scrollY: true,\n px: \"md\",\n style: {\n paddingTop: \"2px\"\n },\n children: topSection\n }), bottomSection]\n });\n};\nconst WalletSelection = props => {\n const modalConfig = useContext(ModalConfigCtx);\n const setModalConfig = useContext(SetModalConfigCtx);\n const walletConfigs = sortWalletConfigs(props.walletConfigs);\n return /*#__PURE__*/jsx(WalletList, {\n children: walletConfigs.map(walletConfig => {\n return /*#__PURE__*/jsx(\"li\", {\n \"data-full-width\": !!walletConfig.selectUI,\n children: walletConfig.selectUI ? /*#__PURE__*/jsx(walletConfig.selectUI, {\n modalSize: modalConfig.modalSize,\n theme: typeof modalConfig.theme === \"string\" ? modalConfig.theme : modalConfig.theme.type,\n supportedWallets: props.walletConfigs,\n onSelect: data => {\n props.selectWallet(walletConfig);\n setModalConfig(config => ({\n ...config,\n data\n }));\n },\n walletConfig: walletConfig\n }) : /*#__PURE__*/jsx(WalletEntryButton, {\n walletConfig: walletConfig,\n selectWallet: () => {\n props.selectWallet(walletConfig);\n }\n })\n }, walletConfig.id);\n })\n });\n};\nfunction WalletEntryButton(props) {\n const {\n walletConfig,\n selectWallet\n } = props;\n const isRecommended = walletConfig.recommended;\n const locale = useTWLocale().connectWallet;\n return /*#__PURE__*/jsxs(WalletButton, {\n type: \"button\",\n onClick: () => {\n selectWallet();\n },\n children: [/*#__PURE__*/jsx(Img, {\n src: walletConfig.meta.iconURL,\n width: iconSize.xl,\n height: iconSize.xl,\n loading: \"eager\"\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"xxs\",\n expand: true,\n children: [/*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n weight: 600,\n children: walletConfig.meta.name\n }), isRecommended && /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n children: locale.recommended\n }), !isRecommended && walletConfig.isInstalled && walletConfig.isInstalled() && /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n children: locale.installed\n })]\n })]\n });\n}\nconst WalletList = /* @__PURE__ */StyledUl({\n all: \"unset\",\n listStyleType: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2px\",\n boxSizing: \"border-box\",\n overflowY: \"auto\",\n flex: 1,\n ...noScrollBar,\n // to show the box-shadow of inputs that overflows\n padding: \"2px\",\n margin: \"-2px\",\n marginBottom: 0,\n paddingBottom: spacing.lg\n});\nconst WalletButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.sm,\n cursor: \"pointer\",\n boxSizing: \"border-box\",\n width: \"100%\",\n color: theme.colors.secondaryText,\n position: \"relative\",\n borderRadius: radius.md,\n padding: `${spacing.xs} ${spacing.xs}`,\n \"&:hover\": {\n backgroundColor: theme.colors.walletSelectorButtonHoverBg,\n transform: \"scale(1.01)\"\n },\n transition: \"background-color 200ms ease, transform 200ms ease\"\n };\n});\nfunction sortWalletConfigs(walletConfigs) {\n return walletConfigs\n // show the installed wallets first\n .sort((a, b) => {\n const aInstalled = a.isInstalled ? a.isInstalled() : false;\n const bInstalled = b.isInstalled ? b.isInstalled() : false;\n if (aInstalled && !bInstalled) {\n return -1;\n }\n if (!aInstalled && bInstalled) {\n return 1;\n }\n return 0;\n })\n // show the recommended wallets even before that\n .sort((a, b) => {\n if (a.recommended && !b.recommended) {\n return -1;\n }\n if (!a.recommended && b.recommended) {\n return 1;\n }\n return 0;\n })\n // show the wallets with selectUI first before others\n .sort((a, b) => {\n if (a.selectUI && !b.selectUI) {\n return -1;\n }\n if (!a.selectUI && b.selectUI) {\n return 1;\n }\n return 0;\n });\n}\n\nconst Label = /* @__PURE__ */StyledLabel(props => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize.sm,\n color: theme.colors[props.color || \"primaryText\"],\n display: \"block\",\n fontWeight: 500\n };\n});\nconst Input = /* @__PURE__ */StyledInput(props => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize.md,\n display: \"block\",\n padding: props.sm ? spacing.sm : fontSize.sm,\n boxSizing: \"border-box\",\n width: \"100%\",\n outline: \"none\",\n border: \"none\",\n borderRadius: \"6px\",\n color: theme.colors.primaryText,\n WebkitAppearance: \"none\",\n appearance: \"none\",\n background: \"transparent\",\n \"&::placeholder\": {\n color: theme.colors.secondaryText\n },\n boxShadow: `0 0 0 1.5px ${props.variant === \"outline\" ? theme.colors.borderColor : \"transparent\"}`,\n \"&:-webkit-autofill\": {\n WebkitTextFillColor: theme.colors.primaryText,\n WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset !important`,\n boxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset !important`,\n transition: \"background-color 5000s ease-in-out 0s\"\n },\n \"&:-webkit-autofill:focus\": {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset, 0 0 0 2px ${theme.colors.accentText} !important`,\n boxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset, 0 0 0 2px ${theme.colors.accentText} !important`\n },\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.accentText}`\n },\n \"&:not([type='password'])\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n },\n \"&[data-error='true']\": {\n boxShadow: `0 0 0 2px ${theme.colors.danger} !important`\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\"\n },\n \"&[type='number']::-webkit-outer-spin-button, &[type='number']::-webkit-inner-spin-button\": {\n WebkitAppearance: \"none\",\n margin: 0\n },\n \"&[type='number']\": {\n appearance: \"none\",\n MozAppearance: \"textfield\"\n }\n };\n});\n\n// for rendering a input and a button side by side\nconst InputContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n display: \"flex\",\n borderRadius: radius.sm,\n boxShadow: `0 0 0px 1.5px ${theme.colors.borderColor}`,\n \"&:focus-within\": {\n boxShadow: `0 0 0px 2px ${theme.colors.accentText}`\n },\n \"input:focus\": {\n boxShadow: \"none\"\n },\n // show error ring on container instead of input\n \"&[data-error='true']\": {\n boxShadow: `0 0 0px 2px ${theme.colors.danger}`\n }\n };\n});\n\nexport { ScreenBottomContainer as A, Button as B, Container as C, StyledP as D, shadow as E, noScrollBar as F, CustomThemeProvider as G, ModalTitle as H, Img as I, StyledUl as J, StyledLabel as K, Line as L, ModalHeader as M, Link as N, TOS as O, SetModalConfigCtx as P, WalletSelector as Q, WalletUIStatesProvider as R, Spacer as S, Text as T, ThirdwebLocaleContext as U, isAndroid as V, WalletEntryButton as W, isIOS as X, HelperLink as Y, WalletSelection as Z, StyledSelect as _, iconSize as a, StyledDiv as b, useTWLocale as c, ModalDescription as d, Spinner as e, ModalConfigCtx as f, Label as g, fontSize as h, isMobile as i, immutableOverride as j, darkTheme as k, lightTheme as l, en as m, useIsWalletModalOpen as n, useSetIsWalletModalOpen as o, TextDivider as p, fadeInAnimation as q, radius as r, spacing as s, Input as t, useCustomTheme as u, media as v, InputContainer as w, InputButton as x, IconButton as y, StyledButton as z };\n","import { FrameWallet, assertWindowEthereum } from '@thirdweb-dev/wallets';\nimport { useConnect } from '@thirdweb-dev/react-core';\nimport { o as openWindow, C as ConnectingScreen, G as GetStartedScreen, B as ButtonLink } from './safeChainSlug-12460a7c.browser.esm.js';\nimport { c as useTWLocale, i as isMobile, C as Container, M as ModalHeader, S as Spacer, H as ModalTitle, d as ModalDescription, I as Img, a as iconSize, Y as HelperLink } from './formElements-8021f017.browser.esm.js';\nimport { useState, useRef, useEffect } from 'react';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport '@emotion/react';\nimport '@radix-ui/react-icons';\nimport 'qrcode';\nimport 'detect-browser';\nimport '@radix-ui/colors';\nimport '@emotion/styled';\n\nconst FrameFailedConnect = props => {\n const locale = useTWLocale().wallets.frameWallet.connectionFailedScreen;\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n onBack: () => props.onBack(),\n title: \"Frame\"\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsxs(ModalTitle, {\n children: [\" \", locale.title, \" \"]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(ModalDescription, {\n children: locale.description\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsxs(ButtonLink, {\n onClick: () => {\n openWindow(\"https://frame.sh\");\n },\n children: [/*#__PURE__*/jsx(Img, {\n width: iconSize.lg,\n height: iconSize.lg,\n src: props.walletIconURL\n }), /*#__PURE__*/jsx(\"span\", {\n children: locale.downloadFrame\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(HelperLink, {\n target: \"_blank\",\n href: props.supportLink,\n children: locale.supportLink\n })]\n });\n};\nconst FrameConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.frameWallet;\n const connect = useConnect();\n const connectPrompted = useRef(false);\n const {\n walletConfig,\n connected,\n goBack\n } = props;\n const downloadLink = \"https://frame.sh\";\n const supportLink = \"https://docs.frame.sh\";\n const hideBackButton = props.supportedWallets.length === 1;\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n\n // if loading\n (async () => {\n // if not mobile we connect\n if (!isMobile()) {\n try {\n connectPrompted.current = true;\n setScreen(\"connecting\");\n await connect(walletConfig);\n connected();\n } catch (e) {\n setScreen(\"connect-failed\");\n }\n }\n\n // on mobile we open the website\n else if (isMobile()) {\n openWindow(downloadLink);\n }\n })();\n }, [walletConfig, connect, goBack, connected]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n },\n errorConnecting: false,\n onRetry: () => {\n // NOOP\n },\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n onBack: goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL\n });\n }\n if (screen === \"connect-failed\") {\n return /*#__PURE__*/jsx(FrameFailedConnect, {\n onBack: goBack,\n walletIconURL: walletConfig.meta.iconURL,\n supportLink: supportLink\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Frame Wallet](https://frame.sh/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const frameWalletConfig = frameWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(frameWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst frameWallet = config => ({\n id: FrameWallet.id,\n recommended: config?.recommended,\n meta: {\n name: \"Frame\",\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjEuNDE3NEMwIDEzLjkyMDYgMCAxMC4xNzIyIDEuNDUzNiA3LjMwODc4QzIuNzMyMjQgNC43OTAwOCA0Ljc3MjQ3IDIuNzQyMzIgNy4yODE5MSAxLjQ1ODk3QzEwLjEzNDggMCAxMy44Njk0IDAgMjEuMzM4NyAwSDU4LjY2MTNDNjYuMTMwNiAwIDY5Ljg2NTIgMCA3Mi43MTgxIDEuNDU4OTdDNzUuMjI3NiAyLjc0MjMyIDc3LjI2NzcgNC43OTAwOCA3OC41NDY0IDcuMzA4NzhDODAgMTAuMTcyMiA4MCAxMy45MjA2IDgwIDIxLjQxNzRWNTguNTgyNkM4MCA2Ni4wNzk0IDgwIDY5LjgyNzggNzguNTQ2NCA3Mi42OTEyQzc3LjI2NzcgNzUuMjEgNzUuMjI3NiA3Ny4yNTc2IDcyLjcxODEgNzguNTQxQzY5Ljg2NTIgODAgNjYuMTMwNiA4MCA1OC42NjEzIDgwSDIxLjMzODdDMTMuODY5NCA4MCAxMC4xMzQ4IDgwIDcuMjgxOTEgNzguNTQxQzQuNzcyNDcgNzcuMjU3NiAyLjczMjI0IDc1LjIxIDEuNDUzNiA3Mi42OTEyQzAgNjkuODI3OCAwIDY2LjA3OTQgMCA1OC41ODI2VjIxLjQxNzRaIiBmaWxsPSIjMjYyRDM0Ii8+CjxtYXNrIGlkPSJtYXNrMF8yNF83OCIgc3R5bGU9Im1hc2stdHlwZTpsdW1pbmFuY2UiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjE3IiB5PSIxNyIgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ3Ij4KPHBhdGggZD0iTTYzLjY2NjcgMTdIMTdWNjMuNjY2N0g2My42NjY3VjE3WiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzI0Xzc4KSI+CjxwYXRoIGQ9Ik02MS4xNDE3IDQwLjA3MzhWMjIuMzcxN0M2MS4xNDE3IDIwLjgxNTIgNTkuODY0IDE5LjUzMzIgNTguMzEyNSAxOS41MzMySDQwLjYzNzVDNDAuNDU1IDE5LjUzMzIgNDAuMzAyOCAxOS40NzIyIDQwLjE1MDggMTkuMzUwMkwzOC4wMjEzIDE3LjIxMzdDMzcuODk5NyAxNy4wOTE1IDM3LjcxNyAxNyAzNy41MzQ1IDE3SDE5LjgyOTJDMTguMjc3NyAxNyAxNyAxOC4yNTEzIDE3IDE5LjgzODVWMzcuNTQwN0MxNyAzNy43MjM4IDE3LjA2MDggMzcuODc2MyAxNy4xODI1IDM4LjAyOUwxOS4zMTIgNDAuMTY1NUMxOS40MzM3IDQwLjI4NzUgMTkuNTI1IDQwLjQ3MDcgMTkuNTI1IDQwLjY1MzhWNTguMzU2QzE5LjUyNSA1OS45MTI1IDIwLjgwMjcgNjEuMTk0NSAyMi4zNTQyIDYxLjE5NDVINDAuMDU5NUM0MC4yNDIgNjEuMTk0NSA0MC4zOTQyIDYxLjI1NTUgNDAuNTQ2MyA2MS4zNzc3TDQyLjY3NTggNjMuNTE0QzQyLjc5NzUgNjMuNjM2MiA0Mi45OCA2My42OTcyIDQzLjE2MjUgNjMuNjk3Mkg2MC44Njc4QzYyLjQxOTMgNjMuNjk3MiA2My42OTcyIDYyLjQ0NTggNjMuNjk3MiA2MC44NTg3VjQzLjE1NjVDNjMuNjk3MiA0Mi45NzMzIDYzLjYzNjIgNDIuODIwOCA2My41MTQ1IDQyLjY2ODJMNjEuMzg1IDQwLjUzMTdDNjEuMjMzIDQwLjQwOTcgNjEuMTQxNyA0MC4yNTcgNjEuMTQxNyA0MC4wNzM4Wk00OS4xMjUyIDQ5LjUzNTVIMzEuNTcyQzMxLjM1OSA0OS41MzU1IDMxLjE3NjUgNDkuMzUyMyAzMS4xNzY1IDQ5LjEzODdWMzEuNTU4NUMzMS4xNzY1IDMxLjM0NDggMzEuMzU5IDMxLjE2MTggMzEuNTcyIDMxLjE2MThINDkuMTI1MkM0OS4zMzgyIDMxLjE2MTggNDkuNTIwNyAzMS4zNDQ4IDQ5LjUyMDcgMzEuNTU4NVY0OS4xMzg3QzQ5LjU1MSA0OS4zNTIzIDQ5LjM2ODUgNDkuNTM1NSA0OS4xMjUyIDQ5LjUzNTVaIiBmaWxsPSIjRDZGOUY4Ii8+CjwvZz4KPC9zdmc+Cg==\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/frame-companion/ldcoohedfbjoobcadoglnnmmfbdlmmhf\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/frame-extension\"\n }\n },\n create(options) {\n return new FrameWallet(options);\n },\n connectUI: FrameConnectUI,\n isInstalled() {\n const window_ = globalThis?.window;\n if (assertWindowEthereum(window_)) {\n return window_.ethereum?.isFrame || window_.ethereum?.providers?.some(p => p.isFrame) || false;\n }\n return false;\n }\n});\n\nexport { frameWallet };\n","import { MagicLink } from '@thirdweb-dev/wallets';\nimport { useConnect, useWalletContext } from '@thirdweb-dev/react-core';\nimport { useRef, useEffect, useCallback } from 'react';\nimport { W as WalletEntryButton, c as useTWLocale, C as Container, I as Img, a as iconSize, p as TextDivider, e as Spinner, M as ModalHeader, S as Spacer, B as Button, u as useCustomTheme, s as spacing, h as fontSize, y as IconButton } from './formElements-8021f017.browser.esm.js';\nimport { u as useScreenContext, r as reservedScreens, T as ToolTip, I as InputSelectionUI, g as googleIconUri, f as facebookIconUri, t as twitterIconUri, i as githubIconUri, a as appleIconUri, l as linkedinIconUri, j as bitbucketIconUri, k as gitlabIconUri, n as twitchIconUri, p as discordIconUri, q as microsoftIconUri, v as emailAndPhoneIcon, e as emailIcon, x as phoneIcon } from './Tooltip-ee6e156f.browser.esm.js';\nimport styled from '@emotion/styled';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport '@emotion/react';\nimport '@radix-ui/react-icons';\nimport 'detect-browser';\nimport '@radix-ui/colors';\nimport '@radix-ui/react-tooltip';\n\n/**\n * A wallet configurator for [Magic Link](https://magic.link/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const magicLinkConfig = magicLink({\n * apiKey: \"MAGIC_API_KEY,\n * });\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(magicLinkConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nfunction magicLink(config) {\n const emailLoginEnabled = config.emailLogin !== false;\n const smsLoginEnabled = config.smsLogin !== false;\n const oauthProviders = config.oauthOptions?.providers;\n const type = config.type || \"auth\";\n let icon = emailAndPhoneIcon;\n let iconText = \"Email or phone\";\n if (emailLoginEnabled && !smsLoginEnabled) {\n icon = emailIcon;\n iconText = \"Email\";\n }\n if (!emailLoginEnabled && smsLoginEnabled) {\n icon = phoneIcon;\n iconText = \"Phone number\";\n }\n if (!emailLoginEnabled && !smsLoginEnabled) {\n iconText = \"Social login\";\n }\n return {\n category: \"socialLogin\",\n id: MagicLink.id,\n recommended: config?.recommended,\n isHeadless: true,\n meta: {\n ...MagicLink.meta,\n name: iconText,\n iconURL: icon\n },\n create: options => new MagicLink({\n ...options,\n ...config\n }),\n connectUI(props) {\n if (props.modalSize === \"wide\") {\n return /*#__PURE__*/jsx(MagicConnectionUIScreen, {\n ...props,\n type: type,\n emailLogin: emailLoginEnabled,\n smsLogin: smsLoginEnabled,\n oauthProviders: oauthProviders\n });\n }\n if (props.selectionData === undefined) {\n return /*#__PURE__*/jsx(MagicConnectionUIScreen, {\n ...props,\n type: type,\n emailLogin: emailLoginEnabled,\n smsLogin: smsLoginEnabled,\n oauthProviders: oauthProviders\n });\n }\n return /*#__PURE__*/jsx(MagicConnectingUI, {\n ...props,\n type: type\n });\n },\n // select UI only for auth\n selectUI: config.type === \"connect\" ? undefined : props => {\n return /*#__PURE__*/jsx(MagicSelectUI, {\n ...props,\n emailLoginEnabled: emailLoginEnabled,\n smsLoginEnabled: smsLoginEnabled,\n oauthProviders: oauthProviders\n });\n },\n isInstalled() {\n return false;\n }\n };\n}\nconst MagicSelectUI = props => {\n const screen = useScreenContext();\n if (props.modalSize === \"wide\" || screen !== reservedScreens.main && props.modalSize === \"compact\") {\n return /*#__PURE__*/jsx(WalletEntryButton, {\n walletConfig: props.walletConfig,\n selectWallet: () => props.onSelect(undefined)\n });\n }\n return /*#__PURE__*/jsx(MagicUI, {\n ...props,\n emailLogin: props.emailLoginEnabled,\n smsLogin: props.smsLoginEnabled,\n oauthProviders: props.oauthProviders\n });\n};\nconst MagicUI = props => {\n const cwLocale = useTWLocale().connectWallet;\n const locale = useTWLocale().wallets.magicLink;\n const isEmailEnabled = props.emailLogin !== false;\n const isSMSEnabled = props.smsLogin !== false;\n let placeholder = locale.loginWithEmailOrPhone;\n let type = \"text\";\n let emptyErrorMessage = locale.emailOrPhoneRequired;\n if (isEmailEnabled && !isSMSEnabled) {\n placeholder = locale.emailPlaceholder;\n emptyErrorMessage = locale.emailRequired;\n type = \"email\";\n } else if (!isEmailEnabled && isSMSEnabled) {\n placeholder = locale.loginWithPhone;\n emptyErrorMessage = locale.phoneRequired;\n type = \"tel\";\n }\n if (!isEmailEnabled && !isSMSEnabled && !props.oauthProviders) {\n throw new Error('MagicLink must have either \"emailLogin\" or \"smsLogin\" or social login enabled');\n }\n const showInputUI = isEmailEnabled || isSMSEnabled;\n const screen = useScreenContext();\n const showSeparator = props.modalSize === \"wide\" || screen !== reservedScreens.main && props.modalSize === \"compact\";\n return /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n animate: \"fadein\",\n gap: props.modalSize === \"compact\" ? \"lg\" : \"xl\",\n style: {\n width: \"100%\"\n },\n children: [props.oauthProviders && /*#__PURE__*/jsx(Fragment, {\n children: props.oauthProviders.length > 1 ? /*#__PURE__*/jsx(Container, {\n gap: \"md\",\n flex: \"row\",\n style: {\n justifyContent: \"space-between\"\n },\n center: \"x\",\n children: props.oauthProviders.map(provider => {\n return /*#__PURE__*/jsx(SocialIconButton, {\n onClick: () => {\n props.onSelect({\n provider\n });\n },\n children: /*#__PURE__*/jsx(ToolTip, {\n tip: `${locale.loginWith} ${upperCaseFirstLetter(provider)}`,\n sideOffset: 15,\n children: /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n children: /*#__PURE__*/jsx(Img, {\n src: providerImages[provider],\n width: iconSize.lg,\n height: iconSize.lg,\n alt: \"\"\n })\n })\n })\n }, provider);\n })\n }) : /*#__PURE__*/jsx(Container, {\n gap: \"xs\",\n flex: \"column\",\n children: props.oauthProviders.map(provider => {\n return /*#__PURE__*/jsxs(SocialButtonLarge, {\n variant: \"secondary\",\n onClick: () => {\n props.onSelect({\n provider\n });\n },\n children: [/*#__PURE__*/jsx(Img, {\n src: providerImages[provider],\n width: iconSize.md,\n height: iconSize.md,\n alt: \"\"\n }), /*#__PURE__*/jsxs(\"span\", {\n children: [locale.loginWith, \" \", upperCaseFirstLetter(provider)]\n })]\n }, provider);\n })\n })\n }), showInputUI && /*#__PURE__*/jsxs(Fragment, {\n children: [showSeparator && /*#__PURE__*/jsx(TextDivider, {\n text: cwLocale.or\n }), /*#__PURE__*/jsx(InputSelectionUI, {\n submitButtonText: locale.submitEmail,\n onSelect: props.onSelect,\n placeholder: placeholder,\n name: \"magic-input\",\n type: type,\n emptyErrorMessage: emptyErrorMessage,\n errorMessage: input => {\n const isEmail = input.includes(\"@\");\n const isPhone = Number.isInteger(Number(input[input.length - 1]));\n if (isEmail && isEmailEnabled) {\n const emailRegex = /^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,})$/g;\n const isValidEmail = emailRegex.test(input.replace(/\\+/g, \"\"));\n if (!isValidEmail) {\n return locale.invalidEmail;\n }\n } else if (isPhone && isSMSEnabled) {\n if (!input.startsWith(\"+\")) {\n return locale.countryCodeMissing;\n }\n } else {\n if (isEmailEnabled && isSMSEnabled) {\n return locale.invalidEmailOrPhone;\n }\n if (isEmailEnabled) {\n return locale.invalidEmail;\n }\n if (isSMSEnabled) {\n return locale.invalidPhone;\n }\n }\n }\n })]\n })]\n });\n};\nfunction useConnectMagic() {\n const connect = useConnect();\n const {\n activeChain\n } = useWalletContext();\n const connector = useCallback(async data => {\n const {\n selectionData,\n walletConfig,\n connected,\n show,\n hide\n } = data;\n\n // oauth\n if (typeof selectionData === \"object\") {\n try {\n hide();\n (async () => {\n await connect(walletConfig, {\n oauthProvider: selectionData.provider,\n chainId: activeChain.chainId\n });\n })();\n connected();\n } catch (e) {\n console.error(e);\n }\n show();\n }\n\n // email or phone\n else {\n const isEmail = selectionData ? selectionData.includes(\"@\") : false;\n hide();\n try {\n await connect(walletConfig, data.type === \"connect\" ? {} : isEmail ? {\n email: selectionData,\n chainId: activeChain.chainId\n } : {\n phoneNumber: selectionData,\n chainId: activeChain.chainId\n });\n connected();\n } catch (e) {\n console.error(e);\n }\n show();\n }\n }, [connect, activeChain.chainId]);\n return connector;\n}\nconst MagicConnectingUI = _ref => {\n let {\n connected,\n walletConfig,\n show,\n selectionData,\n supportedWallets,\n type,\n hide\n } = _ref;\n const connectPrompted = useRef(false);\n const singleWallet = supportedWallets.length === 1;\n const connectMagic = useConnectMagic();\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n connectPrompted.current = true;\n connectMagic({\n selectionData: selectionData,\n singleWallet,\n type,\n walletConfig,\n show,\n connected,\n hide\n });\n }, [connectMagic, connected, selectionData, show, singleWallet, type, walletConfig, hide]);\n return /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n style: {\n minHeight: \"350px\"\n },\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"xl\",\n color: \"accentText\"\n })\n });\n};\nconst MagicConnectionUIScreen = props => {\n const locale = useTWLocale().wallets.magicLink;\n const connectMagic = useConnectMagic();\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n fullHeight: true,\n flex: \"column\",\n style: {\n minHeight: \"300px\"\n },\n children: [/*#__PURE__*/jsx(ModalHeader, {\n onBack: props.goBack,\n title: locale.signIn\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"both\",\n px: props.modalSize === \"wide\" ? \"lg\" : undefined,\n children: /*#__PURE__*/jsx(MagicUI, {\n ...props,\n onSelect: data => {\n connectMagic({\n selectionData: data,\n connected: props.connected,\n show: props.show,\n singleWallet: props.supportedWallets.length === 1,\n type: props.type,\n walletConfig: props.walletConfig,\n hide: props.hide\n });\n }\n })\n })]\n });\n};\nconst providerImages = {\n google: googleIconUri,\n facebook: facebookIconUri,\n twitter: twitterIconUri,\n github: githubIconUri,\n apple: appleIconUri,\n linkedin: linkedinIconUri,\n bitbucket: bitbucketIconUri,\n gitlab: gitlabIconUri,\n twitch: twitchIconUri,\n discord: discordIconUri,\n microsoft: microsoftIconUri\n};\nfunction upperCaseFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nconst SocialButtonLarge = /* @__PURE__ */styled(Button)(() => {\n const theme = useCustomTheme();\n return {\n display: \"flex\",\n justifyContent: \"center\",\n gap: spacing.md,\n fontSize: fontSize.md,\n transition: \"background-color 0.2s ease\",\n \"&:hover\": {\n backgroundColor: theme.colors.secondaryButtonBg\n },\n \"&:active\": {\n boxShadow: \"none\"\n }\n };\n});\nconst SocialIconButton = /* @__PURE__ */styled(IconButton)(() => {\n const theme = useCustomTheme();\n return {\n border: `1px solid ${theme.colors.borderColor}`,\n padding: spacing.sm,\n transition: \"border-color 0.2s ease\",\n \"&:hover\": {\n borderColor: theme.colors.accentText,\n background: \"transparent\"\n },\n flexGrow: 1\n };\n});\n\nexport { magicLink };\n","import * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\nfunction FocusGuards(props: any) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard());\n count++;\n\n return () => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\n\nfunction createFocusGuard() {\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.cssText = 'outline: none; opacity: 0; position: fixed; pointer-events: none';\n return element;\n}\n\nconst Root = FocusGuards;\n\nexport {\n FocusGuards,\n //\n Root,\n //\n useFocusGuards,\n};\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\nconst AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nconst AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus(): void };\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope\n * -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_SCOPE_NAME = 'FocusScope';\n\ntype FocusScopeElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface FocusScopeProps extends PrimitiveDivProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean;\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean;\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n onMountAutoFocus?: (event: Event) => void;\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n onUnmountAutoFocus?: (event: Event) => void;\n}\n\nconst FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n },\n }).current;\n\n // Takes care of trapping focus if focus is moved outside programmatically for example\n React.useEffect(() => {\n if (trapped) {\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const target = event.target as HTMLElement | null;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n function handleMutations(mutations: MutationRecord[]) {\n const focusedElement = document.activeElement as HTMLElement | null;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n\n // We hit a react bug (fixed in v17) with focusing in unmount.\n // We need to delay the focus a little to get around it for now.\n // See: https://github.com/facebook/react/issues/17894\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n\n // Takes care of looping focus (when tabbing whilst at the edges)\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n\n return (\n \n );\n});\n\nFocusScope.displayName = FOCUS_SCOPE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nfunction focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nfunction getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nfunction findVisible(elements: HTMLElement[], container: HTMLElement) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\n\nfunction isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\nfunction isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nfunction focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope stack\n * -----------------------------------------------------------------------------------------------*/\n\ntype FocusScopeAPI = { paused: boolean; pause(): void; resume(): void };\nconst focusScopesStack = createFocusScopesStack();\n\nfunction createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n let stack: FocusScopeAPI[] = [];\n\n return {\n add(focusScope: FocusScopeAPI) {\n // pause the currently active focus scope (at the top of the stack)\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n // remove in case it already exists (because we'll re-add it at the top of the stack)\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n\n remove(focusScope: FocusScopeAPI) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n },\n };\n}\n\nfunction arrayRemove(array: T[], item: T) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n\nfunction removeLinks(items: HTMLElement[]) {\n return items.filter((item) => item.tagName !== 'A');\n}\n\nconst Root = FocusScope;\n\nexport {\n FocusScope,\n //\n Root,\n};\nexport type { FocusScopeProps };\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\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 zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return

...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (props) {\n var noRelative = props.noRelative, noImportant = props.noImportant, _a = props.gapMode, gapMode = _a === void 0 ? 'margin' : _a;\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of d) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== document.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n target = target.parentNode;\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n if (isDeltaPositive && ((noOverscroll && availableScroll === 0) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && availableScrollTop === 0) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(function () { return styleSingleton(); })[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if ('touches' in event && event.touches.length === 2) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && e.target === event.target && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: \"margin\" }) : null));\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { hideOthers } from 'aria-hidden';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPOVER_NAME = 'Popover';\n\ntype ScopedProps

= P & { __scopePopover?: Scope };\nconst [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype PopoverContextValue = {\n triggerRef: React.RefObject;\n contentId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n hasCustomAnchor: boolean;\n onCustomAnchorAdd(): void;\n onCustomAnchorRemove(): void;\n modal: boolean;\n};\n\nconst [PopoverProvider, usePopoverContext] =\n createPopoverContext(POPOVER_NAME);\n\ninterface PopoverProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nconst Popover: React.FC = (props: ScopedProps) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false,\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n \n setOpen((prevOpen) => !prevOpen), [setOpen])}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n modal={modal}\n >\n {children}\n \n \n );\n};\n\nPopover.displayName = POPOVER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopoverAnchor';\n\ntype PopoverAnchorElement = React.ElementRef;\ntype PopperAnchorProps = Radix.ComponentPropsWithoutRef;\ninterface PopoverAnchorProps extends PopperAnchorProps {}\n\nconst PopoverAnchor = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n\n return ;\n }\n);\n\nPopoverAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'PopoverTrigger';\n\ntype PopoverTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface PopoverTriggerProps extends PrimitiveButtonProps {}\n\nconst PopoverTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n\n const trigger = (\n \n );\n\n return context.hasCustomAnchor ? (\n trigger\n ) : (\n \n {trigger}\n \n );\n }\n);\n\nPopoverTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'PopoverPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef;\ninterface PopoverPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst PopoverPortal: React.FC = (props: ScopedProps) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nPopoverPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopoverContent';\n\ninterface PopoverContentProps extends PopoverContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst PopoverContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return (\n \n {context.modal ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n\nPopoverContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentTypeElement = PopoverContentImplElement;\ninterface PopoverContentTypeProps\n extends Omit {}\n\nconst PopoverContentModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n \n {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n )}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )}\n />\n \n );\n }\n);\n\nconst PopoverContentNonModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentImplElement = React.ElementRef;\ntype FocusScopeProps = Radix.ComponentPropsWithoutRef;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef;\ninterface PopoverContentImplProps\n extends Omit,\n Omit {\n /**\n * Whether focus should be trapped within the `Popover`\n * (default: false)\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst PopoverContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n\n // Make sure the whole tree has focus guards as our `Popover` may be\n // the last element in the DOM (beacuse of the `Portal`)\n useFocusGuards();\n\n return (\n \n context.onOpenChange(false)}\n >\n \n \n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'PopoverClose';\n\ntype PopoverCloseElement = React.ElementRef;\ninterface PopoverCloseProps extends PrimitiveButtonProps {}\n\nconst PopoverClose = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return (\n context.onOpenChange(false))}\n />\n );\n }\n);\n\nPopoverClose.displayName = CLOSE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopoverArrow';\n\ntype PopoverArrowElement = React.ElementRef;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef;\ninterface PopoverArrowProps extends PopperArrowProps {}\n\nconst PopoverArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return ;\n }\n);\n\nPopoverArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Popover;\nconst Anchor = PopoverAnchor;\nconst Trigger = PopoverTrigger;\nconst Portal = PopoverPortal;\nconst Content = PopoverContent;\nconst Close = PopoverClose;\nconst Arrow = PopoverArrow;\n\nexport {\n createPopoverScope,\n //\n Popover,\n PopoverAnchor,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n PopoverArrow,\n //\n Root,\n Anchor,\n Trigger,\n Portal,\n Content,\n Close,\n Arrow,\n};\nexport type {\n PopoverProps,\n PopoverAnchorProps,\n PopoverTriggerProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n};\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\ntype SlotProps = Radix.ComponentPropsWithoutRef;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like ``.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject;\n itemMap: Map, { ref: React.RefObject } & ItemData>;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(new Map()).current;\n return (\n \n {children}\n \n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return {children};\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n \n {children}\n \n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC = (props) => {\n const { dir, children } = props;\n return {children};\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLSpanElement,\n ItemData\n>(GROUP_NAME);\n\ntype ScopedProps

= P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation;\n /**\n * The direction of navigation between items.\n */\n dir?: Direction;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n currentTabStopId: string | null;\n onItemFocus(tabStopId: string): void;\n onItemShiftTab(): void;\n onFocusableItemAdd(): void;\n onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n createRovingFocusGroupContext(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n return (\n \n \n \n \n \n );\n }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface RovingFocusGroupImplProps\n extends Omit,\n RovingFocusGroupOptions {\n currentTabStopId?: string | null;\n defaultCurrentTabStopId?: string;\n onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n onEntryFocus?: (event: Event) => void;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n RovingFocusGroupImplElement,\n RovingFocusGroupImplProps\n>((props: ScopedProps, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange,\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n\n return (\n setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n )}\n onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n onFocusableItemAdd={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n )}\n onFocusableItemRemove={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n )}\n >\n {\n isClickFocusRef.current = true;\n })}\n onFocus={composeEventHandlers(props.onFocus, (event) => {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n const candidateNodes = candidateItems.map((item) => item.ref.current!);\n focusFirst(candidateNodes);\n }\n }\n\n isClickFocusRef.current = false;\n })}\n onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n />\n \n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ElementRef;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef;\ninterface RovingFocusItemProps extends PrimitiveSpanProps {\n tabStopId?: string;\n focusable?: boolean;\n active?: boolean;\n}\n\nconst RovingFocusGroupItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n return (\n \n {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n if (focusIntent !== undefined) {\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n }\n })}\n />\n \n );\n }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record = {\n ArrowLeft: 'prev', ArrowUp: 'prev',\n ArrowRight: 'next', ArrowDown: 'next',\n PageUp: 'first', Home: 'first',\n PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n createRovingFocusGroupScope,\n //\n RovingFocusGroup,\n RovingFocusGroupItem,\n //\n Root,\n Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps

= P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\n\ntype TabsElement = React.ElementRef;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n \n \n \n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n \n \n \n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n \n {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n \n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n \n {({ present }) => (\n \n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n","/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\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 let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs, composeRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { hideOthers } from 'aria-hidden';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst SELECTION_KEYS = ['Enter', ' '];\nconst FIRST_KEYS = ['ArrowDown', 'PageUp', 'Home'];\nconst LAST_KEYS = ['ArrowUp', 'PageDown', 'End'];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS: Record = {\n ltr: [...SELECTION_KEYS, 'ArrowRight'],\n rtl: [...SELECTION_KEYS, 'ArrowLeft'],\n};\nconst SUB_CLOSE_KEYS: Record = {\n ltr: ['ArrowLeft'],\n rtl: ['ArrowRight'],\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Menu\n * -----------------------------------------------------------------------------------------------*/\n\nconst MENU_NAME = 'Menu';\n\ntype ItemData = { disabled: boolean; textValue: string };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n MenuItemElement,\n ItemData\n>(MENU_NAME);\n\ntype ScopedProps

= P & { __scopeMenu?: Scope };\nconst [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope,\n]);\nconst usePopperScope = createPopperScope();\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype MenuContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n content: MenuContentElement | null;\n onContentChange(content: MenuContentElement | null): void;\n};\n\nconst [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\n\ntype MenuRootContextValue = {\n onClose(): void;\n isUsingKeyboardRef: React.RefObject;\n dir: Direction;\n modal: boolean;\n};\n\nconst [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\n\ninterface MenuProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n modal?: boolean;\n}\n\nconst Menu: React.FC = (props: ScopedProps) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n\n React.useEffect(() => {\n // Capture phase ensures we set the boolean before any side effects execute\n // in response to the key or pointer event as they might depend on this value.\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener('pointerdown', handlePointer, { capture: true, once: true });\n document.addEventListener('pointermove', handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => (isUsingKeyboardRef.current = false);\n document.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener('keydown', handleKeyDown, { capture: true });\n document.removeEventListener('pointerdown', handlePointer, { capture: true });\n document.removeEventListener('pointermove', handlePointer, { capture: true });\n };\n }, []);\n\n return (\n \n \n handleOpenChange(false), [handleOpenChange])}\n isUsingKeyboardRef={isUsingKeyboardRef}\n dir={direction}\n modal={modal}\n >\n {children}\n \n \n \n );\n};\n\nMenu.displayName = MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'MenuAnchor';\n\ntype MenuAnchorElement = React.ElementRef;\ntype PopperAnchorProps = Radix.ComponentPropsWithoutRef;\ninterface MenuAnchorProps extends PopperAnchorProps {}\n\nconst MenuAnchor = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return ;\n }\n);\n\nMenuAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'MenuPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef;\ninterface MenuPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst MenuPortal: React.FC = (props: ScopedProps) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'MenuContent';\n\ntype MenuContentContextValue = {\n onItemEnter(event: React.PointerEvent): void;\n onItemLeave(event: React.PointerEvent): void;\n onTriggerLeave(event: React.PointerEvent): void;\n searchRef: React.RefObject;\n pointerGraceTimerRef: React.MutableRefObject;\n onPointerGraceIntentChange(intent: GraceIntent | null): void;\n};\nconst [MenuContentProvider, useMenuContentContext] =\n createMenuContext(CONTENT_NAME);\n\ntype MenuContentElement = MenuRootContentTypeElement;\n/**\n * We purposefully don't union MenuRootContent and MenuSubContent props here because\n * they have conflicting prop types. We agreed that we would allow MenuSubContent to\n * accept props that it would just ignore.\n */\ninterface MenuContentProps extends MenuRootContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst MenuContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n\n return (\n \n \n \n {rootContext.modal ? (\n \n ) : (\n \n )}\n \n \n \n );\n }\n);\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype MenuRootContentTypeElement = MenuContentImplElement;\ninterface MenuRootContentTypeProps\n extends Omit {}\n\nconst MenuRootContentModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n // Hide everything from ARIA except the `MenuContent`\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n event.preventDefault(),\n { checkForDefaultPrevented: false }\n )}\n onDismiss={() => context.onOpenChange(false)}\n />\n );\n }\n);\n\nconst MenuRootContentNonModal = React.forwardRef<\n MenuRootContentTypeElement,\n MenuRootContentTypeProps\n>((props: ScopedProps, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return (\n context.onOpenChange(false)}\n />\n );\n});\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype MenuContentImplElement = React.ElementRef;\ntype FocusScopeProps = Radix.ComponentPropsWithoutRef;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef;\ntype MenuContentImplPrivateProps = {\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n onDismiss?: DismissableLayerProps['onDismiss'];\n disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents'];\n\n /**\n * Whether scrolling outside the `MenuContent` should be prevented\n * (default: `false`)\n */\n disableOutsideScroll?: boolean;\n\n /**\n * Whether focus should be trapped within the `MenuContent`\n * (default: false)\n */\n trapFocus?: FocusScopeProps['trapped'];\n};\ninterface MenuContentImplProps\n extends MenuContentImplPrivateProps,\n Omit {\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: RovingFocusGroupProps['loop'];\n\n onEntryFocus?: RovingFocusGroupProps['onEntryFocus'];\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst MenuContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef('');\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef('right');\n const lastPointerXRef = React.useRef(0);\n\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll\n ? { as: Slot, allowPinchZoom: true }\n : undefined;\n\n const handleTypeaheadSearch = (key: string) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n\n // Reset `searchRef` 1 second after it was last updated\n (function updateSearch(value: string) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== '') timerRef.current = window.setTimeout(() => updateSearch(''), 1000);\n })(search);\n\n if (newItem) {\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => (newItem as HTMLElement).focus());\n }\n };\n\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n\n // Make sure the whole tree has focus guards as our `MenuContent` may be\n // the last element in the DOM (beacuse of the `Portal`)\n useFocusGuards();\n\n const isPointerMovingToSubmenu = React.useCallback((event: React.PointerEvent) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n\n return (\n {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n )}\n onItemLeave={React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n )}\n onTriggerLeave={React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n )}\n pointerGraceTimerRef={pointerGraceTimerRef}\n onPointerGraceIntentChange={React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, [])}\n >\n \n {\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault();\n contentRef.current?.focus();\n })}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n \n {\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n })}\n >\n {\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement;\n const isKeyDownInside =\n target.closest('[data-radix-menu-content]') === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === 'Tab') event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n // focus first/last item based on key pressed\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current!);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n })}\n onBlur={composeEventHandlers(props.onBlur, (event) => {\n // clear search buffer when leaving the menu\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = '';\n }\n })}\n onPointerMove={composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target as HTMLElement;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n\n // We don't use `event.movementX` for this check because Safari will\n // always return `0` on a pointer event.\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? 'right' : 'left';\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )}\n />\n \n \n \n \n \n );\n }\n);\n\nMenuContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'MenuGroup';\n\ntype MenuGroupElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface MenuGroupProps extends PrimitiveDivProps {}\n\nconst MenuGroup = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return ;\n }\n);\n\nMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'MenuLabel';\n\ntype MenuLabelElement = React.ElementRef;\ninterface MenuLabelProps extends PrimitiveDivProps {}\n\nconst MenuLabel = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return ;\n }\n);\n\nMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'MenuItem';\nconst ITEM_SELECT = 'menu.itemSelect';\n\ntype MenuItemElement = MenuItemImplElement;\ninterface MenuItemProps extends Omit {\n onSelect?: (event: Event) => void;\n}\n\nconst MenuItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n\n return (\n {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n }}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n // Pointer down can move to a different menu item which should activate it on pointer up.\n // We dispatch a click for selection to allow composition with click based triggers and to\n // prevent Firefox from getting stuck in text selection mode when the menu closes.\n if (!isPointerDownRef.current) event.currentTarget?.click();\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== '';\n if (disabled || (isTypingAhead && event.key === ' ')) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n /**\n * We prevent default browser behaviour for selection keys as they should trigger\n * a selection only:\n * - prevents space from scrolling the page.\n * - if keydown causes focus to move, prevents keydown from firing on the new target.\n */\n event.preventDefault();\n }\n })}\n />\n );\n }\n);\n\nMenuItem.displayName = ITEM_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype MenuItemImplElement = React.ElementRef;\ninterface MenuItemImplProps extends PrimitiveDivProps {\n disabled?: boolean;\n textValue?: string;\n}\n\nconst MenuItemImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n\n // get the item's `.textContent` as default strategy for typeahead `textValue`\n const [textContent, setTextContent] = React.useState('');\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? '').trim());\n }\n }, [itemProps.children]);\n\n return (\n \n \n {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus();\n }\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n )}\n onFocus={composeEventHandlers(props.onFocus, () => setIsFocused(true))}\n onBlur={composeEventHandlers(props.onBlur, () => setIsFocused(false))}\n />\n \n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * MenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = 'MenuCheckboxItem';\n\ntype MenuCheckboxItemElement = MenuItemElement;\n\ntype CheckedState = boolean | 'indeterminate';\n\ninterface MenuCheckboxItemProps extends MenuItemProps {\n checked?: CheckedState;\n // `onCheckedChange` can never be called with `\"indeterminate\"` from the inside\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst MenuCheckboxItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return (\n \n onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )}\n />\n \n );\n }\n);\n\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = 'MenuRadioGroup';\n\nconst [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: undefined, onValueChange: () => {} }\n);\n\ntype MenuRadioGroupElement = React.ElementRef;\ninterface MenuRadioGroupProps extends MenuGroupProps {\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nconst MenuRadioGroup = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return (\n \n \n \n );\n }\n);\n\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = 'MenuRadioItem';\n\ntype MenuRadioItemElement = React.ElementRef;\ninterface MenuRadioItemProps extends MenuItemProps {\n value: string;\n}\n\nconst MenuRadioItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return (\n \n context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )}\n />\n \n );\n }\n);\n\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_INDICATOR_NAME = 'MenuItemIndicator';\n\ntype CheckboxContextValue = { checked: CheckedState };\n\nconst [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\n\ntype MenuItemIndicatorElement = React.ElementRef;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef;\ninterface MenuItemIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst MenuItemIndicator = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return (\n \n \n \n );\n }\n);\n\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'MenuSeparator';\n\ntype MenuSeparatorElement = React.ElementRef;\ninterface MenuSeparatorProps extends PrimitiveDivProps {}\n\nconst MenuSeparator = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return (\n \n );\n }\n);\n\nMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'MenuArrow';\n\ntype MenuArrowElement = React.ElementRef;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef;\ninterface MenuArrowProps extends PopperArrowProps {}\n\nconst MenuArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return ;\n }\n);\n\nMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = 'MenuSub';\n\ntype MenuSubContextValue = {\n contentId: string;\n triggerId: string;\n trigger: MenuSubTriggerElement | null;\n onTriggerChange(trigger: MenuSubTriggerElement | null): void;\n};\n\nconst [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\n\ninterface MenuSubProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst MenuSub: React.FC = (props: ScopedProps) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n\n // Prevent the parent menu from reopening with open submenus.\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nMenuSub.displayName = SUB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = 'MenuSubTrigger';\n\ntype MenuSubTriggerElement = MenuItemImplElement;\ninterface MenuSubTriggerProps extends MenuItemImplProps {}\n\nconst MenuSubTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n\n return (\n \n {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n /**\n * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)\n * and we rely heavily on `onFocusOutside` for submenus to close when switching\n * between separate submenus.\n */\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n }}\n onPointerMove={composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n // TODO: make sure to update this when we change positioning logic\n const side = context.content?.dataset.side as Side;\n const rightSide = side === 'right';\n const bleed = rightSide ? -5 : +5;\n const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];\n const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];\n\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n });\n\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n\n // There's 100ms where the user may leave an item before the submenu was opened.\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n )}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== '';\n if (props.disabled || (isTypingAhead && event.key === ' ')) return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n // The trigger may hold focus if opened via pointer interaction\n // so we ensure content is given focus again when switching to keyboard.\n context.content?.focus();\n // prevent window from scrolling\n event.preventDefault();\n }\n })}\n />\n \n );\n }\n);\n\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = 'MenuSubContent';\n\ntype MenuSubContentElement = MenuContentImplElement;\ninterface MenuSubContentProps\n extends Omit<\n MenuContentImplProps,\n keyof MenuContentImplPrivateProps | 'onCloseAutoFocus' | 'onEntryFocus' | 'side' | 'align'\n > {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst MenuSubContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return (\n \n \n \n {\n // when opening a submenu, focus content for keyboard users only\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n }}\n // The menu might close because of focusing another menu item in the parent menu. We\n // don't want it to refocus the trigger in that case so we handle trigger focus ourselves.\n onCloseAutoFocus={(event) => event.preventDefault()}\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) => {\n // We prevent closing when the trigger is focused to avoid triggering a re-open animation\n // on pointer interaction.\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n })}\n onEscapeKeyDown={composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n // ensure pressing escape in submenu doesn't escape full screen mode\n event.preventDefault();\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n // Submenu key events bubble through portals. We only care about keys in this menu.\n const isKeyDownInside = event.currentTarget.contains(event.target as HTMLElement);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n // We focus manually because we prevented it in `onCloseAutoFocus`\n subContext.trigger?.focus();\n // prevent window from scrolling\n event.preventDefault();\n }\n })}\n />\n \n \n \n );\n }\n);\n\nMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getOpenState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getCheckedState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in all the values,\n * the search and the current match, and returns the next match (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through options starting with that character)\n *\n * We also reorder the values by wrapping the array around the current match.\n * This is so we always look forward from the current match, and picking the first\n * match will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current match from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current match still matches.\n */\nfunction getNextMatch(values: string[], search: string, currentMatch?: string) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find((value) =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : undefined;\n}\n\ntype Point = { x: number; y: number };\ntype Polygon = Point[];\ntype Side = 'left' | 'right';\ntype GraceIntent = { area: Polygon; side: Side };\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nfunction isPointerInGraceArea(event: React.PointerEvent, area?: Polygon) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\n\nfunction whenMouse(handler: React.PointerEventHandler): React.PointerEventHandler {\n return (event) => (event.pointerType === 'mouse' ? handler(event) : undefined);\n}\n\nconst Root = Menu;\nconst Anchor = MenuAnchor;\nconst Portal = MenuPortal;\nconst Content = MenuContent;\nconst Group = MenuGroup;\nconst Label = MenuLabel;\nconst Item = MenuItem;\nconst CheckboxItem = MenuCheckboxItem;\nconst RadioGroup = MenuRadioGroup;\nconst RadioItem = MenuRadioItem;\nconst ItemIndicator = MenuItemIndicator;\nconst Separator = MenuSeparator;\nconst Arrow = MenuArrow;\nconst Sub = MenuSub;\nconst SubTrigger = MenuSubTrigger;\nconst SubContent = MenuSubContent;\n\nexport {\n createMenuScope,\n //\n Menu,\n MenuAnchor,\n MenuPortal,\n MenuContent,\n MenuGroup,\n MenuLabel,\n MenuItem,\n MenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioItem,\n MenuItemIndicator,\n MenuSeparator,\n MenuArrow,\n MenuSub,\n MenuSubTrigger,\n MenuSubContent,\n //\n Root,\n Anchor,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n MenuProps,\n MenuAnchorProps,\n MenuPortalProps,\n MenuContentProps,\n MenuGroupProps,\n MenuLabelProps,\n MenuItemProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuItemIndicatorProps,\n MenuSeparatorProps,\n MenuArrowProps,\n MenuSubProps,\n MenuSubTriggerProps,\n MenuSubContentProps,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as MenuPrimitive from '@radix-ui/react-menu';\nimport { createMenuScope } from '@radix-ui/react-menu';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenu\n * -----------------------------------------------------------------------------------------------*/\n\nconst DROPDOWN_MENU_NAME = 'DropdownMenu';\n\ntype ScopedProps

= P & { __scopeDropdownMenu?: Scope };\nconst [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nconst useMenuScope = createMenuScope();\n\ntype DropdownMenuContextValue = {\n triggerId: string;\n triggerRef: React.RefObject;\n contentId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DropdownMenuProvider, useDropdownMenuContext] =\n createDropdownMenuContext(DROPDOWN_MENU_NAME);\n\ninterface DropdownMenuProps {\n children?: React.ReactNode;\n dir?: Direction;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst DropdownMenu: React.FC = (props: ScopedProps) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n \n {children}\n \n \n );\n};\n\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DropdownMenuTrigger';\n\ntype DropdownMenuTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuTriggerProps extends PrimitiveButtonProps {}\n\nconst DropdownMenuTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return (\n \n {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!context.open) event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) context.onOpenToggle();\n if (event.key === 'ArrowDown') context.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) event.preventDefault();\n })}\n />\n \n );\n }\n);\n\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'DropdownMenuPortal';\n\ntype MenuPortalProps = React.ComponentPropsWithoutRef;\ninterface DropdownMenuPortalProps extends MenuPortalProps {}\n\nconst DropdownMenuPortal: React.FC = (\n props: ScopedProps\n) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n};\n\nDropdownMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DropdownMenuContent';\n\ntype DropdownMenuContentElement = React.ElementRef;\ntype MenuContentProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuContentProps extends Omit {}\n\nconst DropdownMenuContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n\n return (\n {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n })}\n onInteractOutside={composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n })}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-dropdown-menu-content-transform-origin':\n 'var(--radix-popper-transform-origin)',\n '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-dropdown-menu-content-available-height':\n 'var(--radix-popper-available-height)',\n '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n }\n);\n\nDropdownMenuContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'DropdownMenuGroup';\n\ntype DropdownMenuGroupElement = React.ElementRef;\ntype MenuGroupProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuGroupProps extends MenuGroupProps {}\n\nconst DropdownMenuGroup = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n }\n);\n\nDropdownMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'DropdownMenuLabel';\n\ntype DropdownMenuLabelElement = React.ElementRef;\ntype MenuLabelProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuLabelProps extends MenuLabelProps {}\n\nconst DropdownMenuLabel = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n }\n);\n\nDropdownMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'DropdownMenuItem';\n\ntype DropdownMenuItemElement = React.ElementRef;\ntype MenuItemProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuItemProps extends MenuItemProps {}\n\nconst DropdownMenuItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n }\n);\n\nDropdownMenuItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';\n\ntype DropdownMenuCheckboxItemElement = React.ElementRef;\ntype MenuCheckboxItemProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuCheckboxItemProps extends MenuCheckboxItemProps {}\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n DropdownMenuCheckboxItemElement,\n DropdownMenuCheckboxItemProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';\n\ntype DropdownMenuRadioGroupElement = React.ElementRef;\ntype MenuRadioGroupProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuRadioGroupProps extends MenuRadioGroupProps {}\n\nconst DropdownMenuRadioGroup = React.forwardRef<\n DropdownMenuRadioGroupElement,\n DropdownMenuRadioGroupProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = 'DropdownMenuRadioItem';\n\ntype DropdownMenuRadioItemElement = React.ElementRef;\ntype MenuRadioItemProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuRadioItemProps extends MenuRadioItemProps {}\n\nconst DropdownMenuRadioItem = React.forwardRef<\n DropdownMenuRadioItemElement,\n DropdownMenuRadioItemProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'DropdownMenuItemIndicator';\n\ntype DropdownMenuItemIndicatorElement = React.ElementRef;\ntype MenuItemIndicatorProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuItemIndicatorProps extends MenuItemIndicatorProps {}\n\nconst DropdownMenuItemIndicator = React.forwardRef<\n DropdownMenuItemIndicatorElement,\n DropdownMenuItemIndicatorProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'DropdownMenuSeparator';\n\ntype DropdownMenuSeparatorElement = React.ElementRef;\ntype MenuSeparatorProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuSeparatorProps extends MenuSeparatorProps {}\n\nconst DropdownMenuSeparator = React.forwardRef<\n DropdownMenuSeparatorElement,\n DropdownMenuSeparatorProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'DropdownMenuArrow';\n\ntype DropdownMenuArrowElement = React.ElementRef;\ntype MenuArrowProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuArrowProps extends MenuArrowProps {}\n\nconst DropdownMenuArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n }\n);\n\nDropdownMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSub\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropdownMenuSubProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst DropdownMenuSub: React.FC = (\n props: ScopedProps\n) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n \n {children}\n \n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';\n\ntype DropdownMenuSubTriggerElement = React.ElementRef;\ntype MenuSubTriggerProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuSubTriggerProps extends MenuSubTriggerProps {}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n DropdownMenuSubTriggerElement,\n DropdownMenuSubTriggerProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return ;\n});\n\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = 'DropdownMenuSubContent';\n\ntype DropdownMenuSubContentElement = React.ElementRef;\ntype MenuSubContentProps = Radix.ComponentPropsWithoutRef;\ninterface DropdownMenuSubContentProps extends MenuSubContentProps {}\n\nconst DropdownMenuSubContent = React.forwardRef<\n DropdownMenuSubContentElement,\n DropdownMenuSubContentProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n\n return (\n \n );\n});\n\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = DropdownMenu;\nconst Trigger = DropdownMenuTrigger;\nconst Portal = DropdownMenuPortal;\nconst Content = DropdownMenuContent;\nconst Group = DropdownMenuGroup;\nconst Label = DropdownMenuLabel;\nconst Item = DropdownMenuItem;\nconst CheckboxItem = DropdownMenuCheckboxItem;\nconst RadioGroup = DropdownMenuRadioGroup;\nconst RadioItem = DropdownMenuRadioItem;\nconst ItemIndicator = DropdownMenuItemIndicator;\nconst Separator = DropdownMenuSeparator;\nconst Arrow = DropdownMenuArrow;\nconst Sub = DropdownMenuSub;\nconst SubTrigger = DropdownMenuSubTrigger;\nconst SubContent = DropdownMenuSubContent;\n\nexport {\n createDropdownMenuScope,\n //\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuItemIndicator,\n DropdownMenuSeparator,\n DropdownMenuArrow,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n DropdownMenuProps,\n DropdownMenuTriggerProps,\n DropdownMenuPortalProps,\n DropdownMenuContentProps,\n DropdownMenuGroupProps,\n DropdownMenuLabelProps,\n DropdownMenuItemProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuItemIndicatorProps,\n DropdownMenuSeparatorProps,\n DropdownMenuArrowProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuSubContentProps,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContext, createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { hideOthers } from 'aria-hidden';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Dialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst DIALOG_NAME = 'Dialog';\n\ntype ScopedProps

= P & { __scopeDialog?: Scope };\nconst [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\n\ntype DialogContextValue = {\n triggerRef: React.RefObject;\n contentRef: React.RefObject;\n contentId: string;\n titleId: string;\n descriptionId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\n\ninterface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst Dialog: React.FC = (props: ScopedProps) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n {children}\n \n );\n};\n\nDialog.displayName = DIALOG_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DialogTrigger';\n\ntype DialogTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface DialogTriggerProps extends PrimitiveButtonProps {}\n\nconst DialogTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return (\n \n );\n }\n);\n\nDialogTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'DialogPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef;\ninterface DialogPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogPortal: React.FC = (props: ScopedProps) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return (\n \n {React.Children.map(children, (child) => (\n \n \n {child}\n \n \n ))}\n \n );\n};\n\nDialogPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst OVERLAY_NAME = 'DialogOverlay';\n\ntype DialogOverlayElement = DialogOverlayImplElement;\ninterface DialogOverlayProps extends DialogOverlayImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogOverlay = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? (\n \n \n \n ) : null;\n }\n);\n\nDialogOverlay.displayName = OVERLAY_NAME;\n\ntype DialogOverlayImplElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface DialogOverlayImplProps extends PrimitiveDivProps {}\n\nconst DialogOverlayImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n \n \n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DialogContent';\n\ntype DialogContentElement = DialogContentTypeElement;\ninterface DialogContentProps extends DialogContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return (\n \n {context.modal ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n\nDialogContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentTypeElement = DialogContentImplElement;\ninterface DialogContentTypeProps\n extends Omit {}\n\nconst DialogContentModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n {\n event.preventDefault();\n context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n // If the event is a right-click, we shouldn't close because\n // it is effectively as if we right-clicked the `Overlay`.\n if (isRightClick) event.preventDefault();\n })}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) =>\n event.preventDefault()\n )}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst DialogContentNonModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentImplElement = React.ElementRef;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef;\ntype FocusScopeProps = Radix.ComponentPropsWithoutRef;\ninterface DialogContentImplProps extends Omit {\n /**\n * When `true`, focus cannot escape the `Content` via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst DialogContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n\n // Make sure the whole tree has focus guards as our `Dialog` will be\n // the last element in the DOM (beacuse of the `Portal`)\n useFocusGuards();\n\n return (\n <>\n \n context.onOpenChange(false)}\n />\n \n {process.env.NODE_ENV !== 'production' && (\n <>\n \n \n \n )}\n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\nconst TITLE_NAME = 'DialogTitle';\n\ntype DialogTitleElement = React.ElementRef;\ntype PrimitiveHeading2Props = Radix.ComponentPropsWithoutRef;\ninterface DialogTitleProps extends PrimitiveHeading2Props {}\n\nconst DialogTitle = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return ;\n }\n);\n\nDialogTitle.displayName = TITLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\nconst DESCRIPTION_NAME = 'DialogDescription';\n\ntype DialogDescriptionElement = React.ElementRef;\ntype PrimitiveParagraphProps = Radix.ComponentPropsWithoutRef;\ninterface DialogDescriptionProps extends PrimitiveParagraphProps {}\n\nconst DialogDescription = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return ;\n }\n);\n\nDialogDescription.displayName = DESCRIPTION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'DialogClose';\n\ntype DialogCloseElement = React.ElementRef;\ninterface DialogCloseProps extends PrimitiveButtonProps {}\n\nconst DialogClose = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return (\n context.onOpenChange(false))}\n />\n );\n }\n);\n\nDialogClose.displayName = CLOSE_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst TITLE_WARNING_NAME = 'DialogTitleWarning';\n\nconst [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: 'dialog',\n});\n\ntype TitleWarningProps = { titleId?: string };\n\nconst TitleWarning: React.FC = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) throw new Error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n\n return null;\n};\n\nconst DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning';\n\ntype DescriptionWarningProps = {\n contentRef: React.RefObject;\n descriptionId?: string;\n};\n\nconst DescriptionWarning: React.FC = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute('aria-describedby');\n // if we have an id and the user hasn't set aria-describedby={undefined}\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n\n return null;\n};\n\nconst Root = Dialog;\nconst Trigger = DialogTrigger;\nconst Portal = DialogPortal;\nconst Overlay = DialogOverlay;\nconst Content = DialogContent;\nconst Title = DialogTitle;\nconst Description = DialogDescription;\nconst Close = DialogClose;\n\nexport {\n createDialogScope,\n //\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n //\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n //\n WarningProvider,\n};\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n};\n","import { LockOpen1Icon, EyeClosedIcon, EyeOpenIcon, CheckIcon, PinBottomIcon, CopyIcon as CopyIcon$1, Cross2Icon, MagnifyingGlassIcon, CrossCircledIcon, CheckCircledIcon, PaperPlaneIcon, ShuffleIcon, TextAlignLeftIcon, ChevronRightIcon, EnterIcon, ExternalLinkIcon, ReloadIcon } from '@radix-ui/react-icons';\nimport { c as useTWLocale, u as useCustomTheme, C as Container, I as Img, p as TextDivider, M as ModalHeader, S as Spacer, B as Button, s as spacing, h as fontSize, a as iconSize, T as Text, e as Spinner, b as StyledDiv, q as fadeInAnimation, t as Input, v as media, L as Line, w as InputContainer, x as InputButton, y as IconButton, z as StyledButton, W as WalletEntryButton, d as ModalDescription, g as Label, A as ScreenBottomContainer, D as StyledP, r as radius, E as shadow, F as noScrollBar, G as CustomThemeProvider, H as ModalTitle, J as StyledUl, i as isMobile, K as StyledLabel, N as Link, f as ModalConfigCtx, O as TOS, o as useSetIsWalletModalOpen, P as SetModalConfigCtx, n as useIsWalletModalOpen, Q as WalletSelector, R as WalletUIStatesProvider, U as ThirdwebLocaleContext, m as en } from './formElements-8021f017.browser.esm.js';\nimport { g as googleIconUri, a as appleIconUri, f as facebookIconUri, I as InputSelectionUI, e as emailIcon, u as useScreenContext, r as reservedScreens, T as ToolTip, m as modalCloseFadeOutDuration, w as wideModalMaxHeight, b as modalMaxWidthCompact, c as modalMaxWidthWide, d as compactModalMaxHeight, s as smartWalletIcon, o as onModalUnmount, h as useScreen, S as ScreenContext } from './Tooltip-ee6e156f.browser.esm.js';\nimport { useCreateWalletInstance, useSetConnectionStatus, useSetConnectedWallet, useConnectionStatus, useWalletContext, useWallet, useAddress, shortenAddress, useStorage, useSupportedChains, useSwitchChain, useChainId, useBalance, useChain, shortenString, useWallets, useDisconnect, useWalletConfig, useENS, useSDK, useLogin, useThirdwebAuthContext, useLogout, useNetworkMismatch, useUser, resolveMimeType, useSDKChainId, useContract, ThirdwebProviderCore, useConnect } from '@thirdweb-dev/react-core';\nimport React, { useEffect, useRef, useState, useCallback, useDeferredValue, useMemo, memo, useContext, Suspense, lazy } from 'react';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { useMutation, useQueryClient, useQuery } from '@tanstack/react-query';\nimport { keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport * as RXPopover from '@radix-ui/react-popover';\nimport copy from 'copy-to-clipboard';\nimport * as Tabs from '@radix-ui/react-tabs';\nimport Fuse from 'fuse.js';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { Localhost } from '@thirdweb-dev/chains';\nimport { EmbeddedWallet, LocalWallet, walletIds, MetaMaskWallet, SignerWallet, assertWindowEthereum, getInjectedMetamaskProvider, getInjectedCoinbaseProvider, OneKeyWallet, getInjectedOneKeyProvider } from '@thirdweb-dev/wallets';\nimport { F as FormFieldWithIconButton, Q as QRCode, s as safeChainIdToSlug, w as wait, b as WalletLogoSpinner, H as HeadlessConnectUI, d as defaultWallets, S as ScanScreen, C as ConnectingScreen, W as WCOpenURI, G as GetStartedScreen } from './safeChainSlug-12460a7c.browser.esm.js';\nimport { utils } from 'ethers';\nimport { NATIVE_TOKEN_ADDRESS } from '@thirdweb-dev/sdk';\nimport invariant from 'tiny-invariant';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\n\nconst wrappedEthIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzYyN0VFQSIvPjxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDR2OC44N2w3LjQ5NyAzLjM1eiIvPjxwYXRoIGQ9Ik0xNi40OTggNEw5IDE2LjIybDcuNDk4LTMuMzV6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDIxLjk2OHY2LjAyN0wyNCAxNy42MTZ6Ii8+PHBhdGggZD0iTTE2LjQ5OCAyNy45OTV2LTYuMDI4TDkgMTcuNjE2eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjIiIGQ9Ik0xNi40OTggMjAuNTczbDcuNDk3LTQuMzUzLTcuNDk3LTMuMzQ4eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjYwMiIgZD0iTTkgMTYuMjJsNy40OTggNC4zNTN2LTcuNzAxeiIvPjwvZz48L2c+PC9zdmc+\";\nconst tetherUsdIcon = \"data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzkuNDMgMjk1LjI3Ij48dGl0bGU+dGV0aGVyLXVzZHQtbG9nbzwvdGl0bGU+PHBhdGggZD0iTTYyLjE1LDEuNDVsLTYxLjg5LDEzMGEyLjUyLDIuNTIsMCwwLDAsLjU0LDIuOTRMMTY3Ljk1LDI5NC41NmEyLjU1LDIuNTUsMCwwLDAsMy41MywwTDMzOC42MywxMzQuNGEyLjUyLDIuNTIsMCwwLDAsLjU0LTIuOTRsLTYxLjg5LTEzMEEyLjUsMi41LDAsMCwwLDI3NSwwSDY0LjQ1YTIuNSwyLjUsMCwwLDAtMi4zLDEuNDVoMFoiIHN0eWxlPSJmaWxsOiM1MGFmOTU7ZmlsbC1ydWxlOmV2ZW5vZGQiLz48cGF0aCBkPSJNMTkxLjE5LDE0NC44djBjLTEuMi4wOS03LjQsMC40Ni0yMS4yMywwLjQ2LTExLDAtMTguODEtLjMzLTIxLjU1LTAuNDZ2MGMtNDIuNTEtMS44Ny03NC4yNC05LjI3LTc0LjI0LTE4LjEzczMxLjczLTE2LjI1LDc0LjI0LTE4LjE1djI4LjkxYzIuNzgsMC4yLDEwLjc0LjY3LDIxLjc0LDAuNjcsMTMuMiwwLDE5LjgxLS41NSwyMS0wLjY2di0yOC45YzQyLjQyLDEuODksNzQuMDgsOS4yOSw3NC4wOCwxOC4xM3MtMzEuNjUsMTYuMjQtNzQuMDgsMTguMTJoMFptMC0zOS4yNVY3OS42OGg1OS4yVjQwLjIzSDg5LjIxVjc5LjY4SDE0OC40djI1Ljg2Yy00OC4xMSwyLjIxLTg0LjI5LDExLjc0LTg0LjI5LDIzLjE2czM2LjE4LDIwLjk0LDg0LjI5LDIzLjE2djgyLjloNDIuNzhWMTUxLjgzYzQ4LTIuMjEsODQuMTItMTEuNzMsODQuMTItMjMuMTRzLTM2LjA5LTIwLjkzLTg0LjEyLTIzLjE1aDBabTAsMGgwWiIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==\";\nconst usdcIcon = \"data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9Ijg2OTc3Njg0LTEyZGItNDg1MC04ZjMwLTIzM2E3YzI2N2QxMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4KICA8cGF0aCBkPSJNMTAwMCAyMDAwYzU1NC4xNyAwIDEwMDAtNDQ1LjgzIDEwMDAtMTAwMFMxNTU0LjE3IDAgMTAwMCAwIDAgNDQ1LjgzIDAgMTAwMHM0NDUuODMgMTAwMCAxMDAwIDEwMDB6IiBmaWxsPSIjMjc3NWNhIi8+CiAgPHBhdGggZD0iTTEyNzUgMTE1OC4zM2MwLTE0NS44My04Ny41LTE5NS44My0yNjIuNS0yMTYuNjYtMTI1LTE2LjY3LTE1MC01MC0xNTAtMTA4LjM0czQxLjY3LTk1LjgzIDEyNS05NS44M2M3NSAwIDExNi42NyAyNSAxMzcuNSA4Ny41IDQuMTcgMTIuNSAxNi42NyAyMC44MyAyOS4xNyAyMC44M2g2Ni42NmMxNi42NyAwIDI5LjE3LTEyLjUgMjkuMTctMjkuMTZ2LTQuMTdjLTE2LjY3LTkxLjY3LTkxLjY3LTE2Mi41LTE4Ny41LTE3MC44M3YtMTAwYzAtMTYuNjctMTIuNS0yOS4xNy0zMy4zMy0zMy4zNGgtNjIuNWMtMTYuNjcgMC0yOS4xNyAxMi41LTMzLjM0IDMzLjM0djk1LjgzYy0xMjUgMTYuNjctMjA0LjE2IDEwMC0yMDQuMTYgMjA0LjE3IDAgMTM3LjUgODMuMzMgMTkxLjY2IDI1OC4zMyAyMTIuNSAxMTYuNjcgMjAuODMgMTU0LjE3IDQ1LjgzIDE1NC4xNyAxMTIuNXMtNTguMzQgMTEyLjUtMTM3LjUgMTEyLjVjLTEwOC4zNCAwLTE0NS44NC00NS44NC0xNTguMzQtMTA4LjM0LTQuMTYtMTYuNjYtMTYuNjYtMjUtMjkuMTYtMjVoLTcwLjg0Yy0xNi42NiAwLTI5LjE2IDEyLjUtMjkuMTYgMjkuMTd2NC4xN2MxNi42NiAxMDQuMTYgODMuMzMgMTc5LjE2IDIyMC44MyAyMDB2MTAwYzAgMTYuNjYgMTIuNSAyOS4xNiAzMy4zMyAzMy4zM2g2Mi41YzE2LjY3IDAgMjkuMTctMTIuNSAzMy4zNC0zMy4zM3YtMTAwYzEyNS0yMC44NCAyMDguMzMtMTA4LjM0IDIwOC4zMy0yMjAuODR6IiBmaWxsPSIjZmZmIi8+CiAgPHBhdGggZD0iTTc4Ny41IDE1OTUuODNjLTMyNS0xMTYuNjYtNDkxLjY3LTQ3OS4xNi0zNzAuODMtODAwIDYyLjUtMTc1IDIwMC0zMDguMzMgMzcwLjgzLTM3MC44MyAxNi42Ny04LjMzIDI1LTIwLjgzIDI1LTQxLjY3VjMyNWMwLTE2LjY3LTguMzMtMjkuMTctMjUtMzMuMzMtNC4xNyAwLTEyLjUgMC0xNi42NyA0LjE2LTM5NS44MyAxMjUtNjEyLjUgNTQ1Ljg0LTQ4Ny41IDk0MS42NyA3NSAyMzMuMzMgMjU0LjE3IDQxMi41IDQ4Ny41IDQ4Ny41IDE2LjY3IDguMzMgMzMuMzQgMCAzNy41LTE2LjY3IDQuMTctNC4xNiA0LjE3LTguMzMgNC4xNy0xNi42NnYtNTguMzRjMC0xMi41LTEyLjUtMjkuMTYtMjUtMzcuNXpNMTIyOS4xNyAyOTUuODNjLTE2LjY3LTguMzMtMzMuMzQgMC0zNy41IDE2LjY3LTQuMTcgNC4xNy00LjE3IDguMzMtNC4xNyAxNi42N3Y1OC4zM2MwIDE2LjY3IDEyLjUgMzMuMzMgMjUgNDEuNjcgMzI1IDExNi42NiA0OTEuNjcgNDc5LjE2IDM3MC44MyA4MDAtNjIuNSAxNzUtMjAwIDMwOC4zMy0zNzAuODMgMzcwLjgzLTE2LjY3IDguMzMtMjUgMjAuODMtMjUgNDEuNjdWMTcwMGMwIDE2LjY3IDguMzMgMjkuMTcgMjUgMzMuMzMgNC4xNyAwIDEyLjUgMCAxNi42Ny00LjE2IDM5NS44My0xMjUgNjEyLjUtNTQ1Ljg0IDQ4Ny41LTk0MS42Ny03NS0yMzcuNS0yNTguMzQtNDE2LjY3LTQ4Ny41LTQ5MS42N3oiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==\";\nconst wrappedBtcIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDkuMjYgMTA5LjI2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzVhNTU2NDt9LmNscy0ye2ZpbGw6I2YwOTI0Mjt9LmNscy0ze2ZpbGw6IzI4MjEzODt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndyYXBwZWQtYml0Y29pbi13YnRjPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxnIGlkPSJQYWdlLTEiPjxnIGlkPSJ3YnRjX2NvbG91ciIgZGF0YS1uYW1lPSJ3YnRjIGNvbG91ciI+PHBhdGggaWQ9IlNoYXBlIiBjbGFzcz0iY2xzLTEiIGQ9Ik04OS4wOSwyMi45M2wtMywzYTQyLjQ3LDQyLjQ3LDAsMCwxLDAsNTcuMzJsMywzYTQ2Ljc2LDQ2Ljc2LDAsMCwwLDAtNjMuMzlaIi8+PHBhdGggaWQ9IlNoYXBlLTIiIGRhdGEtbmFtZT0iU2hhcGUiIGNsYXNzPSJjbHMtMSIgZD0iTTI2LDIzLjE5YTQyLjQ3LDQyLjQ3LDAsMCwxLDU3LjMyLDBsMy0zYTQ2Ljc2LDQ2Ljc2LDAsMCwwLTYzLjM5LDBaIi8+PHBhdGggaWQ9IlNoYXBlLTMiIGRhdGEtbmFtZT0iU2hhcGUiIGNsYXNzPSJjbHMtMSIgZD0iTTIzLjE5LDgzLjI4YTQyLjQ3LDQyLjQ3LDAsMCwxLDAtNTcuMjlsLTMtM2E0Ni43Niw0Ni43NiwwLDAsMCwwLDYzLjM5WiIvPjxwYXRoIGlkPSJTaGFwZS00IiBkYXRhLW5hbWU9IlNoYXBlIiBjbGFzcz0iY2xzLTEiIGQ9Ik04My4yOCw4Ni4wNWE0Mi40Nyw0Mi40NywwLDAsMS01Ny4zMiwwbC0zLDNhNDYuNzYsNDYuNzYsMCwwLDAsNjMuMzksMFoiLz48cGF0aCBpZD0iU2hhcGUtNSIgZGF0YS1uYW1lPSJTaGFwZSIgY2xhc3M9ImNscy0yIiBkPSJNNzMuNTcsNDQuNjJjLS42LTYuMjYtNi04LjM2LTEyLjgzLTlWMjdINTUuNDZ2OC40NmMtMS4zOSwwLTIuODEsMC00LjIyLDBWMjdINDZ2OC42OEgzNS4yOXY1LjY1czMuOS0uMDcsMy44NCwwYTIuNzMsMi43MywwLDAsMSwzLDIuMzJWNjcuNDFhMS44NSwxLjg1LDAsMCwxLS42NCwxLjI5LDEuODMsMS44MywwLDAsMS0xLjM2LjQ2Yy4wNy4wNi0zLjg0LDAtMy44NCwwbC0xLDYuMzFINDUuOXY4LjgyaDUuMjhWNzUuNkg1NS40djguNjVoNS4yOVY3NS41M2M4LjkyLS41NCwxNS4xNC0yLjc0LDE1LjkyLTExLjA5LjYzLTYuNzItMi41My05LjcyLTcuNTgtMTAuOTNDNzIuMSw1Miw3NCw0OS4yLDczLjU3LDQ0LjYyWk02Ni4xNyw2My40YzAsNi41Ni0xMS4yNCw1LjgxLTE0LjgyLDUuODFWNTcuNTdDNTQuOTMsNTcuNTgsNjYuMTcsNTYuNTUsNjYuMTcsNjMuNFpNNjMuNzIsNDdjMCw2LTkuMzgsNS4yNy0xMi4zNiw1LjI3VjQxLjY5QzU0LjM0LDQxLjY5LDYzLjcyLDQwLjc1LDYzLjcyLDQ3WiIvPjxwYXRoIGlkPSJTaGFwZS02IiBkYXRhLW5hbWU9IlNoYXBlIiBjbGFzcz0iY2xzLTMiIGQ9Ik01NC42MiwxMDkuMjZhNTQuNjMsNTQuNjMsMCwxLDEsNTQuNjQtNTQuNjRBNTQuNjMsNTQuNjMsMCwwLDEsNTQuNjIsMTA5LjI2Wm0wLTEwNUE1MC4zNCw1MC4zNCwwLDEsMCwxMDUsNTQuNjIsNTAuMzQsNTAuMzQsMCwwLDAsNTQuNjIsNC4yNloiLz48L2c+PC9nPjwvZz48L2c+PC9zdmc+\";\nconst maticIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8Y2lyY2xlIGN4PSI1MTIiIGN5PSI1MTIiIHI9IjUxMiIgZmlsbD0iIzgyNDdFNSIvPgo8cGF0aCBkPSJNNjgxLjQ2OSA0MDIuNDU2QzY2OS4xODkgMzk1LjMxMiA2NTMuMjI0IDM5NS4zMTIgNjM5LjcxNiA0MDIuNDU2TDU0My45MjggNDU3LjIyOEw0NzguODQyIDQ5Mi45NDlMMzgzLjA1NSA1NDcuNzIxQzM3MC43NzQgNTU0Ljg2NSAzNTQuODEgNTU0Ljg2NSAzNDEuMzAxIDU0Ny43MjFMMjY1LjE2MiA1MDQuODU2QzI1Mi44ODIgNDk3LjcxMiAyNDQuMjg2IDQ4NC42MTQgMjQ0LjI4NiA0NzAuMzI1VjM4NS43ODZDMjQ0LjI4NiAzNzEuNDk4IDI1MS42NTQgMzU4LjQgMjY1LjE2MiAzNTEuMjU2TDM0MC4wNzMgMzA5LjU4MUMzNTIuMzUzIDMwMi40MzcgMzY4LjMxOCAzMDIuNDM3IDM4MS44MjcgMzA5LjU4MUw0NTYuNzM3IDM1MS4yNTZDNDY5LjAxOCAzNTguNCA0NzcuNjE0IDM3MS40OTggNDc3LjYxNCAzODUuNzg2VjQ0MC41NThMNTQyLjcgNDAzLjY0NlYzNDguODc0QzU0Mi43IDMzNC41ODYgNTM1LjMzMiAzMjEuNDg4IDUyMS44MjQgMzE0LjM0NEwzODMuMDU1IDIzNS43NThDMzcwLjc3NCAyMjguNjE0IDM1NC44MSAyMjguNjE0IDM0MS4zMDEgMjM1Ljc1OEwyMDAuMDc2IDMxNC4zNDRDMTg2LjU2NyAzMjEuNDg4IDE3OS4xOTkgMzM0LjU4NiAxNzkuMTk5IDM0OC44NzRWNTA3LjIzN0MxNzkuMTk5IDUyMS41MjUgMTg2LjU2NyA1MzQuNjIzIDIwMC4wNzYgNTQxLjc2N0wzNDEuMzAxIDYyMC4zNTNDMzUzLjU4MiA2MjcuNDk4IDM2OS41NDYgNjI3LjQ5OCAzODMuMDU1IDYyMC4zNTNMNDc4Ljg0MiA1NjYuNzcyTDU0My45MjggNTI5Ljg2TDYzOS43MTYgNDc2LjI3OUM2NTEuOTk2IDQ2OS4xMzUgNjY3Ljk2MSA0NjkuMTM1IDY4MS40NjkgNDc2LjI3OUw3NTYuMzggNTE3Ljk1M0M3NjguNjYgNTI1LjA5OCA3NzcuMjU3IDUzOC4xOTUgNzc3LjI1NyA1NTIuNDg0VjYzNy4wMjNDNzc3LjI1NyA2NTEuMzEyIDc2OS44ODggNjY0LjQwOSA3NTYuMzggNjcxLjU1M0w2ODEuNDY5IDcxNC40MTlDNjY5LjE4OSA3MjEuNTYzIDY1My4yMjQgNzIxLjU2MyA2MzkuNzE2IDcxNC40MTlMNTY0LjgwNSA2NzIuNzQ0QzU1Mi41MjUgNjY1LjYgNTQzLjkyOCA2NTIuNTAyIDU0My45MjggNjM4LjIxNFY1ODMuNDQyTDQ3OC44NDIgNjIwLjM1M1Y2NzUuMTI1QzQ3OC44NDIgNjg5LjQxNCA0ODYuMjEgNzAyLjUxMiA0OTkuNzE5IDcwOS42NTZMNjQwLjk0NCA3ODguMjQyQzY1My4yMjQgNzk1LjM4NiA2NjkuMTg5IDc5NS4zODYgNjgyLjY5NyA3ODguMjQyTDgyMy45MjIgNzA5LjY1NkM4MzYuMjAzIDcwMi41MTIgODQ0Ljc5OSA2ODkuNDE0IDg0NC43OTkgNjc1LjEyNVY1MTYuNzYzQzg0NC43OTkgNTAyLjQ3NCA4MzcuNDMxIDQ4OS4zNzcgODIzLjkyMiA0ODIuMjMyTDY4MS40NjkgNDAyLjQ1NloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\";\nconst binanceCoinIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PGcgZmlsbD0ibm9uZSI+PGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNGM0JBMkYiLz48cGF0aCBmaWxsPSIjRkZGIiBkPSJNMTIuMTE2IDE0LjQwNEwxNiAxMC41MmwzLjg4NiAzLjg4NiAyLjI2LTIuMjZMMTYgNmwtNi4xNDQgNi4xNDQgMi4yNiAyLjI2ek02IDE2bDIuMjYtMi4yNkwxMC41MiAxNmwtMi4yNiAyLjI2TDYgMTZ6bTYuMTE2IDEuNTk2TDE2IDIxLjQ4bDMuODg2LTMuODg2IDIuMjYgMi4yNTlMMTYgMjZsLTYuMTQ0LTYuMTQ0LS4wMDMtLjAwMyAyLjI2My0yLjI1N3pNMjEuNDggMTZsMi4yNi0yLjI2TDI2IDE2bC0yLjI2IDIuMjZMMjEuNDggMTZ6bS0zLjE4OC0uMDAyaC4wMDJ2LjAwMkwxNiAxOC4yOTRsLTIuMjkxLTIuMjktLjAwNC0uMDA0LjAwNC0uMDAzLjQwMS0uNDAyLjE5NS0uMTk1TDE2IDEzLjcwNmwyLjI5MyAyLjI5M3oiLz48L2c+PC9zdmc+\";\nconst BUSDIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzYuNDEgMzM3LjQyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2YwYjkwYjtzdHJva2U6I2YwYjkwYjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFzc2V0IDE8L3RpdGxlPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjIuNzFsNDEuNSw0Mi41TDEwNS4yLDE0Ny43MWwtNDEuNS00MS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMS4yLDYzLjcxbDQxLjUsNDIuNUwxMDUuMiwyNzMuNzFsLTQxLjUtNDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00Mi4yLDEyNi43MWw0MS41LDQyLjUtNDEuNSw0MS41TC43LDE2OS4yMVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yOTQuMiwxMjYuNzFsNDEuNSw0Mi41TDE2OC4yLDMzNi43MWwtNDEuNS00MS41WiIvPjwvZz48L2c+PC9zdmc+\";\nconst fantomIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkO30uY2xzLTJ7ZmlsbDojMTNiNWVjO30uY2xzLTN7bWFzazp1cmwoI21hc2spO308L3N0eWxlPjxtYXNrIGlkPSJtYXNrIiB4PSIxMCIgeT0iNiIgd2lkdGg9IjkzLjEiIGhlaWdodD0iMjAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxnIGlkPSJhIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMCw2aDkzLjFWMjZIMTBaIi8+PC9nPjwvbWFzaz48L2RlZnM+PHRpdGxlPmZhPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiLz48ZyBjbGFzcz0iY2xzLTMiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE3LjIsMTIuOWwzLjYtMi4xVjE1Wm0zLjYsOUwxNiwyNC43bC00LjgtMi44VjE3TDE2LDE5LjgsMjAuOCwxN1pNMTEuMiwxMC44bDMuNiwyLjFMMTEuMiwxNVptNS40LDMuMUwyMC4yLDE2bC0zLjYsMi4xWm0tMS4yLDQuMkwxMS44LDE2bDMuNi0yLjFabTQuOC04LjNMMTYsMTIuMiwxMS44LDkuOCwxNiw3LjNaTTEwLDkuNFYyMi41bDYsMy40LDYtMy40VjkuNEwxNiw2WiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==\";\n/**\n * Default tokens shown in `ConnectWallet`'s SendFunds screen for each network.\n *\n * You can use the default tokens as a starting point for your own list of tokens and override tokens for specific networks.\n *\n * @example\n * Below example shows adding a custom token for the Ethereum mainnet at start of the list of default tokens for the Ethereum mainnet. Here the `1` represents the chainId of Ethereum mainnet.\n *\n * ```tsx\n * const ethereumChainId = 1;\n *\n * \n * ```\n */\nconst defaultTokens = {\n \"1\": [{\n address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n name: \"Tether USD\",\n symbol: \"USDT\",\n icon: tetherUsdIcon\n }, {\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }, {\n address: \"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\n name: \"Wrapped Bitcoin\",\n symbol: \"WBTC\",\n icon: wrappedBtcIcon\n }, {\n address: \"0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0\",\n name: \"Polygon\",\n symbol: \"WMATIC\",\n icon: maticIcon\n }],\n \"5\": [{\n address: \"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0x07865c6E87B9F70255377e024ace6630C1Eaa37F\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }],\n \"10\": [{\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }],\n \"56\": [{\n address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n name: \"Wrapped Binance Chain Token\",\n symbol: \"WBNB\",\n icon: binanceCoinIcon\n }, {\n address: \"0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\",\n name: \"Binance USD\",\n symbol: \"BUSD\",\n icon: BUSDIcon\n }],\n \"97\": [{\n address: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n name: \"Wrapped Binance Chain Testnet Token\",\n symbol: \"WBNB\",\n icon: binanceCoinIcon\n }, {\n address: \"0xed24fc36d5ee211ea25a80239fb8c4cfd80f12ee\",\n name: \"Binance USD\",\n symbol: \"BUSD\",\n icon: BUSDIcon\n }],\n \"137\": [{\n address: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\",\n icon: maticIcon\n }, {\n address: \"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }, {\n address: \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\",\n name: \"Tether USD\",\n symbol: \"USDT\",\n icon: tetherUsdIcon\n }, {\n address: \"0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6\",\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n icon: wrappedBtcIcon\n }],\n \"250\": [{\n address: \"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\",\n icon: fantomIcon\n }, {\n name: \"Wrapped Ether\",\n address: \"0x74b23882a30290451A17c44f4F05243b6b58C76d\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n name: \"USD Coin\",\n address: \"0x04068DA6C83AFCFA0e13ba15A6696662335D5B75\",\n symbol: \"USDC\",\n icon: usdcIcon\n }, {\n name: \"Wrapped Bitcoin\",\n address: \"0x321162Cd933E2Be498Cd2267a90534A804051b11\",\n symbol: \"WBTC\",\n icon: wrappedBtcIcon\n }],\n \"420\": [{\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }],\n \"4002\": [{\n address: \"0xf1277d1Ed8AD466beddF92ef448A132661956621\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\",\n icon: fantomIcon\n }],\n \"42161\": [{\n address: \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }],\n \"43113\": [{\n address: \"0xd00ae08403B9bbb9124bB305C09058E32C39A48c\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwMyIgaGVpZ2h0PSIxNTA0IiB2aWV3Qm94PSIwIDAgMTUwMyAxNTA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyODciIHk9IjI1OCIgd2lkdGg9IjkyOCIgaGVpZ2h0PSI4NDQiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUwMi41IDc1MkMxNTAyLjUgMTE2Ni43NyAxMTY2LjI3IDE1MDMgNzUxLjUgMTUwM0MzMzYuNzM0IDE1MDMgMC41IDExNjYuNzcgMC41IDc1MkMwLjUgMzM3LjIzNCAzMzYuNzM0IDEgNzUxLjUgMUMxMTY2LjI3IDEgMTUwMi41IDMzNy4yMzQgMTUwMi41IDc1MlpNNTM4LjY4OCAxMDUwLjg2SDM5Mi45NEMzNjIuMzE0IDEwNTAuODYgMzQ3LjE4NiAxMDUwLjg2IDMzNy45NjIgMTA0NC45NkMzMjcuOTk5IDEwMzguNSAzMjEuOTExIDEwMjcuOCAzMjEuMTczIDEwMTUuOTlDMzIwLjYxOSAxMDA1LjExIDMyOC4xODQgOTkxLjgyMiAzNDMuMzEyIDk2NS4yNTVMNzAzLjE4MiAzMzAuOTM1QzcxOC40OTUgMzAzLjk5OSA3MjYuMjQzIDI5MC41MzEgNzM2LjAyMSAyODUuNTVDNzQ2LjUzNyAyODAuMiA3NTkuMDgzIDI4MC4yIDc2OS41OTkgMjg1LjU1Qzc3OS4zNzcgMjkwLjUzMSA3ODcuMTI2IDMwMy45OTkgODAyLjQzOCAzMzAuOTM1TDg3Ni40MiA0NjAuMDc5TDg3Ni43OTcgNDYwLjczOEM4OTMuMzM2IDQ4OS42MzUgOTAxLjcyMyA1MDQuMjg5IDkwNS4zODUgNTE5LjY2OUM5MDkuNDQzIDUzNi40NTggOTA5LjQ0MyA1NTQuMTY5IDkwNS4zODUgNTcwLjk1OEM5MDEuNjk1IDU4Ni40NTUgODkzLjM5MyA2MDEuMjE1IDg3Ni42MDQgNjMwLjU0OUw2ODcuNTczIDk2NC43MDJMNjg3LjA4NCA5NjUuNTU4QzY3MC40MzYgOTk0LjY5MyA2NjEuOTk5IDEwMDkuNDYgNjUwLjMwNiAxMDIwLjZDNjM3LjU3NiAxMDMyLjc4IDYyMi4yNjMgMTA0MS42MyA2MDUuNDc0IDEwNDYuNjJDNTkwLjE2MSAxMDUwLjg2IDU3My4wMDQgMTA1MC44NiA1MzguNjg4IDEwNTAuODZaTTkwNi43NSAxMDUwLjg2SDExMTUuNTlDMTE0Ni40IDEwNTAuODYgMTE2MS45IDEwNTAuODYgMTE3MS4xMyAxMDQ0Ljc4QzExODEuMDkgMTAzOC4zMiAxMTg3LjM2IDEwMjcuNDMgMTE4Ny45MiAxMDE1LjYzQzExODguNDUgMTAwNS4xIDExODEuMDUgOTkyLjMzIDExNjYuNTUgOTY3LjMwN0MxMTY2LjA1IDk2Ni40NTUgMTE2NS41NSA5NjUuNTg4IDExNjUuMDQgOTY0LjcwNkwxMDYwLjQzIDc4NS43NUwxMDU5LjI0IDc4My43MzVDMTA0NC41NCA3NTguODc3IDEwMzcuMTIgNzQ2LjMyNCAxMDI3LjU5IDc0MS40NzJDMTAxNy4wOCA3MzYuMTIxIDEwMDQuNzEgNzM2LjEyMSA5OTQuMTk5IDc0MS40NzJDOTg0LjYwNSA3NDYuNDUzIDk3Ni44NTcgNzU5LjU1MiA5NjEuNTQ0IDc4NS45MzRMODU3LjMwNiA5NjQuODkxTDg1Ni45NDkgOTY1LjUwN0M4NDEuNjkgOTkxLjg0NyA4MzQuMDY0IDEwMDUuMDEgODM0LjYxNCAxMDE1LjgxQzgzNS4zNTIgMTAyNy42MiA4NDEuNDQgMTAzOC41IDg1MS40MDIgMTA0NC45NkM4NjAuNDQzIDEwNTAuODYgODc1Ljk0IDEwNTAuODYgOTA2Ljc1IDEwNTAuODZaIiBmaWxsPSIjRTg0MTQyIi8+Cjwvc3ZnPgo=\"\n }, {\n address: \"0x5425890298aed601595a70AB815c96711a31Bc65\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }],\n \"43114\": [{\n address: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwMyIgaGVpZ2h0PSIxNTA0IiB2aWV3Qm94PSIwIDAgMTUwMyAxNTA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyODciIHk9IjI1OCIgd2lkdGg9IjkyOCIgaGVpZ2h0PSI4NDQiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUwMi41IDc1MkMxNTAyLjUgMTE2Ni43NyAxMTY2LjI3IDE1MDMgNzUxLjUgMTUwM0MzMzYuNzM0IDE1MDMgMC41IDExNjYuNzcgMC41IDc1MkMwLjUgMzM3LjIzNCAzMzYuNzM0IDEgNzUxLjUgMUMxMTY2LjI3IDEgMTUwMi41IDMzNy4yMzQgMTUwMi41IDc1MlpNNTM4LjY4OCAxMDUwLjg2SDM5Mi45NEMzNjIuMzE0IDEwNTAuODYgMzQ3LjE4NiAxMDUwLjg2IDMzNy45NjIgMTA0NC45NkMzMjcuOTk5IDEwMzguNSAzMjEuOTExIDEwMjcuOCAzMjEuMTczIDEwMTUuOTlDMzIwLjYxOSAxMDA1LjExIDMyOC4xODQgOTkxLjgyMiAzNDMuMzEyIDk2NS4yNTVMNzAzLjE4MiAzMzAuOTM1QzcxOC40OTUgMzAzLjk5OSA3MjYuMjQzIDI5MC41MzEgNzM2LjAyMSAyODUuNTVDNzQ2LjUzNyAyODAuMiA3NTkuMDgzIDI4MC4yIDc2OS41OTkgMjg1LjU1Qzc3OS4zNzcgMjkwLjUzMSA3ODcuMTI2IDMwMy45OTkgODAyLjQzOCAzMzAuOTM1TDg3Ni40MiA0NjAuMDc5TDg3Ni43OTcgNDYwLjczOEM4OTMuMzM2IDQ4OS42MzUgOTAxLjcyMyA1MDQuMjg5IDkwNS4zODUgNTE5LjY2OUM5MDkuNDQzIDUzNi40NTggOTA5LjQ0MyA1NTQuMTY5IDkwNS4zODUgNTcwLjk1OEM5MDEuNjk1IDU4Ni40NTUgODkzLjM5MyA2MDEuMjE1IDg3Ni42MDQgNjMwLjU0OUw2ODcuNTczIDk2NC43MDJMNjg3LjA4NCA5NjUuNTU4QzY3MC40MzYgOTk0LjY5MyA2NjEuOTk5IDEwMDkuNDYgNjUwLjMwNiAxMDIwLjZDNjM3LjU3NiAxMDMyLjc4IDYyMi4yNjMgMTA0MS42MyA2MDUuNDc0IDEwNDYuNjJDNTkwLjE2MSAxMDUwLjg2IDU3My4wMDQgMTA1MC44NiA1MzguNjg4IDEwNTAuODZaTTkwNi43NSAxMDUwLjg2SDExMTUuNTlDMTE0Ni40IDEwNTAuODYgMTE2MS45IDEwNTAuODYgMTE3MS4xMyAxMDQ0Ljc4QzExODEuMDkgMTAzOC4zMiAxMTg3LjM2IDEwMjcuNDMgMTE4Ny45MiAxMDE1LjYzQzExODguNDUgMTAwNS4xIDExODEuMDUgOTkyLjMzIDExNjYuNTUgOTY3LjMwN0MxMTY2LjA1IDk2Ni40NTUgMTE2NS41NSA5NjUuNTg4IDExNjUuMDQgOTY0LjcwNkwxMDYwLjQzIDc4NS43NUwxMDU5LjI0IDc4My43MzVDMTA0NC41NCA3NTguODc3IDEwMzcuMTIgNzQ2LjMyNCAxMDI3LjU5IDc0MS40NzJDMTAxNy4wOCA3MzYuMTIxIDEwMDQuNzEgNzM2LjEyMSA5OTQuMTk5IDc0MS40NzJDOTg0LjYwNSA3NDYuNDUzIDk3Ni44NTcgNzU5LjU1MiA5NjEuNTQ0IDc4NS45MzRMODU3LjMwNiA5NjQuODkxTDg1Ni45NDkgOTY1LjUwN0M4NDEuNjkgOTkxLjg0NyA4MzQuMDY0IDEwMDUuMDEgODM0LjYxNCAxMDE1LjgxQzgzNS4zNTIgMTAyNy42MiA4NDEuNDQgMTAzOC41IDg1MS40MDIgMTA0NC45NkM4NjAuNDQzIDEwNTAuODYgODc1Ljk0IDEwNTAuODYgOTA2Ljc1IDEwNTAuODZaIiBmaWxsPSIjRTg0MTQyIi8+Cjwvc3ZnPgo=\"\n }, {\n address: \"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0xc7198437980c041c805A1EDcbA50c1Ce5db95118\",\n name: \"Tether USD\",\n symbol: \"USDT\",\n icon: tetherUsdIcon\n }, {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }, {\n address: \"0x50b7545627a5162F82A992c33b87aDc75187B218\",\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n icon: wrappedBtcIcon\n }],\n \"80001\": [{\n address: \"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\",\n icon: maticIcon\n }, {\n name: \"Wrapped Ether\",\n address: \"0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0x0FA8781a83E46826621b3BC094Ea2A0212e71B23\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }, {\n name: \"Tether USD\",\n address: \"0x3813e82e6f7098b9583FC0F33a962D02018B6803\",\n symbol: \"USDT\",\n icon: tetherUsdIcon\n }],\n \"421613\": [{\n address: \"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\",\n icon: wrappedEthIcon\n }, {\n address: \"0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63\",\n name: \"USD Coin\",\n symbol: \"USDC\",\n icon: usdcIcon\n }]\n};\n\nfunction getBodyTitle(authOption) {\n switch (authOption) {\n case \"google\":\n return \"Sign In - Google Accounts\";\n default:\n return `Sign In - ${authOption.slice(0, 1).toUpperCase()}${authOption.slice(1)}`;\n }\n}\nfunction getWidthAndHeight(authOption) {\n switch (authOption) {\n case \"facebook\":\n return {\n width: 715,\n height: 555\n };\n default:\n return {\n width: 350,\n height: 500\n };\n }\n}\nfunction openOauthSignInWindow(authOption, themeObj) {\n // open the popup in the center of the screen\n const {\n height,\n width\n } = getWidthAndHeight(authOption);\n const top = (window.innerHeight - height) / 2;\n const left = (window.innerWidth - width) / 2;\n const win = window.open(\"\", undefined, `width=${width}, height=${height}, top=${top}, left=${left}`);\n if (win) {\n const title = getBodyTitle(authOption);\n win.document.title = title;\n win.document.body.innerHTML = spinnerWindowHtml;\n win.document.body.style.background = themeObj.colors.modalBg;\n win.document.body.style.color = themeObj.colors.accentText;\n }\n\n // close it when current window is closed or refreshed\n if (win) {\n window.addEventListener(\"beforeunload\", () => {\n win?.close();\n });\n }\n return win;\n}\nconst spinnerWindowHtml = `\n\n \n\n\n\n`;\n\nconst socialIcons = {\n google: googleIconUri,\n apple: appleIconUri,\n facebook: facebookIconUri\n};\n\nconst EmbeddedWalletFormUI = props => {\n const twLocale = useTWLocale();\n const locale = twLocale.wallets.embeddedWallet;\n const createWalletInstance = useCreateWalletInstance();\n const setConnectionStatus = useSetConnectionStatus();\n const setConnectedWallet = useSetConnectedWallet();\n const themeObj = useCustomTheme();\n const loginMethodsLabel = {\n google: locale.signInWithGoogle,\n facebook: locale.signInWithFacebook,\n apple: locale.signInWithApple\n };\n const enableEmailLogin = props.authOptions.includes(\"email\");\n const socialLogins = props.authOptions.filter(x => x !== \"email\");\n const hasSocialLogins = socialLogins.length > 0;\n\n // Need to trigger login on button click to avoid popup from being blocked\n const socialLogin = async strategy => {\n try {\n const embeddedWallet = createWalletInstance(props.walletConfig);\n setConnectionStatus(\"connecting\");\n const socialLoginWindow = openOauthSignInWindow(strategy, themeObj);\n if (!socialLoginWindow) {\n throw new Error(\"Failed to open login window\");\n }\n const authResult = await embeddedWallet.authenticate({\n strategy: strategy,\n openedWindow: socialLoginWindow,\n closeOpenedWindow: openedWindow => {\n openedWindow.close();\n }\n });\n await embeddedWallet.connect({\n authResult\n });\n setConnectedWallet(embeddedWallet);\n } catch (e) {\n setConnectionStatus(\"disconnected\");\n console.error(e);\n }\n };\n const showOnlyIcons = socialLogins.length > 1;\n return /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"lg\",\n children: [hasSocialLogins && /*#__PURE__*/jsx(Container, {\n flex: showOnlyIcons ? \"row\" : \"column\",\n center: \"x\",\n gap: \"sm\",\n style: {\n justifyContent: \"space-between\"\n },\n children: socialLogins.map(loginMethod => {\n const imgIconSize = showOnlyIcons ? iconSize.lg : iconSize.md;\n return /*#__PURE__*/jsxs(SocialButton, {\n \"aria-label\": `Login with ${loginMethod}`,\n \"data-variant\": showOnlyIcons ? \"icon\" : \"full\",\n variant: showOnlyIcons ? \"outline\" : \"secondary\",\n fullWidth: !showOnlyIcons,\n onClick: () => {\n socialLogin(loginMethod);\n props.onSelect(loginMethod);\n },\n children: [/*#__PURE__*/jsx(Img, {\n src: socialIcons[loginMethod],\n width: imgIconSize,\n height: imgIconSize\n }), !showOnlyIcons && loginMethodsLabel[loginMethod]]\n }, loginMethod);\n })\n }), props.modalSize === \"wide\" && hasSocialLogins && enableEmailLogin && /*#__PURE__*/jsx(TextDivider, {\n text: twLocale.connectWallet.or\n }), enableEmailLogin && /*#__PURE__*/jsx(InputSelectionUI, {\n onSelect: email => props.onSelect({\n email\n }),\n placeholder: locale.emailPlaceholder,\n name: \"email\",\n type: \"email\",\n errorMessage: _input => {\n const input = _input.replace(/\\+/g, \"\");\n const emailRegex = /^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,})$/g;\n const isValidEmail = emailRegex.test(input);\n if (!isValidEmail) {\n return locale.invalidEmail;\n }\n },\n emptyErrorMessage: locale.emailRequired,\n submitButtonText: locale.submitEmail\n })]\n });\n};\nconst EmbeddedWalletFormUIScreen = props => {\n const locale = useTWLocale().wallets.embeddedWallet.emailLoginScreen;\n const isCompact = props.modalSize === \"compact\";\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n p: \"lg\",\n animate: \"fadein\",\n style: {\n minHeight: \"250px\"\n },\n children: [/*#__PURE__*/jsx(ModalHeader, {\n onBack: props.onBack,\n title: locale.title\n }), isCompact ? /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }) : null, /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"y\",\n p: isCompact ? undefined : \"lg\",\n children: /*#__PURE__*/jsx(EmbeddedWalletFormUI, {\n modalSize: props.modalSize,\n authOptions: props.authOptions,\n walletConfig: props.walletConfig,\n onSelect: props.onSelect\n })\n })]\n });\n};\nconst SocialButton = /* @__PURE__ */styled(Button)({\n \"&[data-variant='full']\": {\n display: \"flex\",\n justifyContent: \"center\",\n gap: spacing.md,\n fontSize: fontSize.md,\n transition: \"background-color 0.2s ease\",\n \"&:active\": {\n boxShadow: \"none\"\n }\n },\n \"&[data-variant='icon']\": {\n padding: spacing.sm,\n flexGrow: 1\n }\n});\n\nconst EmbeddedWalletSocialLogin = props => {\n const locale = useTWLocale().wallets.embeddedWallet.socialLoginScreen;\n const {\n goBack,\n modalSize\n } = props;\n const createWalletInstance = useCreateWalletInstance();\n const setConnectionStatus = useSetConnectionStatus();\n const setConnectedWallet = useSetConnectedWallet();\n const connectionStatus = useConnectionStatus();\n const themeObj = useCustomTheme();\n const socialLogin = async () => {\n try {\n const embeddedWallet = createWalletInstance(props.walletConfig);\n setConnectionStatus(\"connecting\");\n const socialWindow = openOauthSignInWindow(props.strategy, themeObj);\n if (!socialWindow) {\n throw new Error(`Failed to open ${props.strategy} login window`);\n }\n const authResult = await embeddedWallet.authenticate({\n strategy: props.strategy,\n openedWindow: socialWindow,\n closeOpenedWindow: openedWindow => {\n openedWindow.close();\n }\n });\n await embeddedWallet.connect({\n authResult\n });\n setConnectedWallet(embeddedWallet);\n props.connected();\n } catch (e) {\n setConnectionStatus(\"disconnected\");\n console.error(`Error sign in with ${props.strategy}`, e);\n }\n };\n const closeModal = props.connected;\n useEffect(() => {\n if (connectionStatus === \"connected\") {\n closeModal();\n }\n }, [connectionStatus, closeModal]);\n return /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n flex: \"column\",\n fullHeight: true,\n children: /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n expand: true,\n p: \"lg\",\n style: {\n paddingBottom: 0\n },\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: goBack\n }), modalSize === \"compact\" ? /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }) : null, /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n center: \"both\",\n expand: true,\n style: {\n textAlign: \"center\",\n minHeight: \"250px\"\n },\n children: [connectionStatus === \"connecting\" && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n center: true,\n multiline: true,\n style: {\n maxWidth: \"250px\"\n },\n children: locale.instruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n center: \"x\",\n flex: \"row\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n })]\n }), connectionStatus === \"disconnected\" && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Text, {\n color: \"danger\",\n children: locale.failed\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n onClick: socialLogin,\n children: locale.retry\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n })]\n })]\n })]\n })\n });\n};\n\nconst FadeIn = /* @__PURE__ */StyledDiv({\n animation: `${fadeInAnimation} 0.15s ease-in`\n});\n\nfunction OTPInput(props) {\n const otp = props.value.split(\"\");\n const setOTP = newOTP => {\n props.setValue(newOTP.join(\"\"));\n };\n const inputToFocusIndex = otp.length;\n const boxEls = useRef([]);\n useEffect(() => {\n if (boxEls.current[inputToFocusIndex]) {\n requestAnimationFrame(() => {\n boxEls.current[inputToFocusIndex]?.focus();\n });\n }\n }, [inputToFocusIndex]);\n return /*#__PURE__*/jsx(Container, {\n center: \"x\",\n gap: \"sm\",\n flex: \"row\",\n children: new Array(props.digits).fill(null).map((_, i) => {\n return /*#__PURE__*/jsx(OTPInputBox, {\n \"data-error\": props.isInvalid,\n ref: e => boxEls.current[i] = e,\n value: otp[i] ?? \"\",\n type: \"text\",\n pattern: \"[a-zA-Z0-9]*\",\n variant: \"outline\",\n inputMode: \"text\",\n onPaste: e => {\n const pastedData = e.clipboardData.getData(\"text/plain\");\n const newOTP = pastedData.slice(0, props.digits).split(\"\");\n setOTP(newOTP);\n e.preventDefault();\n },\n onKeyDown: e => {\n if (e.key === \"Enter\") {\n if (props.onEnter) {\n props.onEnter();\n return;\n }\n }\n if (e.key === \"ArrowLeft\") {\n if (i === 0) {\n return;\n }\n boxEls.current[i - 1]?.focus();\n return;\n }\n if (e.key === \"ArrowRight\") {\n if (i === props.digits - 1) {\n return;\n }\n boxEls.current[i + 1]?.focus();\n return;\n }\n if (e.key === \"e\" || e.key === \".\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Backspace\") {\n if (i === 0) {\n return;\n }\n const newOTP = otp.slice(0, -1);\n setOTP(newOTP);\n }\n },\n onChange: e => {\n let value = e.target.value;\n if (value.length > 1) {\n const lastValue = value[value.length - 1];\n if (lastValue) {\n value = lastValue;\n }\n }\n if (!/\\d/.test(value) && value !== \"\") {\n e.preventDefault();\n return;\n }\n const newOTP = [...otp];\n const index = i > inputToFocusIndex - 1 ? inputToFocusIndex : i;\n newOTP[index] = value;\n setOTP(newOTP);\n }\n }, i);\n })\n });\n}\nconst OTPInputBox = /* @__PURE__ */styled(Input)(() => {\n const theme = useCustomTheme();\n return {\n appearance: \"none\",\n WebkitAppearance: \"none\",\n width: \"40px\",\n height: \"40px\",\n textAlign: \"center\",\n fontSize: fontSize.md,\n padding: spacing.xs,\n [media.mobile]: {\n width: \"35px\",\n height: \"35px\"\n },\n \"&[data-verify-status='invalid']\": {\n color: theme.colors.danger,\n borderColor: theme.colors.danger\n }\n };\n});\n\nfunction CreatePassword(props) {\n const locale = useTWLocale().wallets.embeddedWallet.createPassword;\n const [loading, setLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [password, setPassword] = useState(\"\");\n const [error, setError] = useState(false);\n const [saved, setSaved] = useState(false);\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: props.goBack\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n expand: true,\n px: props.modalSize === \"wide\" ? \"xxl\" : \"lg\",\n flex: \"column\",\n center: \"y\",\n style: {\n paddingTop: 0\n },\n children: [props.modalSize === \"compact\" && /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n }), /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n color: \"accentText\",\n children: /*#__PURE__*/jsx(BounceContainer, {\n children: /*#__PURE__*/jsx(LockOpen1Icon, {\n width: iconSize.xxl,\n height: iconSize.xxl\n })\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(\"form\", {\n onSubmit: async e => {\n e.preventDefault();\n setLoading(false);\n setError(false);\n if (password) {\n try {\n setLoading(true);\n await props.onPassword(password);\n } catch (err) {\n setError(true);\n console.error(err);\n }\n setLoading(false);\n }\n },\n children: [/*#__PURE__*/jsx(Text, {\n center: true,\n multiline: true,\n children: locale.instruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), /*#__PURE__*/jsx(Text, {\n center: true,\n color: \"primaryText\",\n children: locale.saveInstruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(InputContainer, {\n children: [/*#__PURE__*/jsx(Input, {\n variant: \"transparent\",\n required: true,\n name: \"new-password\",\n autoComplete: \"new-password\",\n id: \"new-password\",\n onChange: e => setPassword(e.target.value),\n value: password,\n type: showPassword ? \"text\" : \"password\",\n placeholder: locale.inputPlaceholder\n }), /*#__PURE__*/jsx(InputButton, {\n type: \"button\",\n onClick: () => setShowPassword(!showPassword),\n children: showPassword ? /*#__PURE__*/jsx(EyeClosedIcon, {}) : /*#__PURE__*/jsx(EyeOpenIcon, {})\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"sm\",\n center: \"y\",\n children: [/*#__PURE__*/jsx(CheckboxButton, {\n \"aria-checked\": saved,\n type: \"button\",\n id: \"save-checkbox\",\n onClick: () => {\n setSaved(!saved);\n },\n children: /*#__PURE__*/jsx(CheckIcon, {\n width: 20,\n height: 20,\n style: {\n opacity: saved ? 1 : 0,\n transform: saved ? \"scale(1)\" : \"scale(0)\",\n transition: \"opacity 200ms ease, transform 200ms ease\"\n }\n })\n }), /*#__PURE__*/jsx(\"label\", {\n htmlFor: \"save-checkbox\",\n style: {\n cursor: \"pointer\",\n userSelect: \"none\"\n },\n children: /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"primaryText\",\n children: locale.confirmation\n })\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Button, {\n disabled: loading || !saved,\n variant: \"accent\",\n fullWidth: true,\n style: {\n minWidth: \"100px\"\n },\n type: \"submit\",\n children: loading ? /*#__PURE__*/jsx(Spinner, {\n size: \"md\",\n color: \"accentButtonText\"\n }) : locale.submitButton\n }), error && /*#__PURE__*/jsxs(Container, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"danger\",\n center: true,\n children: locale.failedToSetPassword\n })]\n })]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n })]\n });\n}\nconst CheckboxButton = /* @__PURE__ */styled(IconButton)(() => {\n const theme = useCustomTheme();\n return {\n border: `2px solid ${theme.colors.accentText}`,\n color: `${theme.colors.accentText} !important`,\n padding: 0,\n \"&[aria-checked='true']\": {\n background: theme.colors.accentText,\n color: `${theme.colors.modalBg} !important`\n }\n };\n});\nconst bounceAnimation = keyframes`\nfrom {\n transform: translateY(-3px);\n}\nto {\n transform: translateY(3px);\n}\n`;\nconst BounceContainer = /* @__PURE__ */StyledDiv({\n animation: `${bounceAnimation} 1s ease-in-out infinite alternate`\n});\n\nfunction EnterPasswordOrRecovery(props) {\n const locale = useTWLocale().wallets.embeddedWallet.enterPassword;\n const [loading, setLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [password, setPassword] = useState(\"\");\n const [error, setError] = useState(false);\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: props.goBack\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"y\",\n p: props.modalSize === \"wide\" ? \"xxl\" : \"lg\",\n style: {\n paddingTop: 0\n },\n children: /*#__PURE__*/jsxs(\"form\", {\n onSubmit: async event => {\n event.preventDefault();\n setLoading(true);\n setError(false);\n try {\n await props.onVerify(password);\n } catch (e) {\n setError(true);\n console.error(e);\n }\n setLoading(false);\n },\n children: [/*#__PURE__*/jsx(Text, {\n center: true,\n children: locale.instruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Text, {\n center: true,\n color: \"primaryText\",\n children: props.email\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(InputContainer, {\n \"data-error\": !!error,\n children: [/*#__PURE__*/jsx(Input, {\n variant: \"transparent\",\n required: true,\n name: \"new-password\",\n autoComplete: \"new-password\",\n id: \"new-password\",\n onChange: e => {\n setPassword(e.target.value);\n setError(false);\n },\n value: password,\n type: showPassword ? \"text\" : \"password\",\n placeholder: locale.inputPlaceholder\n }), /*#__PURE__*/jsx(InputButton, {\n type: \"button\",\n onClick: () => setShowPassword(!showPassword),\n children: showPassword ? /*#__PURE__*/jsx(EyeClosedIcon, {}) : /*#__PURE__*/jsx(EyeOpenIcon, {})\n })]\n }), error && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: locale.wrongPassword\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Button, {\n fullWidth: true,\n variant: \"accent\",\n type: \"submit\",\n disabled: loading,\n children: loading ? /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"md\",\n color: \"accentButtonText\"\n })\n }) : /*#__PURE__*/jsx(Fragment, {\n children: locale.submitButton\n })\n })]\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n })]\n });\n}\n\nconst EmbeddedWalletOTPLoginUI = props => {\n const email = props.selectionData;\n const isWideModal = props.modalSize === \"wide\";\n const locale = useTWLocale().wallets.embeddedWallet;\n const [otpInput, setOtpInput] = useState(\"\");\n const {\n createWalletInstance,\n setConnectedWallet,\n setConnectionStatus\n } = useWalletContext();\n const [wallet, setWallet] = useState(null);\n const [verifyStatus, setVerifyStatus] = useState(\"idle\");\n const [emailStatus, setEmailStatus] = useState(\"sending\");\n const [screen, setScreen] = useState(\"base\"); // TODO change\n\n const sendEmail = useCallback(async () => {\n setOtpInput(\"\");\n setVerifyStatus(\"idle\");\n setEmailStatus(\"sending\");\n try {\n const _wallet = createWalletInstance(props.walletConfig);\n setWallet(_wallet);\n const status = await _wallet.sendVerificationEmail({\n email\n });\n setEmailStatus(status);\n } catch (e) {\n console.error(e);\n setVerifyStatus(\"idle\");\n setEmailStatus(\"error\");\n }\n }, [createWalletInstance, email, props.walletConfig]);\n const verify = async otp => {\n if (typeof emailStatus !== \"object\" || otp.length !== 6) {\n return;\n }\n setVerifyStatus(\"idle\");\n if (typeof emailStatus !== \"object\") {\n return;\n }\n if (!wallet) {\n return;\n }\n try {\n setVerifyStatus(\"verifying\");\n setConnectionStatus(\"connecting\");\n const needsRecoveryCode = emailStatus.recoveryShareManagement === \"USER_MANAGED\" && (emailStatus.isNewUser || emailStatus.isNewDevice);\n\n // USER_MANAGED\n if (needsRecoveryCode) {\n if (emailStatus.isNewUser) {\n try {\n // verifies otp for UI feedback\n // TODO (ews) tweak the UI flow to avoid verifying otp twice - needs new endpoint or new UI\n await wallet.authenticate({\n strategy: \"email_verification\",\n email,\n verificationCode: otp\n });\n } catch (e) {\n if (e instanceof Error && e.message.includes(\"encryption key\")) {\n setScreen(\"create-password\");\n } else {\n throw e;\n }\n }\n } else {\n try {\n // verifies otp for UI feedback\n await wallet.authenticate({\n strategy: \"email_verification\",\n email,\n verificationCode: otp\n });\n } catch (e) {\n if (e instanceof Error && e.message.includes(\"encryption key\")) {\n setScreen(\"enter-password-or-recovery-code\");\n } else {\n throw e;\n }\n }\n }\n }\n\n // AWS_MANAGED\n else {\n const authResult = await wallet.authenticate({\n strategy: \"email_verification\",\n email,\n verificationCode: otp\n });\n if (!authResult) {\n throw new Error(\"Failed to verify OTP\");\n }\n await wallet.connect({\n authResult\n });\n setConnectedWallet(wallet);\n props.connected();\n }\n setVerifyStatus(\"valid\");\n } catch (e) {\n setVerifyStatus(\"invalid\");\n console.error(e);\n }\n };\n\n // send email on mount\n const emailSentOnMount = useRef(false);\n useEffect(() => {\n if (!emailSentOnMount.current) {\n emailSentOnMount.current = true;\n sendEmail();\n }\n }, [sendEmail]);\n if (screen === \"create-password\") {\n return /*#__PURE__*/jsx(CreatePassword, {\n modalSize: props.modalSize,\n email: email,\n goBack: props.goBack,\n onPassword: async password => {\n if (!wallet || typeof emailStatus !== \"object\") {\n return;\n }\n const authResult = await wallet.authenticate({\n strategy: \"email_verification\",\n email,\n verificationCode: otpInput,\n recoveryCode: password\n });\n if (!authResult) {\n throw new Error(\"Failed to verify recovery code\");\n }\n await wallet.connect({\n authResult\n });\n setConnectedWallet(wallet);\n props.connected();\n }\n });\n }\n if (screen === \"enter-password-or-recovery-code\") {\n return /*#__PURE__*/jsx(EnterPasswordOrRecovery, {\n modalSize: props.modalSize,\n goBack: props.goBack,\n email: email,\n onVerify: async passwordOrRecoveryCode => {\n if (!wallet || typeof emailStatus !== \"object\") {\n return;\n }\n const authResult = await wallet.authenticate({\n strategy: \"email_verification\",\n email,\n verificationCode: otpInput,\n recoveryCode: passwordOrRecoveryCode\n });\n if (!authResult) {\n throw new Error(\"Failed to verify recovery code\");\n }\n await wallet.connect({\n authResult\n });\n setConnectedWallet(wallet);\n props.connected();\n }\n });\n }\n if (screen === \"base\") {\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: locale.signIn,\n onBack: props.goBack\n })\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"y\",\n children: /*#__PURE__*/jsxs(\"form\", {\n onSubmit: e => {\n e.preventDefault();\n },\n children: [/*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n center: \"x\",\n px: \"lg\",\n children: [!isWideModal && /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Text, {\n children: locale.emailLoginScreen.enterCodeSendTo\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n children: email\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n })]\n }), /*#__PURE__*/jsx(OTPInput, {\n isInvalid: verifyStatus === \"invalid\",\n digits: 6,\n value: otpInput,\n setValue: value => {\n setOtpInput(value);\n setVerifyStatus(\"idle\"); // reset error\n verify(value);\n },\n onEnter: () => {\n verify(otpInput);\n }\n }), verifyStatus === \"invalid\" && /*#__PURE__*/jsxs(FadeIn, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"danger\",\n center: true,\n children: locale.emailLoginScreen.invalidCode\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n px: isWideModal ? \"xxl\" : \"lg\",\n children: verifyStatus === \"verifying\" ? /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n })\n }) : /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(Button, {\n onClick: () => verify(otpInput),\n variant: \"accent\",\n type: \"submit\",\n style: {\n width: \"100%\"\n },\n children: locale.emailLoginScreen.verify\n })\n }, \"btn-container\")\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), !isWideModal && /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n p: isWideModal ? undefined : \"lg\",\n children: [emailStatus === \"error\" && /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n center: true,\n color: \"danger\",\n children: locale.emailLoginScreen.failedToSendCode\n })\n }), emailStatus === \"sending\" && /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n center: \"both\",\n gap: \"xs\",\n style: {\n textAlign: \"center\"\n },\n children: [/*#__PURE__*/jsx(Text, {\n size: \"sm\",\n children: locale.emailLoginScreen.sendingCode\n }), /*#__PURE__*/jsx(Spinner, {\n size: \"xs\",\n color: \"secondaryText\"\n })]\n }), typeof emailStatus === \"object\" && /*#__PURE__*/jsx(LinkButton, {\n onClick: sendEmail,\n type: \"button\",\n children: locale.emailLoginScreen.resendCode\n })]\n })]\n })\n })]\n });\n }\n return null;\n};\nconst LinkButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n color: theme.colors.accentText,\n fontSize: fontSize.sm,\n cursor: \"pointer\",\n textAlign: \"center\",\n fontWeight: 500,\n width: \"100%\",\n \"&:hover\": {\n color: theme.colors.primaryText\n }\n };\n});\n\nconst DEFAULT_AUTH_OPTIONS = [\"email\", \"google\", \"apple\", \"facebook\"];\n\n/**\n * A wallet configurator for [Embedded Wallet](https://portal.thirdweb.com/wallet/embedded-wallet) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useEmbeddedWallet\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The hook will return all the necessary functions you'll need to authenticate and connect to the embedded wallet.\n *\n * ### Connect with Google/Facebook/Apple sign in\n *\n * ```tsx\n * import { useEmbeddedWallet } from \"@thirdweb-dev/react\";\n *\n * function App() {\n * const { connect } = useEmbeddedWallet();\n *\n * async function handleConnect() {\n * const wallet = await connect({\n * strategy: \"google\", // or \"facebook\" or \"apple\"\n * });\n *\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n *\n * ### Connect with Email verification\n *\n * ```tsx\n * function App() {\n * const { connect, sendVerificationEmail } = useEmbeddedWallet();\n *\n * const preLogin = async (email: string) => {\n * // send email verification code\n * await sendVerificationEmail({ email });\n * };\n *\n * const handleLogin = async (email: string, verificationCode: string) => {\n * // verify email and connect\n * await connect({\n * strategy: \"email_verification\",\n * email,\n * verificationCode,\n * });\n * };\n *\n * return

...
;\n * }\n * ```\n *\n * ### Connecting with Iframe\n *\n * ```tsx\n * function App() {\n * const { connect } = useEmbeddedWallet();\n *\n * const handleConnect = async () => {\n * await connect({\n * strategy: \"iframe\",\n * });\n * };\n *\n * return
...
;\n * }\n * ```\n *\n * ### Connect with your own auth with JWT\n *\n * ```tsx\n * function App() {\n * const { connect } = useEmbeddedWallet();\n *\n * async function handleConnect() {\n * const wallet = await connect({\n * strategy: \"jwt\",\n * jwt: \"your_jwt_token\",\n * });\n *\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n\n */\nconst embeddedWallet = options => {\n const defaultConfig = {\n auth: {\n options: DEFAULT_AUTH_OPTIONS\n }\n };\n const finalOptions = options ? {\n ...defaultConfig,\n ...options\n } : defaultConfig;\n const {\n auth\n } = finalOptions;\n return {\n category: \"socialLogin\",\n isHeadless: true,\n id: EmbeddedWallet.id,\n recommended: finalOptions?.recommended,\n meta: {\n ...EmbeddedWallet.meta,\n name: \"Email\",\n iconURL: emailIcon\n },\n create(walletOptions) {\n return new EmbeddedWallet({\n ...walletOptions,\n ...finalOptions,\n clientId: walletOptions?.clientId ?? \"\"\n });\n },\n selectUI(props) {\n return /*#__PURE__*/jsx(EmbeddedWalletSelectionUI, {\n ...props,\n authOptions: auth ? auth?.options : DEFAULT_AUTH_OPTIONS\n });\n },\n connectUI(props) {\n return /*#__PURE__*/jsx(EmbeddedWalletConnectUI, {\n ...props,\n authOptions: auth ? auth?.options : DEFAULT_AUTH_OPTIONS\n });\n }\n };\n};\nconst EmbeddedWalletSelectionUI = props => {\n const screen = useScreenContext();\n\n // show the icon + text if\n // wide -\n // compact + not main screen (safe/smart wallet list screen)\n if (props.modalSize === \"wide\" || screen !== reservedScreens.main && props.modalSize === \"compact\") {\n return /*#__PURE__*/jsx(WalletEntryButton, {\n walletConfig: props.walletConfig,\n selectWallet: () => {\n props.onSelect(undefined);\n }\n });\n }\n return /*#__PURE__*/jsx(\"div\", {\n children: /*#__PURE__*/jsx(EmbeddedWalletFormUI, {\n onSelect: props.onSelect,\n walletConfig: props.walletConfig,\n authOptions: props.authOptions\n })\n });\n};\nconst EmbeddedWalletConnectUI = props => {\n const [loginType, setLoginType] = useState(props.selectionData);\n if (loginType) {\n const handleBack = () => {\n // go back to base screen\n if (props.modalSize === \"wide\") {\n setLoginType(undefined);\n }\n\n // go to main screen\n else {\n props.goBack();\n }\n };\n if (typeof loginType !== \"string\") {\n return /*#__PURE__*/jsx(EmbeddedWalletOTPLoginUI, {\n ...props,\n selectionData: loginType.email,\n goBack: handleBack\n });\n }\n return /*#__PURE__*/jsx(EmbeddedWalletSocialLogin, {\n ...props,\n goBack: handleBack,\n strategy: loginType\n });\n }\n return /*#__PURE__*/jsx(EmbeddedWalletFormUIScreen, {\n modalSize: props.modalSize,\n onSelect: setLoginType,\n walletConfig: props.walletConfig,\n onBack: props.goBack,\n authOptions: props.authOptions\n });\n};\n\nconst ExportLocalWallet = props => {\n const locale = useTWLocale().wallets.localWallet;\n const [password, setPassword] = useState(\"\");\n const [showPassword, setShowPassword] = useState(false);\n const [isWrongPassword, setIsWrongPassword] = useState(false);\n const [passwordIsRequired, setPasswordIsRequired] = useState(false);\n const wallet = useWallet();\n const address = useAddress();\n const [savedAddress, setSavedAddress] = useState(\"\");\n const createWalletInstance = useCreateWalletInstance();\n\n // set savedAddress and passwordIsRequired on mount\n const mounted = useRef(false);\n useEffect(() => {\n if (mounted.current) {\n return;\n }\n mounted.current = true;\n (async () => {\n // if local wallet is connected - show the address of the connected wallet\n if (wallet && wallet instanceof LocalWallet) {\n if (address) {\n setSavedAddress(address);\n }\n\n // if walletData of it is not already saved - password is required\n const savedData = await wallet.getSavedData();\n if (savedData?.address !== address) {\n setPasswordIsRequired(true);\n }\n }\n\n // if localWallet is not connected - get address from storage, password is not required\n else {\n const localWallet = createWalletInstance(props.localWalletConfig);\n const data = await localWallet.getSavedData();\n if (data) {\n setSavedAddress(data.address);\n }\n }\n })();\n }, [wallet, props.localWalletConfig, createWalletInstance, password, address]);\n const exportFromLocalStorage = async () => {\n // if a local wallet is connected - export it\n if (wallet && wallet instanceof LocalWallet) {\n const savedData = await wallet.getSavedData();\n\n // if already saved - no password required\n if (savedData && savedData.address === address) {\n downloadJsonWalletFile(savedData.data);\n props.onExport();\n }\n\n // if not already saved - password is required\n else {\n try {\n const dataStr = await wallet.export({\n password,\n strategy: \"encryptedJson\"\n });\n downloadJsonWalletFile(dataStr);\n props.onExport();\n } catch (e) {\n console.error(e);\n setIsWrongPassword(true);\n }\n }\n }\n\n // if local wallet is not connected - get data from storage\n else {\n const localWallet = createWalletInstance(props.localWalletConfig);\n const savedData = await localWallet.getSavedData();\n downloadJsonWalletFile(savedData.data);\n props.onExport();\n }\n };\n if (!savedAddress) {\n return /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n flex: \"row\",\n center: \"both\",\n style: {\n height: \"300px\"\n },\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"md\",\n color: \"accentText\"\n })\n });\n }\n const exportDisabled = isWrongPassword;\n return /*#__PURE__*/jsx(Container, {\n fullHeight: true,\n animate: \"fadein\",\n children: /*#__PURE__*/jsxs(\"form\", {\n style: {\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n onSubmit: e => {\n e.preventDefault();\n exportFromLocalStorage();\n },\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n onBack: props.onBack,\n title: locale.exportScreen.title\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n expand: true,\n p: \"lg\",\n children: [/*#__PURE__*/jsx(ModalDescription, {\n children: locale.exportScreen.description1\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(ModalDescription, {\n children: locale.exportScreen.description2\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Label, {\n children: locale.exportScreen.walletAddress\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(SavedWalletAddress, {\n children: shortenAddress(savedAddress)\n }), passwordIsRequired && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(\"input\", {\n type: \"text\",\n name: \"username\",\n autoComplete: \"off\",\n value: address,\n disabled: true,\n style: {\n display: \"none\"\n }\n }), /*#__PURE__*/jsx(FormFieldWithIconButton, {\n noSave: true,\n required: true,\n name: \"current-password\",\n autocomplete: \"current-password\",\n id: \"current-password\",\n onChange: value => {\n setPassword(value);\n setIsWrongPassword(false);\n },\n right: {\n onClick: () => setShowPassword(!showPassword),\n icon: showPassword ? /*#__PURE__*/jsx(EyeClosedIcon, {}) : /*#__PURE__*/jsx(EyeOpenIcon, {})\n },\n label: locale.passwordLabel,\n type: showPassword ? \"text\" : \"password\",\n value: password,\n error: isWrongPassword ? \"Wrong Password\" : \"\",\n dataTest: \"current-password\"\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n })]\n })]\n }), /*#__PURE__*/jsx(ScreenBottomContainer, {\n style: {\n borderTop: props.modalSize === \"wide\" ? \"none\" : undefined\n },\n children: /*#__PURE__*/jsxs(Button, {\n disabled: exportDisabled,\n variant: \"accent\",\n fullWidth: true,\n style: {\n opacity: exportDisabled ? 0.5 : 1,\n display: \"flex\",\n gap: spacing.sm\n },\n type: \"submit\",\n children: [/*#__PURE__*/jsx(PinBottomIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), locale.exportScreen.download]\n })\n })]\n })\n });\n};\nfunction downloadJsonWalletFile(data) {\n const dataObj = JSON.parse(data);\n const blob = new Blob([JSON.stringify(dataObj, null, 2)], {\n type: \"application/json\"\n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"wallet.json\";\n document.body.appendChild(a);\n a.style.display = \"none\";\n a.click();\n URL.revokeObjectURL(a.href);\n}\nconst SavedWalletAddress = /* @__PURE__ */StyledP(() => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize.md,\n color: theme.colors.secondaryText,\n margin: 0\n };\n});\n\nconst defaultChainIcon = \"ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png\";\nconst ChainIcon = props => {\n const url = props.chain?.icon?.url || defaultChainIcon;\n const storage = useStorage();\n const src = storage ? storage.resolveScheme(url) : url.replace(\"ipfs://\", \"https://ipfs.io/ipfs/\");\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\",\n display: \"flex\",\n flexShrink: 0,\n alignItems: \"center\"\n },\n children: [/*#__PURE__*/jsx(\"img\", {\n src: src || defaultChainIcon,\n onError: e => {\n if (e.currentTarget.src !== defaultChainIcon) {\n e.currentTarget.src = defaultChainIcon;\n }\n },\n alt: \"\",\n width: props.size,\n height: props.size,\n className: props.className,\n loading: props.loading,\n style: {\n objectFit: \"contain\",\n width: props.size + \"px\",\n height: props.size + \"px\"\n }\n }), props.active && /*#__PURE__*/jsx(ActiveDot$1, {})]\n });\n};\nconst ActiveDot$1 = /* @__PURE__ */StyledDiv({\n width: \"28%\",\n height: \"28%\",\n borderRadius: \"50%\",\n position: \"absolute\",\n top: \"60%\",\n right: 0,\n backgroundColor: \"#00d395\",\n boxShadow: `0 0 0 2px var(--bg)`\n});\n\n// extracted from chakra-ui\n/**\n * React hook to copy content to clipboard\n *\n */\nfunction useClipboard(text) {\n let optionsOrTimeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const [hasCopied, setHasCopied] = useState(false);\n const {\n timeout = 1500,\n ...copyOptions\n } = typeof optionsOrTimeout === \"number\" ? {\n timeout: optionsOrTimeout\n } : optionsOrTimeout;\n const onCopy = useCallback(() => {\n const didCopy = copy(text, copyOptions);\n setHasCopied(didCopy);\n }, [text, copyOptions]);\n useEffect(() => {\n let timeoutId = null;\n if (hasCopied) {\n timeoutId = window.setTimeout(() => {\n setHasCopied(false);\n }, timeout);\n }\n return () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n }\n };\n }, [timeout, hasCopied]);\n return {\n value: text,\n onCopy,\n hasCopied\n };\n}\n\nconst CopyIcon = props => {\n const {\n hasCopied,\n onCopy\n } = useClipboard(props.text);\n return /*#__PURE__*/jsx(\"div\", {\n onClick: onCopy,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n children: /*#__PURE__*/jsx(ToolTip, {\n tip: props.tip,\n side: props.side,\n align: props.align,\n children: props.hasCopied || hasCopied ? /*#__PURE__*/jsx(CheckIconStyled, {}) : /*#__PURE__*/jsx(CopyIcon$1, {})\n })\n });\n};\nconst CheckIconStyled = /* @__PURE__ */styled(CheckIcon)(() => {\n const theme = useCustomTheme();\n return {\n color: theme.colors.success\n };\n});\n\nconst overlayEnter = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\nconst Overlay = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n backgroundColor: theme.colors.modalOverlayBg,\n zIndex: 9999,\n position: \"fixed\",\n inset: 0,\n animation: `${overlayEnter} 400ms cubic-bezier(0.16, 1, 0.3, 1)`,\n backdropFilter: \"blur(10px)\"\n };\n});\n\nfunction DynamicHeight(props) {\n const {\n height,\n elementRef\n } = useHeightObserver();\n return /*#__PURE__*/jsx(\"div\", {\n style: {\n height: height ? `${height}px` : \"auto\",\n transition: \"height 210ms cubic-bezier(0.175, 0.885, 0.32, 1.1)\",\n overflow: \"hidden\",\n boxSizing: \"border-box\"\n },\n children: /*#__PURE__*/jsx(\"div\", {\n ref: elementRef,\n style: {\n maxHeight: props.maxHeight\n },\n children: props.children\n })\n });\n}\nfunction useHeightObserver() {\n const elementRef = useRef(null);\n const [height, setHeight] = useState();\n useEffect(() => {\n const element = elementRef.current;\n if (!element) {\n return;\n }\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.scrollHeight);\n });\n resizeObserver.observe(element);\n return () => {\n resizeObserver.disconnect();\n };\n }, [elementRef]);\n return {\n height,\n elementRef: elementRef\n };\n}\n\nconst Modal = props => {\n const [open, setOpen] = useState(props.open);\n const contentRef = useRef(null);\n const overlayRef = useRef(null);\n useEffect(() => {\n if (!props.open) {\n if (contentRef.current) {\n const animationConfig = {\n duration: modalCloseFadeOutDuration,\n fill: \"forwards\",\n easing: \"ease\"\n };\n contentRef.current.animate([{\n opacity: 0\n }], {\n ...animationConfig\n }).onfinish = () => {\n setOpen(false);\n };\n overlayRef.current?.animate([{\n opacity: 0\n }], {\n ...animationConfig,\n duration: modalCloseFadeOutDuration + 100\n });\n } else {\n setOpen(props.open);\n }\n } else {\n setOpen(props.open);\n }\n }, [props.open]);\n return /*#__PURE__*/jsxs(Dialog.Root, {\n open: open,\n onOpenChange: props.setOpen,\n children: [props.trigger && /*#__PURE__*/jsx(Dialog.Trigger, {\n asChild: true,\n children: props.trigger\n }), /*#__PURE__*/jsxs(Dialog.Portal, {\n children: [!props.hide && /*#__PURE__*/jsx(Dialog.Overlay, {\n asChild: true,\n children: /*#__PURE__*/jsx(Overlay, {\n ref: overlayRef\n })\n }), /*#__PURE__*/jsx(FocusScope, {\n trapped: !props.hide,\n children: /*#__PURE__*/jsx(Dialog.Content, {\n asChild: true,\n children: /*#__PURE__*/jsxs(DialogContent, {\n ref: contentRef,\n style: props.hide ? {\n width: 0,\n height: 0,\n overflow: \"hidden\",\n opacity: 0\n } : {\n height: props.size === \"compact\" ? \"auto\" : wideModalMaxHeight,\n maxWidth: props.size === \"compact\" ? modalMaxWidthCompact : modalMaxWidthWide\n },\n children: [props.size === \"compact\" ? /*#__PURE__*/jsxs(DynamicHeight, {\n maxHeight: compactModalMaxHeight,\n children: [props.children, \" \"]\n }) : props.children, !props.hideCloseIcon && /*#__PURE__*/jsx(CrossContainer, {\n children: /*#__PURE__*/jsx(Dialog.Close, {\n asChild: true,\n children: /*#__PURE__*/jsx(IconButton, {\n type: \"button\",\n \"aria-label\": \"Close\",\n children: /*#__PURE__*/jsx(Cross2Icon, {\n width: iconSize.md,\n height: iconSize.md,\n style: {\n color: \"inherit\"\n }\n })\n })\n })\n })]\n })\n })\n })]\n })]\n });\n};\nconst CrossContainer = /* @__PURE__ */StyledDiv({\n position: \"absolute\",\n top: spacing.lg,\n right: spacing.lg,\n transform: \"translateX(15%)\",\n [media.mobile]: {\n right: spacing.md\n }\n});\nconst modalAnimationDesktop = keyframes`\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n`;\nconst modalAnimationMobile = keyframes`\n from {\n opacity: 0;\n transform: translate(0, 50%);\n }\n to {\n opacity: 1;\n transform: translate(0, 0);\n }\n`;\nconst DialogContent = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n zIndex: 10000,\n background: theme.colors.modalBg,\n \"--bg\": theme.colors.modalBg,\n color: theme.colors.primaryText,\n borderRadius: radius.xl,\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"calc(100vw - 40px)\",\n boxSizing: \"border-box\",\n animation: `${modalAnimationDesktop} 300ms ease`,\n boxShadow: shadow.lg,\n lineHeight: \"normal\",\n border: `1px solid ${theme.colors.borderColor}`,\n outline: \"none\",\n overflow: \"hidden\",\n fontFamily: theme.fontFamily,\n [media.mobile]: {\n top: \"auto\",\n bottom: 0,\n left: 0,\n right: 0,\n transform: \"none\",\n width: \"100vw\",\n animation: `${modalAnimationMobile} 0.35s cubic-bezier(0.15, 1.15, 0.6, 1)`,\n borderRadius: radius.xxl,\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0,\n maxWidth: \"none !important\"\n },\n \"& *::selection\": {\n backgroundColor: theme.colors.selectedTextBg,\n color: theme.colors.selectedTextColor\n },\n ...noScrollBar\n };\n});\n\nconst Skeleton = props => {\n return /*#__PURE__*/jsx(SkeletonDiv, {\n style: {\n height: props.height,\n width: props.width || \"auto\"\n }\n });\n};\nconst skeletonAnimation = keyframes`\n0% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n`;\nconst SkeletonDiv = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n backgroundSize: \"200% 200%\",\n backgroundColor: theme.colors.skeletonBg,\n animation: `${skeletonAnimation} 500ms ease-in-out infinite alternate`,\n borderRadius: radius.sm\n };\n});\n\nconst fuseConfig = {\n threshold: 0.4,\n keys: [{\n name: \"name\",\n weight: 1\n }, {\n name: \"chainId\",\n weight: 1\n }]\n};\n\n/**\n * Renders a Network Switcher Modal that allows users to switch their wallet to a different network.\n *\n * @example\n * ```tsx\n * import { NetworkSelector } from \"@thirdweb-dev/react\";\n *\n * function Example() {\n * const [open, setOpen] = useState(false);\n * return (\n *
\n * \n * setOpen(false)} />\n *
\n * )\n * }\n * ```\n */\nfunction NetworkSelector(props) {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const deferredSearchTerm = useDeferredValue(searchTerm);\n const themeFromContext = useCustomTheme();\n const theme = props.theme || themeFromContext || \"dark\";\n const supportedChains = useSupportedChains();\n const chains = props.chains || supportedChains;\n const locale = useTWLocale().connectWallet.networkSelector;\n const _recentChains = props.recentChains;\n\n // remove recent chains from popular chains\n const cleanedPopularChains = !_recentChains ? props.popularChains : props.popularChains?.filter(chain => {\n return !_recentChains.some(recentChain => recentChain.chainId === chain.chainId);\n });\n\n // fuse instances\n const fuseAllChains = useMemo(() => {\n return new Fuse(chains, fuseConfig);\n }, [chains]);\n const fusePopularChains = useMemo(() => {\n return new Fuse(cleanedPopularChains || [], fuseConfig);\n }, [cleanedPopularChains]);\n const fuseRecentChains = useMemo(() => {\n return new Fuse(props.recentChains || [], fuseConfig);\n }, [props.recentChains]);\n\n // chains filtered by search term\n const allChains = useMemo(() => {\n if (deferredSearchTerm === \"\") {\n return chains;\n }\n return fuseAllChains.search(deferredSearchTerm).map(r => r.item);\n }, [fuseAllChains, deferredSearchTerm, chains]);\n const popularChains = useMemo(() => {\n if (deferredSearchTerm === \"\") {\n return cleanedPopularChains || [];\n }\n return fusePopularChains.search(deferredSearchTerm).map(r => r.item);\n }, [fusePopularChains, deferredSearchTerm, cleanedPopularChains]);\n const recentChains = useMemo(() => {\n if (deferredSearchTerm === \"\") {\n return props.recentChains || [];\n }\n return fuseRecentChains.search(deferredSearchTerm).map(r => r.item);\n }, [fuseRecentChains, deferredSearchTerm, props.recentChains]);\n const {\n onClose,\n onSwitch,\n onCustomClick\n } = props;\n const handleSwitch = useCallback(chain => {\n if (onSwitch) {\n onSwitch(chain);\n }\n if (onClose) {\n onClose();\n }\n }, [onSwitch, onClose]);\n return /*#__PURE__*/jsx(CustomThemeProvider, {\n theme: theme,\n children: /*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n open: props.open,\n setOpen: value => {\n if (!value && onClose) {\n onClose();\n }\n },\n style: {\n paddingBottom: props.onCustomClick ? spacing.md : \"0px\"\n },\n children: /*#__PURE__*/jsxs(Container, {\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalTitle, {\n children: locale.title\n })\n }), /*#__PURE__*/jsxs(Tabs.Root, {\n className: \"TabsRoot\",\n defaultValue: \"all\",\n children: [/*#__PURE__*/jsx(Container, {\n px: \"lg\",\n children: /*#__PURE__*/jsxs(Tabs.List, {\n className: \"TabsList\",\n \"aria-label\": \"Manage your account\",\n style: {\n display: \"flex\",\n gap: spacing.xxs\n },\n children: [/*#__PURE__*/jsx(TabButton, {\n className: \"TabsTrigger\",\n value: \"all\",\n children: locale.allNetworks\n }), /*#__PURE__*/jsx(TabButton, {\n className: \"TabsTrigger\",\n value: \"mainnet\",\n children: locale.mainnets\n }), /*#__PURE__*/jsx(TabButton, {\n className: \"TabsTrigger\",\n value: \"testnet\",\n children: locale.testnets\n })]\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), chains.length > 10 && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Container, {\n px: \"lg\",\n children: /*#__PURE__*/jsxs(\"div\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\"\n },\n children: [/*#__PURE__*/jsx(StyledMagnifyingGlassIcon, {\n width: iconSize.md,\n height: iconSize.md\n }), /*#__PURE__*/jsx(Input, {\n style: {\n padding: `${spacing.sm} ${spacing.md} ${spacing.sm} ${spacing.xxl}`\n },\n tabIndex: -1,\n variant: \"outline\",\n placeholder: locale.inputPlaceholder,\n value: searchTerm,\n onChange: e => {\n setSearchTerm(e.target.value);\n }\n }), deferredSearchTerm !== searchTerm && /*#__PURE__*/jsx(\"div\", {\n style: {\n position: \"absolute\",\n right: spacing.md\n },\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"md\",\n color: \"accentText\"\n })\n })]\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n })]\n }), /*#__PURE__*/jsxs(Container, {\n px: \"md\",\n children: [/*#__PURE__*/jsx(Tabs.Content, {\n className: \"TabsContent\",\n value: \"all\",\n style: {\n outline: \"none\"\n },\n children: /*#__PURE__*/jsx(NetworkTab, {\n allChains: allChains,\n type: \"all\",\n popularChains: popularChains,\n recentChains: recentChains,\n onSwitch: handleSwitch,\n renderChain: props.renderChain,\n close: props.onClose\n })\n }), /*#__PURE__*/jsx(Tabs.Content, {\n className: \"TabsContent\",\n value: \"mainnet\",\n style: {\n outline: \"none\"\n },\n children: /*#__PURE__*/jsx(NetworkTab, {\n allChains: allChains,\n type: \"mainnet\",\n popularChains: popularChains,\n recentChains: recentChains,\n onSwitch: handleSwitch,\n renderChain: props.renderChain,\n close: props.onClose\n })\n }), /*#__PURE__*/jsx(Tabs.Content, {\n className: \"TabsContent\",\n value: \"testnet\",\n style: {\n outline: \"none\"\n },\n children: /*#__PURE__*/jsx(NetworkTab, {\n allChains: allChains,\n type: \"testnet\",\n popularChains: popularChains,\n recentChains: recentChains,\n onSwitch: handleSwitch,\n renderChain: props.renderChain,\n close: props.onClose\n })\n })]\n }), onCustomClick && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(Button, {\n fullWidth: true,\n variant: \"link\",\n onClick: () => {\n onCustomClick();\n if (onClose) {\n onClose();\n }\n },\n style: {\n display: \"flex\",\n fontSize: fontSize.sm,\n boxShadow: \"none\"\n },\n children: locale.addCustomNetwork\n })\n })]\n })]\n })]\n })\n })\n });\n}\nconst filterChainByType = (chains, type) => {\n if (type === \"all\") {\n return chains;\n }\n if (type === \"testnet\") {\n return chains.filter(c => c.testnet);\n }\n return chains.filter(c => !c.testnet);\n};\nconst NetworkTab = props => {\n const allChains = useMemo(() => filterChainByType(props.allChains, props.type), [props.type, props.allChains]);\n const recentChains = useMemo(() => filterChainByType(props.recentChains || [], props.type), [props.type, props.recentChains]);\n const popularChains = useMemo(() => filterChainByType(props.popularChains || [], props.type), [props.type, props.popularChains]);\n const locale = useTWLocale().connectWallet.networkSelector.categoryLabel;\n return /*#__PURE__*/jsxs(Container, {\n scrollY: true,\n animate: \"fadein\",\n style: {\n height: \"330px\",\n paddingBottom: spacing.lg\n },\n children: [recentChains.length > 0 && /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(SectionLabel, {\n children: locale.recentlyUsed\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(NetworkList, {\n chains: recentChains,\n onSwitch: props.onSwitch,\n renderChain: props.renderChain,\n close: props.close\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n })]\n }), popularChains.length > 0 && /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(SectionLabel, {\n children: locale.popular\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(NetworkList, {\n chains: popularChains,\n onSwitch: props.onSwitch,\n renderChain: props.renderChain,\n close: props.close\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n })]\n }), (popularChains.length > 0 || recentChains.length > 0) && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(SectionLabel, {\n children: locale.others\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n })]\n }), /*#__PURE__*/jsx(NetworkList, {\n chains: allChains,\n onSwitch: props.onSwitch,\n renderChain: props.renderChain,\n close: props.close\n })]\n });\n};\nconst NetworkList = /* @__PURE__ */memo(function NetworkList(props) {\n const switchChain = useSwitchChain();\n const activeChainId = useChainId();\n const [switchingChainId, setSwitchingChainId] = useState(-1);\n const [errorSwitchingChainId, setErrorSwitchingChainId] = useState(-1);\n const twLocale = useTWLocale();\n const locale = twLocale.connectWallet.networkSelector;\n const close = props.close;\n useEffect(() => {\n // if switching and switched successfully - close modal\n if (switchingChainId !== -1 && activeChainId === switchingChainId) {\n if (close) {\n close();\n }\n }\n }, [switchingChainId, close, activeChainId]);\n const handleSwitch = async chain => {\n setErrorSwitchingChainId(-1);\n setSwitchingChainId(chain.chainId);\n try {\n await switchChain(chain.chainId);\n props.onSwitch(chain);\n } catch (e) {\n setErrorSwitchingChainId(chain.chainId);\n console.error(e);\n } finally {\n setSwitchingChainId(-1);\n }\n };\n const RenderChain = props.renderChain;\n const [isLoading, setIsLoading] = useState(props.chains.length > 100);\n useEffect(() => {\n if (isLoading) {\n setIsLoading(false);\n }\n }, [isLoading]);\n if (isLoading) {\n return /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n style: {\n height: \"250px\"\n },\n children: /*#__PURE__*/jsx(Text, {\n children: locale.loading\n })\n });\n }\n return /*#__PURE__*/jsx(NetworkListUl, {\n children: props.chains.map(chain => {\n const confirming = switchingChainId === chain.chainId;\n const switchingFailed = errorSwitchingChainId === chain.chainId;\n const chainName = /*#__PURE__*/jsxs(\"span\", {\n children: [chain.name, \" \"]\n });\n if (RenderChain) {\n return /*#__PURE__*/jsx(\"li\", {\n children: /*#__PURE__*/jsx(RenderChain, {\n switchChain: () => {\n handleSwitch(chain);\n },\n chain: chain,\n switching: switchingChainId === chain.chainId,\n switchFailed: errorSwitchingChainId === chain.chainId,\n close: props.close\n })\n }, chain.chainId);\n }\n return /*#__PURE__*/jsx(\"li\", {\n children: /*#__PURE__*/jsxs(NetworkButton, {\n \"data-active\": activeChainId === chain.chainId,\n onClick: () => {\n handleSwitch(chain);\n },\n children: [/*#__PURE__*/jsx(ChainIcon, {\n chain: chain,\n size: iconSize.lg,\n active: activeChainId === chain.chainId,\n loading: \"lazy\"\n }), confirming || switchingFailed ? /*#__PURE__*/jsxs(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: spacing.xs\n },\n children: [chainName, /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n flex: \"row\",\n gap: \"xs\",\n children: [confirming && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Text, {\n size: \"xs\",\n color: \"accentText\",\n children: twLocale.connectWallet.confirmInWallet\n }), /*#__PURE__*/jsx(Spinner, {\n size: \"xs\",\n color: \"accentText\"\n })]\n }), switchingFailed && /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(Text, {\n size: \"xs\",\n color: \"danger\",\n children: locale.failedToSwitch\n })\n })]\n })]\n }) : chainName]\n })\n }, chain.chainId);\n })\n });\n});\nconst TabButton = /* @__PURE__ */(() => styled(Tabs.Trigger)(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n fontSize: fontSize.sm,\n fontWeight: 500,\n color: theme.colors.secondaryText,\n cursor: \"pointer\",\n padding: `${spacing.sm} ${spacing.sm}`,\n WebkitTapHighlightColor: \"transparent\",\n borderRadius: radius.lg,\n transition: \"background 0.2s ease, color 0.2s ease\",\n \"&[data-state='active']\": {\n background: theme.colors.secondaryButtonBg,\n color: theme.colors.primaryText\n }\n };\n}))();\nconst SectionLabel = /* @__PURE__ */StyledP(() => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize.sm,\n color: theme.colors.secondaryText,\n margin: 0,\n display: \"block\",\n padding: `0 ${spacing.xs}`\n };\n});\nconst NetworkListUl = /* @__PURE__ */StyledUl({\n padding: 0,\n margin: 0,\n listStyle: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: spacing.xs,\n boxSizing: \"border-box\"\n});\nconst NetworkButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n display: \"flex\",\n width: \"100%\",\n boxSizing: \"border-box\",\n alignItems: \"center\",\n gap: spacing.md,\n padding: `${spacing.xs} ${spacing.sm}`,\n borderRadius: radius.md,\n cursor: \"pointer\",\n transition: \"background 0.2s ease\",\n color: theme.colors.primaryText,\n fontWeight: 500,\n fontSize: fontSize.md,\n \"&:hover\": {\n background: theme.colors.secondaryButtonBg\n },\n [media.mobile]: {\n fontSize: fontSize.sm\n }\n };\n});\nconst StyledMagnifyingGlassIcon = /* @__PURE__ */styled(MagnifyingGlassIcon)(() => {\n const theme = useCustomTheme();\n return {\n color: theme.colors.secondaryText,\n position: \"absolute\",\n left: spacing.sm\n };\n});\n\nconst ExitIcon = _ref => {\n let {\n size\n } = _ref;\n return /*#__PURE__*/jsx(\"svg\", {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M10.79 16.29C11.18 16.68 11.81 16.68 12.2 16.29L15.79 12.7C15.8827 12.6075 15.9563 12.4976 16.0064 12.3766C16.0566 12.2557 16.0824 12.126 16.0824 11.995C16.0824 11.864 16.0566 11.7343 16.0064 11.6134C15.9563 11.4924 15.8827 11.3825 15.79 11.29L12.2 7.7C12.013 7.51302 11.7594 7.40798 11.495 7.40798C11.2306 7.40798 10.977 7.51302 10.79 7.7C10.603 7.88698 10.498 8.14057 10.498 8.405C10.498 8.66943 10.603 8.92302 10.79 9.11L12.67 11H4C3.45 11 3 11.45 3 12C3 12.55 3.45 13 4 13H12.67L10.79 14.88C10.4 15.27 10.41 15.91 10.79 16.29ZM19 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V8C3 8.55 3.45 9 4 9C4.55 9 5 8.55 5 8V6C5 5.45 5.45 5 6 5H18C18.55 5 19 5.45 19 6V18C19 18.55 18.55 19 18 19H6C5.45 19 5 18.55 5 18V16C5 15.45 4.55 15 4 15C3.45 15 3 15.45 3 16V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3Z\"\n })\n });\n};\n\nconst FundsIcon = _ref => {\n let {\n size\n } = _ref;\n return /*#__PURE__*/jsxs(\"svg\", {\n width: size,\n height: size,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: [/*#__PURE__*/jsx(\"path\", {\n d: \"M14.001 8.00048C14.001 9.18726 13.649 10.3474 12.9897 11.3342C12.3304 12.3209 11.3932 13.09 10.2968 13.5442C9.20032 13.9984 7.99382 14.1172 6.82984 13.8857C5.66587 13.6541 4.59668 13.0826 3.7575 12.2435C2.91832 11.4043 2.34683 10.3351 2.1153 9.17111C1.88377 8.00713 2.0026 6.80064 2.45676 5.70419C2.91092 4.60775 3.68002 3.6706 4.66679 3.01126C5.65357 2.35192 6.8137 2 8.00048 2\",\n stroke: \"currentColor\",\n strokeWidth: \"1.2001\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M14.0005 2L8 8.00048\",\n stroke: \"currentColor\",\n strokeWidth: \"1.2001\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M10.3984 2H13.9987V5.60029\",\n stroke: \"currentColor\",\n strokeWidth: \"1.2001\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })]\n });\n};\n\nfunction SendFunds(props) {\n const [screen, setScreen] = useState(\"base\");\n const chainId = useChainId();\n let defaultToken = undefined;\n if (\n // if we know chainId\n chainId &&\n // if there is a list of tokens for this chain\n props.supportedTokens[chainId] &&\n // if the list of tokens is not the default list\n props.supportedTokens[chainId] !== defaultTokens[chainId]) {\n // use the first token in the list as default selected\n const tokensForChain = props.supportedTokens[chainId];\n const firstToken = tokensForChain && tokensForChain[0];\n if (firstToken) {\n defaultToken = firstToken;\n }\n }\n const [token, setToken] = useState(defaultToken);\n const [receiverAddress, setReceiverAddress] = useState(\"\");\n const [amount, setAmount] = useState(\"0\");\n if (screen === \"tokenSelector\") {\n return /*#__PURE__*/jsx(TokenSelector, {\n supportedTokens: props.supportedTokens,\n onBack: () => {\n setScreen(\"base\");\n },\n onTokenSelect: _token => {\n setToken(_token);\n setScreen(\"base\");\n }\n });\n }\n return /*#__PURE__*/jsx(SendFundsForm, {\n token: token,\n onTokenSelect: () => {\n setScreen(\"tokenSelector\");\n },\n receiverAddress: receiverAddress,\n setReceiverAddress: setReceiverAddress,\n amount: amount,\n setAmount: setAmount\n });\n}\nfunction SendFundsForm(props) {\n const locale = useTWLocale().connectWallet.sendFundsScreen;\n const tokenAddress = props.token?.address;\n const balanceQuery = useBalance(tokenAddress);\n const {\n receiverAddress,\n setReceiverAddress,\n amount,\n setAmount\n } = props;\n const chain = useChain();\n const chainId = useChainId();\n const wallet = useWallet();\n\n // Ethereum or Rinkeby or Goerli\n const isENSSupported = chainId === 1 || chainId === 5 || chainId === 4;\n const isValidReceiverAddress = useMemo(() => {\n const isENS = receiverAddress.endsWith(\".eth\");\n if (!isENSSupported && isENS) {\n return false;\n }\n return isENS || utils.isAddress(receiverAddress);\n }, [receiverAddress, isENSSupported]);\n const showInvalidAddressError = receiverAddress && !isValidReceiverAddress;\n const sendTokenMutation = useMutation(async () => {\n if (!wallet) {\n return;\n }\n return wallet.transfer(receiverAddress, amount, tokenAddress);\n });\n function getErrorMessage(error) {\n const message = error?.data?.message || error?.message;\n if (!message) {\n return locale.transactionFailed;\n }\n if (message.includes(\"user rejected\")) {\n return locale.transactionRejected;\n }\n if (message.includes(\"insufficient funds\")) {\n return locale.insufficientFunds;\n }\n return locale.transactionFailed;\n }\n if (sendTokenMutation.isError) {\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: () => {\n sendTokenMutation.reset();\n }\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"lg\",\n animate: \"fadein\",\n center: \"both\",\n style: {\n minHeight: \"200px\"\n },\n color: \"danger\",\n children: [/*#__PURE__*/jsx(CrossCircledIcon, {\n width: iconSize.xl,\n height: iconSize.xl\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n children: getErrorMessage(sendTokenMutation.error)\n })]\n })]\n });\n }\n if (sendTokenMutation.isSuccess) {\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: () => {\n sendTokenMutation.reset();\n }\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"lg\",\n animate: \"fadein\",\n center: \"both\",\n style: {\n minHeight: \"250px\"\n },\n color: \"success\",\n children: [/*#__PURE__*/jsx(CheckCircledIcon, {\n width: iconSize.xl,\n height: iconSize.xl\n }), /*#__PURE__*/jsxs(Text, {\n color: \"success\",\n children: [\" \", locale.successMessage, \" \"]\n })]\n })]\n });\n }\n const tokenName = props.token?.name || balanceQuery?.data?.name;\n const tokenSymbol = props.token?.symbol || balanceQuery.data?.symbol;\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(ModalTitle, {\n children: locale.title\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(\"form\", {\n onSubmit: e => {\n e.preventDefault();\n },\n children: [/*#__PURE__*/jsx(Label, {\n htmlFor: \"token\",\n color: \"secondaryText\",\n children: locale.token\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Button, {\n id: \"token\",\n variant: \"outline\",\n fullWidth: true,\n style: {\n justifyContent: \"flex-start\",\n gap: spacing.sm,\n padding: spacing.sm\n },\n onClick: props.onTokenSelect,\n children: [props.token ? /*#__PURE__*/jsx(Img, {\n src: props.token.icon,\n width: iconSize.lg,\n height: iconSize.lg\n }) : /*#__PURE__*/jsx(ChainIcon, {\n chain: chain,\n size: iconSize.lg\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"xs\",\n children: [tokenName ? /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"primaryText\",\n children: tokenName\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.xs,\n width: \"150px\"\n }), balanceQuery.data ? /*#__PURE__*/jsx(Text, {\n size: \"xs\",\n children: formatBalance(balanceQuery.data)\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.xs,\n width: \"100px\"\n })]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Label, {\n htmlFor: \"receiever\",\n color: \"secondaryText\",\n children: locale.sendTo\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Input, {\n \"data-error\": showInvalidAddressError,\n required: true,\n id: \"receiever\",\n placeholder: isENSSupported ? `0x... / ENS name` : \"0x...\",\n variant: \"outline\",\n value: receiverAddress,\n onChange: e => {\n setReceiverAddress(e.target.value);\n }\n }), showInvalidAddressError && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: locale.invalidAddress\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Label, {\n htmlFor: \"amount\",\n color: \"secondaryText\",\n children: locale.amount\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Container, {\n relative: true,\n children: [/*#__PURE__*/jsx(Input, {\n required: true,\n type: \"number\",\n id: \"amount\",\n variant: \"outline\",\n value: amount,\n onChange: e => {\n setAmount(e.target.value);\n }\n }), /*#__PURE__*/jsx(CurrencyBadge, {\n children: /*#__PURE__*/jsxs(Text, {\n size: \"xs\",\n children: [\" \", tokenSymbol, \" \"]\n })\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n }), /*#__PURE__*/jsxs(Button, {\n fullWidth: true,\n variant: \"accent\",\n type: \"submit\",\n onClick: async () => {\n if (!receiverAddress || !wallet || !amount) {\n return;\n }\n await sendTokenMutation.mutateAsync();\n },\n style: {\n alignItems: \"center\",\n gap: spacing.sm,\n padding: spacing.md\n },\n children: [sendTokenMutation.isLoading ? locale.sending : locale.submitButton, sendTokenMutation.isLoading && /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"accentButtonText\"\n })]\n })]\n })]\n });\n}\nfunction useNativeToken() {\n const balanceQuery = useBalance();\n const chain = useChain();\n if (balanceQuery.data) {\n return {\n name: balanceQuery.data.name,\n symbol: balanceQuery.data.symbol,\n address: NATIVE_TOKEN_ADDRESS,\n icon: chain?.icon?.url || \"\"\n };\n }\n}\nfunction useToken(tokenAddress) {\n const balanceQuery = useBalance(tokenAddress);\n const chain = useChain();\n if (!utils.isAddress(tokenAddress)) {\n return {\n isLoading: false,\n data: undefined\n };\n }\n if (balanceQuery.isLoading) {\n return {\n isLoading: true,\n data: undefined\n };\n }\n if (balanceQuery.data) {\n return {\n isLoading: false,\n data: {\n name: balanceQuery.data.name,\n symbol: balanceQuery.data.symbol,\n address: tokenAddress,\n icon: chain?.icon?.url || \"\"\n }\n };\n }\n return {\n isLoading: false,\n data: undefined\n };\n}\nfunction TokenSelector(props) {\n const [input, setInput] = useState(\"\");\n const chainId = useChainId();\n const nativeTokenInfo = useNativeToken();\n const {\n data: foundToken,\n isLoading: findingToken\n } = useToken(input);\n const locale = useTWLocale().connectWallet.sendFundsScreen;\n let tokenList = (chainId ? props.supportedTokens[chainId] : undefined) || [];\n if (nativeTokenInfo) {\n tokenList = [nativeTokenInfo, ...tokenList];\n }\n if (foundToken) {\n tokenList = [foundToken, ...tokenList];\n }\n const filteredList = input ? tokenList.filter(t => {\n const inputStr = input.toLowerCase();\n return t.name.toLowerCase().includes(inputStr) || t.symbol.toLowerCase().includes(inputStr) || t.address.includes(input);\n }) : tokenList;\n return /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n onBack: props.onBack,\n title: locale.selectTokenTitle\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Input, {\n placeholder: locale.searchToken,\n variant: \"outline\",\n value: input,\n onChange: e => {\n setInput(e.target.value);\n }\n })]\n }), filteredList.length > 0 && /*#__PURE__*/jsx(Container, {\n flex: \"column\",\n gap: \"xs\",\n p: \"md\",\n scrollY: true,\n style: {\n paddingTop: 0,\n paddingBottom: spacing.lg,\n maxHeight: \"400px\"\n },\n children: filteredList.map(token => {\n return /*#__PURE__*/jsx(SelectTokenButton, {\n onClick: () => props.onTokenSelect(token),\n token: token\n }, token.address);\n })\n }), findingToken && /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n p: \"lg\",\n flex: \"column\",\n gap: \"md\",\n center: \"both\",\n style: {\n minHeight: \"150px\",\n paddingTop: 0\n },\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n }), filteredList.length === 0 && !findingToken && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n p: \"lg\",\n flex: \"column\",\n gap: \"md\",\n center: \"both\",\n style: {\n minHeight: \"150px\",\n paddingTop: 0\n },\n color: \"secondaryText\",\n children: [/*#__PURE__*/jsx(CrossCircledIcon, {\n width: iconSize.lg,\n height: iconSize.lg\n }), locale.noTokensFound]\n })]\n });\n}\nfunction SelectTokenButton(props) {\n const balanceQuery = useBalance(props.token?.address);\n const chain = useChain();\n const tokenName = props.token?.name || balanceQuery.data?.name;\n return /*#__PURE__*/jsxs(SelectTokenBtn, {\n fullWidth: true,\n variant: \"secondary\",\n onClick: props.onClick,\n children: [props.token?.icon ? /*#__PURE__*/jsx(Img, {\n width: iconSize.lg,\n height: iconSize.lg,\n src: props.token.icon\n }) : /*#__PURE__*/jsx(ChainIcon, {\n chain: chain,\n size: iconSize.lg\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"xs\",\n children: [tokenName ? /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"primaryText\",\n children: tokenName\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.md,\n width: \"150px\"\n }), balanceQuery.data ? /*#__PURE__*/jsxs(Text, {\n size: \"xs\",\n children: [\" \", formatBalance(balanceQuery.data)]\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.xs,\n width: \"100px\"\n })]\n })]\n });\n}\nconst SelectTokenBtn = /* @__PURE__ */styled(Button)(() => {\n const theme = useCustomTheme();\n return {\n background: \"transparent\",\n justifyContent: \"flex-start\",\n gap: spacing.sm,\n padding: spacing.sm,\n \"&:hover\": {\n background: theme.colors.secondaryButtonBg,\n transform: \"scale(1.01)\"\n },\n transition: \"background 200ms ease, transform 150ms ease\"\n };\n});\nfunction formatBalance(balanceData) {\n return Number(balanceData.displayValue).toFixed(3) + \" \" + balanceData.symbol;\n}\nconst CurrencyBadge = /* @__PURE__ */StyledDiv({\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n right: spacing.sm\n});\n\nfunction ReceiveFunds(props) {\n const address = useAddress();\n const {\n hasCopied,\n onCopy\n } = useClipboard(address || \"\");\n const locale = useTWLocale().connectWallet.receiveFundsScreen;\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: locale.title\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n children: /*#__PURE__*/jsx(QRCode, {\n qrCodeUri: address,\n size: 310,\n QRIcon: /*#__PURE__*/jsx(Img, {\n src: props.iconUrl,\n width: iconSize.xxl,\n height: iconSize.xxl\n })\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(WalletAddressContainer, {\n onClick: onCopy,\n children: [/*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n size: \"md\",\n children: shortenString(address || \"\")\n }), /*#__PURE__*/jsx(CopyIcon, {\n text: address || \"\",\n tip: \"Copy address\",\n hasCopied: hasCopied\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Text, {\n multiline: true,\n center: true,\n balance: true,\n children: locale.instruction\n })]\n });\n}\nconst WalletAddressContainer = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n width: \"100%\",\n boxSizing: \"border-box\",\n cursor: \"pointer\",\n padding: spacing.md,\n display: \"flex\",\n justifyContent: \"space-between\",\n border: `1px solid ${theme.colors.borderColor}`,\n borderRadius: radius.md,\n transition: \"border-color 200ms ease\",\n \"&:hover\": {\n borderColor: theme.colors.accentText\n }\n };\n});\n\n/**\n * Hook to authenticate and connect to an embedded wallet\n * @returns a function to connect to an embedded wallet\n */\nfunction useEmbeddedWallet() {\n const create = useCreateWalletInstance();\n const setStatus = useSetConnectionStatus();\n const setWallet = useSetConnectedWallet();\n const context = useWalletContext();\n const wallets = useWallets();\n const connect = useCallback(async authParams => {\n setStatus(\"connecting\");\n const config = wallets.find(w => w.id === walletIds.embeddedWallet);\n if (!config || config.personalWallets && config.personalWallets.length > 0) {\n console.warn(\"Embedded wallet not configured in ThirdwebProvider.supportedWallets - add it to enable autoconnect on page load\");\n }\n const wallet = create(embeddedWallet());\n try {\n const authResult = await wallet.authenticate(authParams);\n await wallet.connect({\n authResult\n });\n setWallet(wallet);\n setStatus(\"connected\");\n } catch (e) {\n console.error(\"Error connecting to embedded wallet\", e);\n setStatus(\"disconnected\");\n throw e;\n }\n return wallet;\n }, [setStatus, wallets, create, setWallet]);\n const sendVerificationEmail = useCallback(async _ref => {\n let {\n email\n } = _ref;\n const clientId = context.clientId;\n if (!clientId) {\n throw new Error(\"clientId not found, please add it to ThirdwebProvider\");\n }\n return EmbeddedWallet.sendVerificationEmail({\n email,\n clientId\n });\n }, [context]);\n return {\n connect,\n sendVerificationEmail\n };\n}\nfunction useEmbeddedWalletUserEmail() {\n const wallet = useWallet();\n const queryClient = useQueryClient();\n const emailQuery = useQuery([wallet?.walletId, \"embeddedWallet-email\"], () => {\n if (wallet && wallet.walletId === walletIds.embeddedWallet) {\n return wallet.getEmail();\n }\n }, {\n retry: false,\n enabled: wallet?.walletId === walletIds.embeddedWallet\n });\n\n // Invalidate the query when the wallet changes\n useEffect(() => {\n queryClient.invalidateQueries([wallet?.walletId, \"embeddedWallet-email\"]);\n }, [wallet, queryClient]);\n return emailQuery;\n}\n\nconst TW_CONNECTED_WALLET = \"tw-connected-wallet\";\nconst ConnectedWalletDetails = props => {\n const locale = useTWLocale().connectWallet;\n const chain = useChain();\n const walletChainId = useChainId();\n const disconnect = useDisconnect();\n const chains = useSupportedChains();\n const address = useAddress();\n const token = walletChainId && props.displayBalanceToken ? props.displayBalanceToken[walletChainId] : undefined;\n const balanceQuery = useBalance(token);\n const activeWallet = useWallet();\n const activeWalletConfig = useWalletConfig();\n const ensQuery = useENS();\n const [wrapperWallet, setWrapperWallet] = useState();\n const walletContext = useWalletContext();\n const [overrideWalletIconUrl, setOverrideWalletIconUrl] = useState(undefined);\n\n // modals\n const [showNetworkSelector, setShowNetworkSelector] = useState(false);\n const [showExportModal, setShowExportModal] = useState(false);\n const [showSendModal, setShowSendModal] = useState(false);\n const [showReceiveModal, setShowReceiveModal] = useState(false);\n\n // dropdown\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const sdk = useSDK();\n const personalWallet = activeWallet?.getPersonalWallet();\n const personalWalletConfig = personalWallet && walletContext.getWalletConfig(personalWallet);\n const wrapperWalletConfig = wrapperWallet && walletContext.getWalletConfig(wrapperWallet);\n const disableSwitchChain = !!personalWallet;\n const isActuallyMetaMask = activeWallet && activeWallet instanceof MetaMaskWallet;\n const shortAddress = address ? shortenString(address) : \"\";\n const addressOrENS = ensQuery.data?.ens || shortAddress;\n const avatarUrl = ensQuery.data?.avatarUrl;\n useEffect(() => {\n if (activeWallet) {\n if (activeWallet.walletId === walletIds.embeddedWallet) {\n activeWallet.getLastUsedAuthStrategy().then(auth => {\n if (auth === \"apple\") {\n setOverrideWalletIconUrl(appleIconUri);\n } else if (auth === \"google\") {\n setOverrideWalletIconUrl(googleIconUri);\n } else if (auth === \"facebook\") {\n setOverrideWalletIconUrl(facebookIconUri);\n }\n });\n } else if (activeWallet.walletId === walletIds.smartWallet) {\n setOverrideWalletIconUrl(smartWalletIcon);\n } else {\n setOverrideWalletIconUrl(undefined);\n }\n } else {\n setOverrideWalletIconUrl(undefined);\n }\n }, [activeWallet]);\n const walletIconUrl = overrideWalletIconUrl || activeWalletConfig?.meta.iconURL || \"\";\n const avatarOrWalletIconUrl = avatarUrl || walletIconUrl;\n const trigger = props.detailsBtn ? /*#__PURE__*/jsx(\"div\", {\n children: /*#__PURE__*/jsx(props.detailsBtn, {})\n }) : /*#__PURE__*/jsxs(WalletInfoButton, {\n type: \"button\",\n className: `${TW_CONNECTED_WALLET} ${props.className || \"\"}`,\n style: props.style,\n \"data-test\": \"connected-wallet-details\",\n children: [/*#__PURE__*/jsx(Img, {\n width: iconSize.lg,\n height: iconSize.lg,\n src: avatarOrWalletIconUrl,\n className: `${TW_CONNECTED_WALLET}__wallet-icon`,\n style: {\n borderRadius: radius.sm\n }\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"xxs\",\n children: [activeWallet?.walletId === walletIds.localWallet ? /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"xs\",\n style: {\n minWidth: \"70px\"\n },\n children: locale.guest\n }) : addressOrENS ? /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"primaryText\",\n weight: 500,\n className: `${TW_CONNECTED_WALLET}__address`,\n children: addressOrENS\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.sm,\n width: \"88px\"\n }), balanceQuery.data ? /*#__PURE__*/jsxs(Text, {\n className: `${TW_CONNECTED_WALLET}__balance`,\n size: \"xs\",\n weight: 500,\n children: [Number(balanceQuery.data.displayValue).toFixed(3), \" \", balanceQuery.data.symbol]\n }) : /*#__PURE__*/jsx(Skeleton, {\n height: fontSize.xs,\n width: \"82px\"\n })]\n })]\n });\n let networkSwitcherButton = /*#__PURE__*/jsxs(MenuButton, {\n type: \"button\",\n disabled: disableSwitchChain,\n onClick: () => {\n setIsDropdownOpen(false);\n setShowNetworkSelector(true);\n },\n children: [/*#__PURE__*/jsx(\"div\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\"\n },\n children: /*#__PURE__*/jsx(ChainIcon, {\n chain: chain,\n size: iconSize.md,\n active: true\n })\n }), /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"primaryText\",\n multiline: true,\n children: chain?.name || `Unknown chain #${walletChainId}`\n }), /*#__PURE__*/jsx(StyledChevronRightIcon, {\n width: iconSize.sm,\n height: iconSize.sm,\n style: {\n flexShrink: 0,\n marginLeft: \"auto\"\n }\n })]\n });\n if (!disableSwitchChain) {\n networkSwitcherButton = /*#__PURE__*/jsx(ToolTip, {\n tip: locale.switchNetwork,\n children: networkSwitcherButton\n });\n }\n const content = /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"sm\",\n children: [/*#__PURE__*/jsx(Img, {\n width: iconSize.xl,\n height: iconSize.xl,\n src: avatarOrWalletIconUrl,\n alt: \"\",\n style: {\n borderRadius: radius.sm\n }\n }), /*#__PURE__*/jsxs(\"div\", {\n style: {\n flexGrow: 1\n },\n children: [/*#__PURE__*/jsxs(Container, {\n gap: \"xs\",\n flex: \"row\",\n center: \"y\",\n children: [/*#__PURE__*/jsxs(\"div\", {\n style: {\n display: \"flex\",\n gap: spacing.xs,\n alignItems: \"center\"\n },\n \"data-test\": \"connected-wallet-address\",\n \"data-address\": address,\n children: [/*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n weight: 500,\n children: addressOrENS\n }), /*#__PURE__*/jsx(IconButton, {\n style: {\n padding: \"3px\"\n },\n \"data-test\": \"copy-address\",\n children: /*#__PURE__*/jsx(CopyIcon, {\n text: address || \"\",\n tip: locale.copyAddress,\n side: \"bottom\"\n })\n })]\n }), /*#__PURE__*/jsx(ToolTip, {\n tip: locale.disconnectWallet,\n side: \"bottom\",\n align: \"end\",\n sideOffset: 10,\n children: /*#__PURE__*/jsx(DisconnectIconButton, {\n type: \"button\",\n onClick: () => {\n disconnect();\n props.onDisconnect();\n },\n children: /*#__PURE__*/jsx(ExitIcon, {\n size: iconSize.md\n })\n })\n })]\n }), /*#__PURE__*/jsxs(Text, {\n weight: 500,\n size: \"sm\",\n children: [\" \", balanceQuery.data ? Number(balanceQuery.data.displayValue).toFixed(3) : /*#__PURE__*/jsx(Skeleton, {\n height: \"1em\",\n width: \"100px\"\n }), \" \", balanceQuery.data?.symbol, \" \"]\n })]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(ConnectedToSmartWallet, {}), /*#__PURE__*/jsx(EmbeddedWalletEmail, {}), /*#__PURE__*/jsxs(Container, {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: spacing.sm\n },\n children: [/*#__PURE__*/jsxs(Button, {\n variant: \"outline\",\n style: {\n fontSize: fontSize.sm,\n display: \"flex\",\n gap: spacing.xs,\n alignItems: \"center\",\n padding: spacing.sm\n },\n onClick: () => {\n setShowSendModal(true);\n setIsDropdownOpen(false);\n },\n children: [/*#__PURE__*/jsx(PaperPlaneIcon, {\n width: iconSize.sm,\n height: iconSize.sm,\n style: {\n transform: \"translateY(-10%) rotate(-45deg) \"\n }\n }), locale.send]\n }), /*#__PURE__*/jsxs(Button, {\n variant: \"outline\",\n style: {\n fontSize: fontSize.sm,\n display: \"flex\",\n gap: spacing.xs,\n alignItems: \"center\",\n padding: spacing.sm\n },\n onClick: () => {\n setShowReceiveModal(true);\n setIsDropdownOpen(false);\n },\n children: [/*#__PURE__*/jsx(PinBottomIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), \" \", locale.receive, \" \"]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(DropdownLabel, {\n children: locale.currentNetwork\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), networkSwitcherButton]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"sm\",\n children: [personalWallet && personalWalletConfig && !props.hideSwitchToPersonalWallet && /*#__PURE__*/jsx(WalletSwitcher, {\n wallet: personalWallet,\n name: locale.personalWallet,\n onSwitch: () => {\n setWrapperWallet(activeWallet);\n }\n }), wrapperWalletConfig && wrapperWallet && /*#__PURE__*/jsx(WalletSwitcher, {\n name: wrapperWallet.walletId === walletIds.smartWallet ? locale.smartWallet : wrapperWalletConfig.meta.name,\n wallet: wrapperWallet,\n onSwitch: () => {\n setWrapperWallet(undefined);\n }\n }), isActuallyMetaMask && activeWalletConfig && activeWalletConfig.isInstalled && activeWalletConfig.isInstalled() && !isMobile() && /*#__PURE__*/jsxs(MenuButton, {\n type: \"button\",\n onClick: () => {\n activeWallet.switchAccount();\n setIsDropdownOpen(false);\n },\n style: {\n fontSize: fontSize.sm\n },\n children: [/*#__PURE__*/jsx(Container, {\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(ShuffleIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })\n }), locale.switchAccount]\n }), !props.hideTestnetFaucet && (chain?.faucets && chain.faucets.length > 0 || chain?.chainId === Localhost.chainId) && /*#__PURE__*/jsxs(MenuLink, {\n href: chain?.faucets ? chain.faucets[0] : \"#\",\n target: \"_blank\",\n as: \"a\",\n onClick: async e => {\n if (chain.chainId === Localhost.chainId) {\n e.preventDefault();\n setIsDropdownOpen(false);\n await sdk?.wallet.requestFunds(10);\n await balanceQuery.refetch();\n }\n },\n style: {\n textDecoration: \"none\",\n color: \"inherit\",\n fontSize: fontSize.sm\n },\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(FundsIcon, {\n size: iconSize.sm\n })\n }), locale.requestTestnetFunds]\n }), chain?.explorers && chain.explorers[0]?.url && /*#__PURE__*/jsxs(MenuLink, {\n href: chain.explorers[0].url + \"/address/\" + address,\n target: \"_blank\",\n as: \"a\",\n style: {\n textDecoration: \"none\",\n color: \"inherit\",\n fontSize: fontSize.sm\n },\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(TextAlignLeftIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })\n }), locale.transactionHistory]\n }), activeWallet?.walletId === walletIds.localWallet && /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsxs(MenuButton, {\n onClick: () => {\n setShowExportModal(true);\n setIsDropdownOpen(false);\n },\n style: {\n fontSize: fontSize.sm\n },\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(PinBottomIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })\n }), locale.backupWallet, \" \"]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Text, {\n size: \"xs\",\n center: true,\n multiline: true,\n color: \"danger\",\n balance: true,\n children: locale.guestWalletWarning\n })]\n })]\n })]\n });\n return /*#__PURE__*/jsxs(Fragment, {\n children: [isMobile() ? /*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n trigger: trigger,\n open: isDropdownOpen,\n setOpen: setIsDropdownOpen,\n hideCloseIcon: true,\n children: /*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: content\n })\n }) : /*#__PURE__*/jsxs(DropdownMenu.Root, {\n open: isDropdownOpen,\n onOpenChange: setIsDropdownOpen,\n children: [/*#__PURE__*/jsx(DropdownMenu.Trigger, {\n asChild: true,\n children: trigger\n }), /*#__PURE__*/jsx(DropdownMenu.Portal, {\n children: /*#__PURE__*/jsx(DropDownContent, {\n asChild: true,\n side: props.dropdownPosition?.side || \"bottom\",\n align: props.dropdownPosition?.align || \"end\",\n sideOffset: 10,\n children: content\n })\n })]\n }), /*#__PURE__*/jsx(NetworkSelector, {\n open: showNetworkSelector,\n theme: props.theme,\n chains: chains,\n ...props.networkSelector,\n onClose: () => setShowNetworkSelector(false)\n }), /*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n open: showExportModal,\n setOpen: setShowExportModal,\n children: /*#__PURE__*/jsx(ExportLocalWallet, {\n modalSize: \"compact\",\n localWalletConfig: activeWalletConfig,\n onExport: () => {\n setShowExportModal(false);\n }\n })\n }), /*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n open: showSendModal,\n setOpen: setShowSendModal,\n children: /*#__PURE__*/jsx(SendFunds, {\n supportedTokens: props.supportedTokens\n })\n }), /*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n open: showReceiveModal,\n setOpen: setShowReceiveModal,\n children: /*#__PURE__*/jsx(ReceiveFunds, {\n iconUrl: walletIconUrl\n })\n })]\n });\n};\nconst dropdownContentFade = keyframes`\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n`;\nconst DropDownContent = /* @__PURE__ */(() => styled(DropdownMenu.Content)(() => {\n const theme = useCustomTheme();\n return {\n width: \"360px\",\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\n borderRadius: radius.lg,\n padding: spacing.lg,\n animation: `${dropdownContentFade} 400ms cubic-bezier(0.16, 1, 0.3, 1)`,\n willChange: \"transform, opacity\",\n border: `1px solid ${theme.colors.borderColor}`,\n backgroundColor: theme.colors.dropdownBg,\n \"--bg\": theme.colors.dropdownBg,\n zIndex: 1000000,\n lineHeight: \"normal\"\n };\n}))();\nconst WalletInfoButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n background: theme.colors.connectedButtonBg,\n border: `1px solid ${theme.colors.borderColor}`,\n padding: `${spacing.sm} ${spacing.sm}`,\n borderRadius: radius.lg,\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n minWidth: \"180px\",\n gap: spacing.sm,\n boxSizing: \"border-box\",\n WebkitTapHighlightColor: \"transparent\",\n lineHeight: \"normal\",\n animation: `${fadeInAnimation} 300ms ease`,\n [media.mobile]: {\n gap: spacing.sm,\n padding: `${spacing.xs} ${spacing.sm}`,\n img: {\n width: `${iconSize.md}px`,\n height: `${iconSize.md}px`\n }\n },\n \"&:hover\": {\n transition: \"background 250ms ease\",\n background: theme.colors.connectedButtonBgHover\n }\n };\n});\nconst DropdownLabel = /* @__PURE__ */StyledLabel(() => {\n const theme = useCustomTheme();\n return {\n fontSize: fontSize.sm,\n color: theme.colors.secondaryText,\n fontWeight: 500\n };\n});\nconst MenuButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n padding: `${spacing.sm} ${spacing.sm}`,\n borderRadius: radius.md,\n backgroundColor: \"transparent\",\n border: `1px solid ${theme.colors.borderColor}`,\n boxSizing: \"border-box\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n cursor: \"pointer\",\n fontSize: fontSize.md,\n fontWeight: 500,\n color: `${theme.colors.primaryText} !important`,\n gap: spacing.sm,\n WebkitTapHighlightColor: \"transparent\",\n lineHeight: 1.3,\n \"&:not([disabled]):hover\": {\n transition: \"box-shadow 250ms ease, border-color 250ms ease\",\n border: `1px solid ${theme.colors.accentText}`,\n boxShadow: `0 0 0 1px ${theme.colors.accentText}`\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\",\n svg: {\n display: \"none\"\n }\n },\n \"&[disabled]:hover\": {\n transition: \"box-shadow 250ms ease, border-color 250ms ease\",\n border: `1px solid ${theme.colors.danger}`,\n boxShadow: `0 0 0 1px ${theme.colors.danger}`\n }\n };\n});\nconst MenuLink = /* @__PURE__ */(() => MenuButton.withComponent(\"a\"))();\nconst StyledChevronRightIcon = /* @__PURE__ */styled( ChevronRightIcon)(() => {\n const theme = useCustomTheme();\n return {\n color: theme.colors.secondaryText\n };\n});\nconst DisconnectIconButton = /* @__PURE__ */styled(IconButton)(() => {\n const theme = useCustomTheme();\n return {\n marginRight: `-${spacing.xxs}`,\n marginLeft: \"auto\",\n color: theme.colors.secondaryText,\n \"&:hover\": {\n color: theme.colors.danger,\n background: \"none\"\n }\n };\n});\nfunction WalletSwitcher(_ref) {\n let {\n wallet,\n onSwitch,\n name\n } = _ref;\n const walletContext = useWalletContext();\n const locale = useTWLocale().connectWallet;\n return /*#__PURE__*/jsxs(MenuButton, {\n type: \"button\",\n onClick: () => {\n walletContext.setConnectedWallet(wallet);\n onSwitch();\n },\n style: {\n fontSize: fontSize.sm\n },\n children: [/*#__PURE__*/jsx(Container, {\n color: \"secondaryText\",\n children: /*#__PURE__*/jsx(EnterIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })\n }), locale.switchTo, \" \", name]\n });\n}\nconst ActiveDot = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.success\n };\n});\nfunction ConnectedToSmartWallet() {\n const activeWallet = useWallet();\n const chain = useChain();\n const address = useAddress();\n const locale = useTWLocale().connectWallet;\n const [isSmartWalletDeployed, setIsSmartWalletDeployed] = useState(false);\n useEffect(() => {\n if (activeWallet && activeWallet.walletId === walletIds.smartWallet) {\n const smartWallet = activeWallet;\n smartWallet.isDeployed().then(isDeployed => {\n setIsSmartWalletDeployed(isDeployed);\n });\n } else {\n setIsSmartWalletDeployed(false);\n }\n }, [activeWallet]);\n const content = /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"xs\",\n center: \"y\",\n style: {\n width: \"100%\",\n justifyContent: \"space-between\"\n },\n children: [/*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"xs\",\n center: \"y\",\n children: [/*#__PURE__*/jsx(ActiveDot, {}), locale.connectedToSmartWallet]\n }), isSmartWalletDeployed && /*#__PURE__*/jsx(ChevronRightIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })]\n });\n if (chain && address && activeWallet?.walletId === walletIds.smartWallet) {\n return /*#__PURE__*/jsxs(Fragment, {\n children: [isSmartWalletDeployed ? /*#__PURE__*/jsx(Link, {\n color: \"secondaryText\",\n hoverColor: \"primaryText\",\n href: `https://thirdweb.com/${chain.slug}/${address}/account`,\n target: \"_blank\",\n size: \"sm\",\n children: content\n }) : /*#__PURE__*/jsxs(Text, {\n size: \"sm\",\n children: [\" \", content]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n })]\n });\n }\n return null;\n}\nfunction EmbeddedWalletEmail() {\n const emailQuery = useEmbeddedWalletUserEmail();\n if (emailQuery.data) {\n return /*#__PURE__*/jsx(Container, {\n style: {\n paddingBottom: spacing.md\n },\n children: /*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n children: emailQuery.data\n })\n });\n }\n return undefined;\n}\n\nconst LockIcon = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 16 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/jsx(\"path\", {\n d: \"M2 21C1.45 21 0.979333 20.8043 0.588 20.413C0.196 20.021 0 19.55 0 19V9C0 8.45 0.196 7.979 0.588 7.587C0.979333 7.19567 1.45 7 2 7H3V5C3 3.61667 3.48767 2.43733 4.463 1.462C5.43767 0.487333 6.61667 0 8 0C9.38333 0 10.5627 0.487333 11.538 1.462C12.5127 2.43733 13 3.61667 13 5V7H14C14.55 7 15.021 7.19567 15.413 7.587C15.8043 7.979 16 8.45 16 9V19C16 19.55 15.8043 20.021 15.413 20.413C15.021 20.8043 14.55 21 14 21H2ZM8 16C8.55 16 9.021 15.8043 9.413 15.413C9.80433 15.021 10 14.55 10 14C10 13.45 9.80433 12.979 9.413 12.587C9.021 12.1957 8.55 12 8 12C7.45 12 6.97933 12.1957 6.588 12.587C6.196 12.979 6 13.45 6 14C6 14.55 6.196 15.021 6.588 15.413C6.97933 15.8043 7.45 16 8 16ZM5 7H11V5C11 4.16667 10.7083 3.45833 10.125 2.875C9.54167 2.29167 8.83333 2 8 2C7.16667 2 6.45833 2.29167 5.875 2.875C5.29167 3.45833 5 4.16667 5 5V7Z\",\n fill: \"currentColor\"\n })\n });\n};\n\nconst SignatureScreen = _ref => {\n let {\n onDone,\n modalSize,\n termsOfServiceUrl,\n privacyPolicyUrl\n } = _ref;\n const locale = useTWLocale().connectWallet.signatureScreen;\n const walletConfig = useWalletConfig();\n const wallet = useWallet();\n const {\n auth\n } = useContext(ModalConfigCtx);\n const [status, setStatus] = useState(\"idle\");\n const {\n login\n } = useLogin();\n const [tryId, setTryId] = useState(0);\n const isSafeWallet = wallet?.walletId === walletIds.safe;\n const chainId = useChainId();\n const address = useAddress();\n const safeChainSlug = chainId && chainId in safeChainIdToSlug ? safeChainIdToSlug[chainId] : undefined;\n const signIn = useCallback(async () => {\n try {\n setStatus(\"signing\");\n await wait(1000);\n const token = await login();\n auth?.onLogin?.(token);\n onDone();\n } catch (err) {\n setStatus(\"failed\");\n console.error(\"failed to log in\", err);\n }\n }, [auth, login, onDone]);\n\n // if wallet is not connected - just show spinner\n if (!walletConfig || !wallet) {\n return /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n style: {\n minHeight: \"300px\"\n },\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"xl\",\n color: \"accentText\"\n })\n });\n }\n if (walletConfig?.isHeadless) {\n return /*#__PURE__*/jsx(HeadlessSignIn, {\n signIn: signIn,\n status: status\n });\n }\n const handleRetry = () => {\n signIn();\n setTryId(tryId + 1);\n };\n return /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n fullHeight: true,\n flex: \"column\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n style: {\n paddingBottom: 0\n },\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: locale.instructionScreen.title\n })\n }), /*#__PURE__*/jsx(Container, {\n style: {\n paddingTop: 0,\n paddingBottom: spacing.xl\n },\n flex: \"column\",\n px: modalSize === \"compact\" ? \"lg\" : \"xxl\",\n center: \"y\",\n expand: true,\n children: status === \"idle\" ? /*#__PURE__*/jsxs(Fragment, {\n children: [walletConfig && /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n animate: \"fadein\",\n py: \"3xl\",\n children: /*#__PURE__*/jsx(PulsatingContainer, {\n children: /*#__PURE__*/jsx(Img, {\n src: walletConfig.meta.iconURL,\n width: \"80\",\n height: \"80\"\n })\n })\n }), /*#__PURE__*/jsx(Text, {\n center: true,\n multiline: true,\n balance: true,\n children: locale.instructionScreen.instruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Button, {\n fullWidth: true,\n variant: \"accent\",\n onClick: signIn,\n style: {\n gap: spacing.xs,\n alignItems: \"center\",\n padding: spacing.md\n },\n children: locale.instructionScreen.signInButton\n })]\n }) : /*#__PURE__*/jsxs(Fragment, {\n children: [walletConfig && /*#__PURE__*/jsx(Container, {\n py: \"3xl\",\n children: /*#__PURE__*/jsx(WalletLogoSpinner, {\n error: status === \"failed\",\n iconUrl: walletConfig.meta.iconURL\n }, String(tryId))\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"md\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Text, {\n size: \"lg\",\n center: true,\n color: \"primaryText\",\n children: status === \"failed\" ? locale.signingScreen.failedToSignIn : locale.signingScreen.inProgress\n }), status === \"signing\" && /*#__PURE__*/jsx(Text, {\n center: true,\n multiline: true,\n balance: true,\n children: isSafeWallet ? /*#__PURE__*/jsx(SafeWalletInstruction, {}) : /*#__PURE__*/jsx(Fragment, {\n children: locale.signingScreen.prompt\n })\n }), isSafeWallet && status === \"signing\" && /*#__PURE__*/jsxs(Container, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Button, {\n fullWidth: true,\n variant: \"accent\",\n onClick: () => {\n window.open(`https://app.safe.global/transactions/queue?safe=${safeChainSlug}:${address}`, \"_blank\");\n },\n style: {\n gap: spacing.xs,\n alignItems: \"center\"\n },\n children: [\" \", locale.signingScreen.approveTransactionInSafe, /*#__PURE__*/jsx(ExternalLinkIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n })]\n })]\n }), status === \"failed\" && /*#__PURE__*/jsxs(Container, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Button, {\n fullWidth: true,\n variant: \"accent\",\n onClick: handleRetry,\n style: {\n gap: spacing.xs,\n alignItems: \"center\",\n padding: spacing.md\n },\n children: [/*#__PURE__*/jsx(ReloadIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), locale.signingScreen.tryAgain]\n })]\n })]\n }, status)]\n })\n }), (termsOfServiceUrl || privacyPolicyUrl) && /*#__PURE__*/jsx(Container, {\n p: \"md\",\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(TOS, {\n termsOfServiceUrl: termsOfServiceUrl,\n privacyPolicyUrl: privacyPolicyUrl\n })\n })]\n });\n};\nfunction SafeWalletInstruction() {\n const locale = useTWLocale().connectWallet.signatureScreen.signingScreen;\n const {\n getWalletConfig\n } = useWalletContext();\n const wallet = useWallet();\n const personalWallet = wallet?.getPersonalWallet();\n const isSafePersonalWalletHeadless = personalWallet && getWalletConfig(personalWallet)?.isHeadless;\n return /*#__PURE__*/jsx(Fragment, {\n children: isSafePersonalWalletHeadless ? /*#__PURE__*/jsx(Fragment, {\n children: locale.approveTransactionInSafe\n }) : /*#__PURE__*/jsx(Fragment, {\n children: locale.promptForSafe\n })\n });\n}\nfunction HeadlessSignIn(_ref2) {\n let {\n signIn,\n status\n } = _ref2;\n const locale = useTWLocale().connectWallet.signatureScreen.signingScreen;\n const mounted = useRef(false);\n useEffect(() => {\n if (mounted.current) {\n return;\n }\n mounted.current = true;\n signIn();\n }, [signIn]);\n return /*#__PURE__*/jsxs(Container, {\n p: \"lg\",\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: locale.title\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"row\",\n center: \"both\",\n style: {\n minHeight: \"250px\"\n },\n children: status === \"failed\" ? /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"lg\",\n color: \"danger\",\n center: \"both\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(CrossCircledIcon, {\n width: iconSize.xl,\n height: iconSize.xl\n }), /*#__PURE__*/jsxs(Text, {\n color: \"danger\",\n children: [\" \", locale.failedToSignIn, \" \"]\n })]\n }) : /*#__PURE__*/jsx(Spinner, {\n size: \"xl\",\n color: \"accentText\"\n })\n })]\n });\n}\nconst plusAnimation = keyframes`\n0% {\n transform: scale(0.9);\n}\n100% {\n opacity: 0;\n transform: scale(1.4);\n}\n`;\nconst PulsatingContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n position: \"relative\",\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n background: theme.colors.accentText,\n animation: `${plusAnimation} 2s cubic-bezier(0.175, 0.885, 0.32, 1.1) infinite`,\n zIndex: -1,\n borderRadius: radius.xl\n }\n };\n});\n\nconst TW_CONNECT_WALLET = \"tw-connect-wallet\";\n\n/**\n * A component that allows the user to connect their wallet.\n *\n * it renders a button which when clicked opens a modal to allow users to connect to wallets specified in the `ThirdwebProvider`'s supportedWallets prop.\n *\n * This component must be descendant of `ThirdwebProvider`\n */\nfunction ConnectWallet(props) {\n const activeWallet = useWallet();\n const contextTheme = useCustomTheme();\n const theme = props.theme || contextTheme || \"dark\";\n const connectionStatus = useConnectionStatus();\n const locale = useTWLocale();\n const walletConfigs = useWallets();\n const isLoading = connectionStatus === \"connecting\" || connectionStatus === \"unknown\";\n const btnTitle = props.btnTitle || locale.connectWallet.defaultButtonTitle;\n const setIsWalletModalOpen = useSetIsWalletModalOpen();\n const setModalConfig = useContext(SetModalConfigCtx);\n const authConfig = useThirdwebAuthContext();\n const {\n logout\n } = useLogout();\n const isNetworkMismatch = useNetworkMismatch();\n const {\n activeChainSetExplicitly\n } = useWalletContext();\n const [showSignatureModal, setShowSignatureModal] = useState(false);\n const address = useAddress();\n const {\n user\n } = useUser();\n const disconnect = useDisconnect();\n const connectedButNotSignedIn = !!authConfig?.authUrl && !!address && (!user?.address || address !== user?.address);\n const requiresSignIn = props.auth?.loginOptional ? false : connectedButNotSignedIn;\n const supportedTokens = useMemo(() => {\n if (!props.supportedTokens) {\n return defaultTokens;\n }\n const tokens = {\n ...defaultTokens\n };\n for (const k in props.supportedTokens) {\n const key = Number(k);\n const tokenList = props.supportedTokens[key];\n if (tokenList) {\n tokens[key] = tokenList;\n }\n }\n return tokens;\n }, [props.supportedTokens]);\n\n // if wallet gets disconnected, close the signature modal\n useEffect(() => {\n if (!activeWallet) {\n setShowSignatureModal(false);\n }\n }, [activeWallet]);\n return /*#__PURE__*/jsxs(CustomThemeProvider, {\n theme: theme,\n children: [/*#__PURE__*/jsx(Modal, {\n size: \"compact\",\n open: showSignatureModal,\n setOpen: value => {\n if (!value) {\n setShowSignatureModal(false);\n onModalUnmount(() => {\n disconnect();\n });\n }\n },\n children: /*#__PURE__*/jsx(SignatureScreen, {\n modalSize: \"compact\",\n termsOfServiceUrl: props.termsOfServiceUrl,\n privacyPolicyUrl: props.privacyPolicyUrl,\n onDone: () => setShowSignatureModal(false)\n })\n }), (() => {\n // wallet is not connected\n if (!activeWallet) {\n // Connect Wallet button\n return /*#__PURE__*/jsx(AnimatedButton, {\n disabled: isLoading,\n className: `${props.className || \"\"} ${TW_CONNECT_WALLET}`,\n \"data-theme\": theme,\n \"data-is-loading\": isLoading,\n variant: \"primary\",\n type: \"button\",\n style: {\n minWidth: \"140px\",\n ...props.style\n },\n \"aria-label\": connectionStatus === \"connecting\" ? locale.connectWallet.connecting : btnTitle,\n onClick: () => {\n let modalSize = props.modalSize || \"wide\";\n if (isMobile() || walletConfigs.length === 1) {\n modalSize = \"compact\";\n }\n setModalConfig({\n title: props.modalTitle || locale.connectWallet.defaultModalTitle,\n theme,\n data: undefined,\n modalSize,\n termsOfServiceUrl: props.termsOfServiceUrl,\n privacyPolicyUrl: props.privacyPolicyUrl,\n welcomeScreen: props.welcomeScreen,\n titleIconUrl: props.modalTitleIconUrl,\n auth: props.auth\n });\n setIsWalletModalOpen(true);\n },\n \"data-test\": \"connect-wallet-button\",\n children: isLoading ? /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"primaryButtonText\"\n }) : btnTitle\n });\n }\n\n // switch network button\n if (props.switchToActiveChain && isNetworkMismatch && activeChainSetExplicitly) {\n return /*#__PURE__*/jsx(SwitchNetworkButton, {\n style: props.style,\n className: props.className\n });\n }\n\n // sign in button\n else if (requiresSignIn) {\n return /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n onClick: () => {\n if (activeWallet) {\n setShowSignatureModal(true);\n }\n },\n \"data-theme\": theme,\n className: `${TW_CONNECT_WALLET}--sign-in ${props.className || \"\"}`,\n style: {\n minWidth: \"140px\",\n ...props.style\n },\n \"data-test\": \"sign-in-button\",\n children: /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n center: \"y\",\n gap: \"sm\",\n children: [/*#__PURE__*/jsx(LockIcon, {\n size: iconSize.sm\n }), /*#__PURE__*/jsxs(\"span\", {\n children: [\" \", locale.connectWallet.signIn, \" \"]\n })]\n })\n });\n }\n\n // wallet details button\n return /*#__PURE__*/jsx(ConnectedWalletDetails, {\n theme: theme,\n networkSelector: props.networkSelector,\n dropdownPosition: props.dropdownPosition,\n className: props.className,\n style: props.style,\n detailsBtn: props.detailsBtn,\n hideTestnetFaucet: props.hideTestnetFaucet,\n supportedTokens: supportedTokens,\n displayBalanceToken: props.displayBalanceToken,\n onDisconnect: () => {\n if (authConfig?.authUrl) {\n logout();\n props?.auth?.onLogout?.();\n }\n },\n hideSwitchToPersonalWallet: props.hideSwitchToPersonalWallet\n });\n })()]\n });\n}\nfunction SwitchNetworkButton(props) {\n const {\n activeChain\n } = useWalletContext();\n const switchChain = useSwitchChain();\n const [switching, setSwitching] = useState(false);\n const locale = useTWLocale();\n return /*#__PURE__*/jsx(AnimatedButton, {\n className: `${TW_CONNECT_WALLET}--switch-network ${props.className || \"\"}`,\n variant: \"primary\",\n type: \"button\",\n \"data-is-loading\": switching,\n \"data-test\": \"switch-network-button\",\n disabled: switching,\n onClick: async () => {\n setSwitching(true);\n try {\n await switchChain(activeChain.chainId);\n } catch {\n // ignore\n }\n setSwitching(false);\n },\n style: {\n minWidth: \"140px\",\n ...props.style\n },\n \"aria-label\": switching ? locale.connectWallet.switchingNetwork : undefined,\n children: switching ? /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"primaryButtonText\"\n }) : locale.connectWallet.switchNetwork\n });\n}\nconst AnimatedButton = /* @__PURE__ */styled(Button)({\n animation: `${fadeInAnimation} 300ms ease`\n});\n\nconst GlobeIcon = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 129 131\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/jsx(\"path\", {\n d: \"M59.7178 0C62.7511 0 65.788 0 68.8212 0C71.4429 0.423181 74.1011 0.679982 76.6755 1.29848C103.785 7.78725 120.277 24.7723 126.755 51.5485C127.428 54.3335 127.712 57.2089 128.175 60.0446V69.8103C127.803 72.1722 127.472 74.5449 127.057 76.8995C122.582 102.298 103.177 122.722 77.9136 128.56C74.8003 129.28 71.6104 129.67 68.457 130.213H59.3537C57.3838 129.913 55.4065 129.663 53.4475 129.305C27.0442 124.491 6.91125 104.974 1.44197 78.8526C0.841148 75.9808 0.473373 73.0656 0 70.1684C0 66.9132 0 63.6579 0 60.4027C0.371416 58.0408 0.706418 55.6718 1.11425 53.3135C5.52026 28.0493 24.9905 7.50151 50.0902 1.70719C53.2618 0.97657 56.5062 0.560624 59.7178 0ZM96.8813 10.3119C96.8959 10.2865 96.9104 10.2576 96.9286 10.2323C96.8886 10.2504 96.8522 10.2648 96.8121 10.2829C96.8085 10.2287 96.8048 10.178 96.8012 10.1238C96.8303 10.1853 96.8558 10.2504 96.8849 10.3119H96.8813ZM25.1762 115.709C25.2089 115.716 25.2454 115.72 25.2781 115.727C25.249 115.749 25.2235 115.771 25.1944 115.792C25.2053 115.767 25.2162 115.742 25.2271 115.716C25.1252 115.525 25.0196 115.333 24.9176 115.141C22.7328 113.087 21.127 110.421 18.3305 109.014C18.2977 109.032 18.2613 109.05 18.2285 109.065C18.2758 109.058 18.3232 109.054 18.3705 109.047C18.4397 109.365 18.3997 109.795 18.5926 109.984C20.3587 111.687 22.1502 113.362 23.9745 115.004C24.1675 115.177 24.5972 115.083 24.9176 115.116C25.0014 115.311 25.0851 115.51 25.1725 115.706L25.1762 115.709ZM27.594 12.4567L27.2262 12.9197C27.1898 13.1439 27.1571 13.3682 27.1206 13.5924C26.8038 13.5924 26.4871 13.596 26.1703 13.5996C26.0683 13.813 25.9663 14.0264 25.8607 14.2362L25.7661 14.2652L25.8243 14.1856C25.9336 13.9686 26.0428 13.7479 26.1557 13.5309C26.4688 13.5418 26.7856 13.5526 27.0988 13.5671C27.1243 13.332 27.1498 13.0969 27.1753 12.8618C27.2954 12.7352 27.412 12.6122 27.5321 12.4856C27.543 12.511 27.554 12.5399 27.5649 12.5652C27.5758 12.529 27.5831 12.4893 27.594 12.4531V12.4567ZM106.589 111.926C106.738 111.868 106.891 111.806 107.041 111.749C107.616 111.354 108.286 111.043 108.756 110.548C110.281 108.924 111.771 107.26 113.205 105.553C113.919 104.703 114.483 103.726 115.113 102.808C113.981 103.448 112.849 104.084 111.716 104.725C111.669 104.753 111.632 104.811 111.6 104.862C110.088 107.166 108.577 109.474 107.07 111.778L106.556 111.958L106.625 112.06L106.589 111.926ZM79.6906 2.95141C79.6906 2.92971 79.6906 2.90801 79.6906 2.88631C79.6724 2.89716 79.6505 2.91163 79.6323 2.92248C79.8253 2.9478 80.0146 2.97311 80.2076 2.99843C80.0328 2.98397 79.8617 2.96588 79.6869 2.95141H79.6906ZM95.1662 8.90488C95.1116 8.90488 95.0533 8.89764 94.9987 8.90849C94.9732 8.91211 94.955 8.94828 94.9368 8.96998C95.0242 8.93381 95.1116 8.89764 95.199 8.86147C95.301 9.07125 95.3956 9.28827 95.5194 9.49082C95.5376 9.51975 95.6796 9.47273 95.7634 9.45827C95.5668 9.2738 95.3665 9.08934 95.1699 8.90126L95.1662 8.90488ZM86.7729 124.603C85.8772 124.921 84.9778 125.229 84.0893 125.565C83.94 125.623 83.8417 125.811 83.7215 125.941C83.8562 125.988 84.031 126.111 84.1184 126.068C85.0069 125.605 85.8808 125.117 86.7584 124.636C86.8021 124.621 86.8494 124.592 86.8895 124.596C86.9259 124.6 86.9623 124.643 86.9951 124.665C86.9186 124.643 86.8458 124.621 86.7693 124.603H86.7729ZM82.2431 4.35478L82.2941 4.31138V4.32223C82.5672 4.5935 82.793 5.00583 83.1207 5.11072C85.8189 5.99325 88.5317 6.82153 91.2445 7.6498C91.4193 7.70406 91.6341 7.64257 91.8271 7.63172C91.6596 7.46896 91.514 7.25917 91.3173 7.14705C88.4844 5.599 85.4912 4.56456 82.2395 4.35116L82.2431 4.35478ZM29.9609 10.9991C30.2995 11.0135 30.6928 11.1438 30.9732 11.0208C33.8389 9.75847 36.6937 8.46361 39.5376 7.15428C39.9054 6.98429 40.2331 6.70217 40.5244 6.41643C40.7319 6.21388 40.8412 5.91729 40.9941 5.66049C40.6664 5.68943 40.2913 5.62432 40.0219 5.76177C36.6573 7.49066 33.3109 9.2521 29.9609 11.0027C29.9864 11.0461 30.0119 11.0895 30.041 11.1293C30.0701 11.1655 30.1102 11.1944 30.1466 11.2233L29.9609 10.9991ZM8.93219 95.5918C8.89213 95.628 8.84844 95.6677 8.80838 95.7039C8.85208 95.6641 8.89942 95.6243 8.94311 95.5845C8.99773 96.0801 8.91398 96.6443 9.12882 97.0566C11.7397 102.034 14.7984 106.641 19.9509 109.43C19.9436 109.437 19.9363 109.445 19.9327 109.455C19.7579 108.913 19.6413 108.345 19.401 107.828C18.4943 105.875 17.6204 103.903 16.5899 102.015C16.1347 101.18 15.4283 100.417 14.6746 99.82C12.8102 98.3479 10.8512 96.9915 8.93219 95.5918ZM23.0533 112.295C23.097 112.248 23.1407 112.201 23.1844 112.15C23.1443 112.19 23.1006 112.23 23.0606 112.269C23.279 112.472 23.5449 112.646 23.7087 112.888C27.1206 117.861 32.1275 120.35 37.7861 121.818C38.1648 121.916 38.5763 121.887 38.9732 121.919C38.813 121.608 38.6709 121.283 38.4925 120.983C37.7861 119.789 37.1525 118.541 36.3259 117.434C35.8344 116.776 35.1206 116.125 34.3669 115.843C31.1917 114.657 27.9691 113.597 24.7501 112.53C24.2149 112.353 23.6177 112.367 23.0496 112.291L23.0533 112.295ZM69.8298 86.3252C73.0378 86.3252 75.4666 86.2927 77.8917 86.3397C78.9514 86.3614 79.4029 86.025 79.4284 84.9074C79.5049 81.4134 79.6432 77.9195 79.818 74.4291C79.8763 73.25 79.4757 72.9353 78.2777 72.8919C71.4903 72.6605 64.7065 72.353 57.9227 71.9986C56.8048 71.9407 56.2804 72.1107 56.204 73.3477C55.9855 76.8344 55.7015 80.3211 55.341 83.797C55.2135 85.0267 55.665 85.3595 56.8048 85.4282C61.4074 85.7067 66.0028 86.0539 69.8262 86.3216L69.8298 86.3252ZM69.9245 72.2192C72.2076 72.2192 74.9969 72.1505 77.7789 72.2481C79.2937 72.3024 79.9527 71.9371 79.869 70.2697C79.7015 66.9638 79.6796 63.6507 79.7088 60.3412C79.7197 58.8836 79.2536 58.4315 77.7315 58.3881C71.6177 58.2217 65.5076 57.9251 59.4011 57.5779C58.1994 57.5092 57.828 57.8274 57.7224 58.9776C57.3838 62.6307 56.9832 66.2838 56.528 69.9261C56.3897 71.0401 56.8776 71.2571 57.8171 71.3222C61.6842 71.5862 65.5513 71.8937 69.9281 72.2228L69.9245 72.2192ZM55.3956 74.3749C55.4247 74.0892 55.432 73.5394 55.5412 73.0149C55.7415 72.0564 55.2936 71.7852 54.4088 71.6333C47.8471 70.5048 41.2927 69.3401 34.742 68.1429C33.9481 67.9982 33.4748 68.0019 33.3655 68.9459C32.9249 72.6496 32.4115 76.3461 32.0401 80.0571C32 80.473 32.6118 81.2905 33.0269 81.3664C39.7488 82.6396 46.4852 83.8151 53.2181 85.0267C54.2267 85.2076 54.6091 84.8531 54.671 83.8115C54.853 80.7479 55.1334 77.688 55.3956 74.3749ZM54.143 71.2065C55.4757 71.3511 55.7634 70.7073 55.8726 69.5788C56.2222 65.9294 56.6264 62.2835 57.0888 58.6449C57.2272 57.5489 56.7429 57.3645 55.8253 57.2089C49.8644 56.1926 43.9108 55.1437 37.9718 54.0297C37.0178 53.8488 36.6464 54.0731 36.4461 54.9484C35.6122 58.5798 34.7638 62.2075 33.9008 65.8317C33.6823 66.754 33.8753 67.2966 34.9131 67.4955C41.3255 68.7144 47.7342 69.9659 54.1466 71.2101L54.143 71.2065ZM68.519 99.3606C71.5449 99.3606 73.97 99.3172 76.3915 99.3787C77.564 99.4077 78.1612 99.0894 78.2595 97.8198C78.5035 94.702 78.8203 91.5879 79.1808 88.4809C79.3119 87.3524 78.9514 87.0558 77.8262 87.0161C70.8093 86.7629 63.7925 86.4554 56.7793 86.0901C55.6286 86.0286 55.1334 86.2565 55.0897 87.4646C54.9805 90.5896 54.813 93.7146 54.5981 96.836C54.518 97.9753 54.8676 98.4094 56.0656 98.4781C60.417 98.7277 64.7611 99.0857 68.5153 99.3606H68.519ZM80.5244 79.623H80.4261C80.3278 81.3664 80.2659 83.1134 80.1202 84.8531C80.0365 85.8442 80.3023 86.318 81.3947 86.2095C87.7816 85.5621 94.1721 84.9616 100.555 84.2636C101.007 84.2129 101.728 83.4968 101.739 83.0772C101.826 79.3482 101.779 75.6155 101.772 71.8864C101.772 71.1486 101.488 70.852 100.654 70.9388C94.3287 71.5935 88.0001 72.2083 81.6678 72.8015C80.8339 72.8811 80.4989 73.1849 80.5171 74.0277C80.5572 75.894 80.5281 77.7603 80.5281 79.6267L80.5244 79.623ZM80.3788 65.1156C80.437 65.1156 80.4953 65.1156 80.5536 65.1156C80.5536 66.9819 80.5936 68.8518 80.5353 70.7182C80.5062 71.6911 80.7393 72.2011 81.8389 72.089C88.0474 71.4633 94.2559 70.852 100.468 70.2624C101.418 70.172 101.699 69.7271 101.579 68.8374C101.058 65.0794 100.559 61.3178 100.057 57.5598C99.9473 56.7424 99.5795 56.5217 98.7056 56.6158C93.0433 57.2234 87.3738 57.7768 81.7006 58.2868C80.7138 58.3772 80.3096 58.6557 80.3533 59.6938C80.4297 61.4986 80.3751 63.3071 80.3751 65.1119L80.3788 65.1156ZM54.1393 91.8881C54.1393 91.8881 54.1466 91.8881 54.1503 91.8881C54.2413 90.2677 54.2959 88.6401 54.4416 87.0233C54.518 86.1805 54.2304 85.8767 53.3892 85.7357C46.6527 84.5819 39.9199 83.4027 33.198 82.173C32.1675 81.9849 31.7342 82.173 31.7379 83.2581C31.7451 86.5639 31.6687 89.8734 31.7379 93.1793C31.7488 93.6386 32.3496 94.4054 32.7829 94.485C39.3774 95.7365 45.99 96.8939 52.599 98.0802C53.5385 98.2502 53.9026 97.8777 53.9136 96.93C53.9391 95.2482 54.0592 93.5663 54.1393 91.8844V91.8881ZM70.1758 44.2893C66.5199 44.018 63.8508 43.8878 61.2035 43.5912C60.0929 43.4682 59.7106 43.7395 59.5831 44.8391C59.1717 48.3656 58.7019 51.8884 58.1594 55.3969C57.9773 56.5724 58.4033 56.8653 59.4702 56.9087C65.6423 57.1619 71.8144 57.4404 77.9864 57.7406C79.2063 57.8021 79.5631 57.3211 79.4612 56.1492C79.1516 52.6118 78.8822 49.0709 78.6819 45.5263C78.62 44.4412 78.1102 44.264 77.1817 44.2784C74.5162 44.3182 71.8508 44.2929 70.1758 44.2929V44.2893ZM82.6983 99.3715C87.9782 98.7168 93.2582 98.0513 98.5417 97.4147C99.4084 97.3098 100.006 97.0747 100.14 96.0728C100.585 92.7995 101.091 89.5334 101.579 86.2637C101.728 85.2655 101.458 84.9182 100.319 85.0412C94.0665 85.714 87.8107 86.3397 81.544 86.8678C80.2695 86.9763 79.9163 87.4428 79.8471 88.593C79.7088 90.8717 79.5085 93.1504 79.2427 95.4182C78.7912 99.2919 78.762 99.2883 82.6983 99.3715ZM58.9495 44.0035C58.9714 43.4682 58.9714 43.4755 57.6423 43.2368C52.6427 42.3398 47.6396 41.4681 42.6509 40.5168C41.6823 40.3324 41.2308 40.553 40.9213 41.4789C39.7633 44.9584 38.5617 48.4234 37.3309 51.8776C37.0105 52.7782 37.1999 53.2159 38.1539 53.3822C44.1694 54.4311 50.1776 55.5162 56.204 56.5109C56.5499 56.5688 57.3146 56.019 57.3692 55.6754C57.9372 51.9318 58.4033 48.1739 58.9532 44.0035H58.9495ZM83.798 57.7225C88.5499 57.1619 93.3019 56.6122 98.0538 56.0371C98.8767 55.9358 99.8308 55.9539 99.4484 54.5903C98.4289 50.9372 97.4603 47.2696 96.488 43.6057C96.2732 42.7919 95.8071 42.6472 95.0097 42.734C90.2541 43.2476 85.4948 43.7504 80.7283 44.1518C79.6177 44.2459 79.2572 44.5497 79.3738 45.6637C79.6651 48.4777 79.8981 51.2989 80.0693 54.1237C80.2841 57.6647 80.2477 57.6683 83.798 57.7189V57.7225ZM32.6154 68.0344C32.437 67.9259 31.9673 67.5244 31.4283 67.3255C26.538 65.546 21.6222 63.8279 16.7392 62.0231C15.8835 61.7084 15.421 61.571 15.2535 62.6669C14.711 66.2404 14.092 69.7995 13.5895 73.3766C13.5239 73.8396 13.8443 74.7004 14.1939 74.8306C19.5175 76.8344 24.8667 78.7622 30.2376 80.643C30.467 80.7226 31.188 80.2162 31.2244 79.9233C31.7124 76.1617 32.1202 72.3856 32.6154 68.0308V68.0344ZM32.6919 66.8951C32.8485 66.5189 33.0851 66.1174 33.1907 65.687C34.0574 62.0629 34.8439 58.417 35.7797 54.8073C36.0565 53.7403 35.6705 53.5052 34.7893 53.1978C30.2813 51.6389 25.777 50.0547 21.3164 48.3692C20.3223 47.993 19.9181 48.116 19.594 49.0781C18.4324 52.554 17.249 56.0262 16.0364 59.4876C15.6759 60.5148 16.0328 61.0465 17.005 61.3901C21.9026 63.1226 26.7893 64.8768 31.6832 66.6202C31.909 66.6998 32.1493 66.7468 32.6955 66.8915L32.6919 66.8951ZM67.1207 110.645C69.8116 110.645 72.2404 110.598 74.6619 110.667C75.7324 110.696 76.1767 110.298 76.3405 109.282C76.7738 106.605 77.2363 103.936 77.7679 101.278C77.9828 100.207 77.5203 100.098 76.6282 100.062C69.7242 99.7874 62.8239 99.4836 55.9236 99.1364C54.9259 99.0857 54.5035 99.2774 54.5071 100.359C54.5144 102.949 54.467 105.538 54.3287 108.124C54.2595 109.383 54.7292 109.817 55.9527 109.886C59.7652 110.099 63.574 110.396 67.1207 110.642V110.645ZM53.615 104.106C53.6769 104.106 53.7351 104.106 53.797 104.106C53.797 102.844 53.7351 101.578 53.8153 100.319C53.8772 99.3642 53.6113 98.9483 52.5918 98.7783C46.0264 97.6679 39.472 96.5141 32.9249 95.306C31.8871 95.1143 31.7706 95.4471 31.8835 96.2935C32.2658 99.093 32.6518 101.892 32.9759 104.699C33.0924 105.712 33.6059 106.15 34.5672 106.32C40.4698 107.358 46.3651 108.407 52.2604 109.488C53.3637 109.691 53.655 109.257 53.6223 108.258C53.5786 106.877 53.6113 105.491 53.6113 104.106H53.615ZM30.9586 87.8552C30.9805 87.8552 31.0059 87.8552 31.0278 87.8552C31.0278 86.2927 30.9513 84.7229 31.0533 83.164C31.1225 82.0717 30.7583 81.6304 29.6951 81.2688C24.6627 79.5543 19.6596 77.7495 14.6746 75.9085C13.7351 75.5612 13.3309 75.5793 13.3673 76.6716C13.4766 80.0354 13.5166 83.4027 13.7169 86.7629C13.7497 87.3199 14.3359 88.1337 14.8566 88.329C19.8307 90.2026 24.8448 91.964 29.8444 93.7761C30.7474 94.1052 31.0096 93.8267 30.9768 92.908C30.9186 91.2262 30.9622 89.5407 30.9622 87.8552H30.9586ZM40.6009 40.2564C40.1785 40.0719 39.7524 39.8622 39.3118 39.703C35.554 38.343 31.7706 37.0518 28.0492 35.5978C27.0587 35.2108 26.6436 35.417 26.2103 36.2308C24.477 39.4752 22.7547 42.7268 20.9595 45.935C20.3769 46.9803 20.701 47.4396 21.7023 47.7941C26.152 49.3674 30.6054 50.9372 35.0369 52.5684C36.0783 52.9518 36.3915 52.5467 36.6901 51.6497C37.848 48.1594 39.0715 44.6944 40.2695 41.2185C40.3496 40.9906 40.4261 40.7628 40.6045 40.26L40.6009 40.2564ZM117.997 64.3632C117.018 60.4172 116.082 56.5688 115.062 52.742C115.004 52.5214 114.236 52.2791 113.897 52.3767C109.786 53.5776 105.69 54.8218 101.611 56.1275C101.233 56.2505 100.734 56.9124 100.774 57.2704C101.225 61.1478 101.753 65.0179 102.332 68.8772C102.383 69.2063 103.039 69.7633 103.257 69.6982C107.882 68.331 112.488 66.9023 117.083 65.4302C117.422 65.3217 117.63 64.8045 117.994 64.3632H117.997ZM81.0087 110.443C81.016 110.501 81.0269 110.555 81.0342 110.613C85.666 110.034 90.3014 109.484 94.9222 108.848C95.4903 108.768 96.3205 108.367 96.4807 107.918C97.5513 104.978 98.4762 101.983 99.4339 99.0025C99.6523 98.3262 99.4776 98.0296 98.651 98.1164C92.3187 98.7602 85.9828 99.3425 79.6541 100.015C79.2463 100.059 78.6601 100.641 78.5654 101.061C78.1539 102.88 77.8808 104.732 77.5859 106.576C77.3783 107.86 77.2181 109.155 77.036 110.443H81.0051H81.0087ZM102.518 77.131C102.518 77.131 102.529 77.131 102.533 77.131C102.533 78.9973 102.54 80.86 102.529 82.7264C102.525 83.3485 102.423 84.0827 103.414 83.7789C108.148 82.3249 112.878 80.8528 117.582 79.3156C117.946 79.1962 118.354 78.5126 118.351 78.0967C118.311 74.4291 118.172 70.7652 118.081 67.0976C118.059 66.2259 117.852 66.0053 116.89 66.3164C112.524 67.7306 108.133 69.0797 103.72 70.3456C102.682 70.6422 102.402 71.022 102.485 72.0745C102.616 73.7492 102.522 75.4419 102.522 77.1237L102.518 77.131ZM70.8895 43.5767C73.1871 43.5767 75.1243 43.537 77.0579 43.5912C78.1102 43.6201 78.4634 43.2512 78.3105 42.2168C77.8226 38.9471 77.3565 35.6774 76.9414 32.3968C76.8285 31.4962 76.4607 31.2069 75.554 31.1815C71.4429 31.0658 67.3319 30.9103 63.2245 30.6933C62.2559 30.6426 61.7861 30.8849 61.6368 31.8651C61.1562 35.0119 60.661 38.1586 60.0893 41.2945C59.8671 42.5134 60.3187 42.8968 61.4657 42.9583C64.7283 43.1391 67.9837 43.3814 70.8858 43.5731L70.8895 43.5767ZM58.3596 42.857C58.7056 42.3723 59.2372 41.9491 59.3319 41.4428C59.9181 38.2454 60.3587 35.0191 60.9559 31.8217C61.1489 30.7873 60.9122 30.4871 59.8781 30.3207C56.051 29.7058 52.2349 29.0078 48.4297 28.2771C47.5048 28.0999 46.9659 28.2771 46.5617 29.1524C45.1489 32.216 43.696 35.2614 42.2212 38.2996C41.7879 39.1894 41.7916 39.6958 42.9532 39.9092C47.9563 40.8351 52.9486 41.8153 58.356 42.857H58.3596ZM101.029 55.8743C105.457 54.3841 109.691 52.9808 113.894 51.4906C114.156 51.3965 114.414 50.5466 114.276 50.2102C112.779 46.6041 111.224 43.0197 109.611 39.4643C109.484 39.1858 108.745 38.9362 108.395 39.0375C104.863 40.0647 101.342 41.1462 97.8426 42.2819C97.5295 42.3832 97.118 43.027 97.1872 43.3091C98.1375 47.096 99.1535 50.8649 100.191 54.6301C100.29 54.9918 100.628 55.2884 101.025 55.8671L101.029 55.8743ZM82.5089 43.5731C86.4816 43.0993 90.4507 42.6183 94.4234 42.1625C95.4648 42.0432 95.9746 41.7611 95.4502 40.5783C94.0374 37.3846 92.7484 34.1329 91.2918 30.9573C91.0843 30.5016 90.1922 30.0603 89.6532 30.1001C86.0301 30.3713 82.4179 30.8235 78.7948 31.1056C77.6951 31.1888 77.4985 31.5432 77.666 32.5451C78.0993 35.1602 78.4379 37.7897 78.8094 40.4119C79.1055 42.5098 80.3375 43.5635 82.5053 43.5731H82.5089ZM118.245 81.8981C117.735 81.3881 119.017 79.8762 117.357 80.3283C112.692 81.6015 108.082 83.0772 103.479 84.5529C103.006 84.7048 102.442 85.345 102.361 85.8297C101.812 89.1537 101.397 92.4993 100.89 95.8305C100.745 96.7818 101.04 97.0675 101.946 96.7854C106.276 95.4399 110.624 94.1486 114.91 92.6838C115.583 92.4523 116.268 91.4866 116.446 90.7451C117.153 87.8226 117.662 84.8531 118.245 81.8981ZM32.1857 105.224C31.7925 101.784 31.4866 98.7313 31.0533 95.6967C30.9914 95.2699 30.3906 94.749 29.9281 94.579C24.9868 92.7778 20.0128 91.0706 15.0751 89.2622C14.0519 88.886 13.8844 89.1247 14.1102 90.0507C14.8494 93.0853 15.574 96.1271 16.3569 99.1545C16.4661 99.5704 16.8157 100.106 17.1834 100.243C21.9317 102.034 26.7019 103.77 31.4793 105.48C31.716 105.564 32.0911 105.26 32.1821 105.224H32.1857ZM65.8244 119.662C67.8854 119.662 69.9464 119.626 72.0037 119.681C72.9832 119.706 73.6023 119.449 73.8717 118.433C74.3815 116.516 74.9313 114.606 75.5358 112.714C75.8599 111.691 75.6341 111.376 74.5126 111.34C68.2786 111.134 62.0447 110.902 55.8143 110.551C54.4743 110.475 54.2704 110.924 54.3432 112.038C54.4634 113.839 54.5435 115.644 54.5472 117.449C54.5472 118.512 54.955 118.928 56.0292 118.99C59.2955 119.171 62.5544 119.435 65.8244 119.666V119.662ZM40.7174 39.2871C40.914 39.023 41.2672 38.6794 41.4639 38.2671C42.9495 35.171 44.3769 32.0496 45.8881 28.968C46.3068 28.1144 46.2558 27.778 45.2727 27.4525C42.3451 26.4831 39.4757 25.351 36.5481 24.3817C36.0783 24.2262 35.1971 24.3926 34.9131 24.7362C32.579 27.5755 30.3505 30.5052 28.0601 33.3842C27.361 34.2632 27.5977 34.737 28.5772 35.0842C32.3387 36.4116 36.0965 37.7571 39.858 39.0954C40.0292 39.1569 40.2112 39.1749 40.7137 39.2871H40.7174ZM53.757 114.577C53.6732 113.26 54.0774 111.492 53.3783 110.75C52.6209 109.947 50.833 110.103 49.493 109.839C49.3146 109.803 49.1361 109.781 48.9577 109.745C44.3259 108.877 39.6796 108.067 35.066 107.112C33.5658 106.801 33.391 107.199 33.828 108.468C34.4943 110.399 35.1243 112.342 35.7215 114.291C36.0201 115.271 36.6282 115.738 37.6368 115.923C41.6787 116.657 45.6987 117.532 49.7552 118.194C53.8881 118.867 53.9026 118.784 53.757 114.573V114.577ZM10.4215 40.8894C10.163 41.3017 9.90442 41.6128 9.75513 41.9672C8.40055 45.1863 7.09696 48.4234 5.71325 51.6316C5.2508 52.7023 5.49113 53.5305 6.34684 54.1816C8.84116 56.0732 11.3755 57.9215 13.888 59.7878C14.8603 60.5076 15.1297 60.0446 15.4392 59.0825C16.5644 55.5886 17.7369 52.1018 19.026 48.6658C19.4047 47.6566 19.0587 47.3709 18.3123 46.8537C15.8908 45.1682 13.5494 43.3634 11.1825 41.5983C10.9458 41.4211 10.7492 41.1968 10.4215 40.8894ZM97.2272 41.9564C100.996 40.6977 104.605 39.5041 108.188 38.2454C108.37 38.1803 108.534 37.3882 108.373 37.1458C106.229 33.8725 104.047 30.6245 101.804 27.4199C101.604 27.1306 100.861 26.9859 100.468 27.1016C97.8572 27.8503 95.2755 28.7112 92.6719 29.4816C91.9618 29.6914 91.6487 29.8433 92.0128 30.6824C93.4803 34.0425 94.8603 37.4424 96.3023 40.817C96.4589 41.1823 96.8157 41.4645 97.2272 41.96V41.9564ZM14.5872 61.3503C14.4961 61.2635 14.1102 60.8331 13.655 60.4931C11.0879 58.5942 8.4661 56.7604 5.94265 54.8001C5.22531 54.2394 4.90852 53.9718 4.71917 55.0677C4.11106 58.5653 3.46655 62.0592 2.93491 65.5677C2.85116 66.1247 3.10242 66.9927 3.51753 67.3255C6.24124 69.5065 9.04507 71.5899 11.8416 73.6804C12.4752 74.1543 12.7519 73.883 12.8575 73.1343C13.3855 69.3763 13.9536 65.6255 14.5872 61.3431V61.3503ZM26.1703 34.8817C25.868 34.661 25.584 34.4621 25.3073 34.2523C23.2353 32.7006 21.1197 31.2069 19.1206 29.5684C18.4288 29.0005 18.1411 29.1488 17.7369 29.7348C15.5885 32.8598 13.4511 35.9957 11.2808 39.1026C10.7346 39.8839 10.9641 40.477 11.6013 40.9653C13.8953 42.7195 16.2185 44.434 18.5198 46.1773C19.4447 46.8754 19.878 46.5933 20.3842 45.595C22.0446 42.3217 23.8289 39.1135 25.5694 35.8799C25.7406 35.5616 25.9372 35.2614 26.1666 34.878L26.1703 34.8817ZM77.6332 119.492C79.7488 119.308 81.8644 119.156 83.9764 118.935C91.5431 118.147 91.7106 118.02 95.0643 111.21C95.1189 111.101 95.1844 110.996 95.2208 110.884C95.3483 110.494 95.4648 110.099 95.585 109.709C95.1699 109.705 94.7511 109.662 94.3396 109.705C89.6387 110.182 84.9414 110.732 80.2331 111.137C76.6865 111.445 76.6828 111.362 75.7106 114.859C75.5649 115.38 75.4193 115.904 75.2627 116.422C74.6194 118.541 75.4096 119.565 77.6332 119.492ZM97.7625 108.812C102.398 107.17 106.669 105.665 110.926 104.131C111.17 104.045 111.396 103.733 111.509 103.477C112.834 100.446 114.141 97.4039 115.427 94.3584C115.529 94.1161 115.448 93.8014 115.452 93.5193C115.172 93.5772 114.884 93.6169 114.611 93.6965C110.267 94.995 105.919 96.279 101.59 97.6281C101.102 97.78 100.493 98.2177 100.341 98.6626C99.3246 101.621 98.4143 104.616 97.4967 107.607C97.4275 107.828 97.5986 108.121 97.7625 108.819V108.812ZM70.5399 30.5052C72.3205 30.5052 73.8353 30.4726 75.3501 30.516C76.3587 30.545 76.6173 30.1326 76.4061 29.2067C75.7834 26.447 75.2445 23.6692 74.5454 20.9312C74.4361 20.4971 73.6933 19.9618 73.2053 19.9257C70.5508 19.7195 67.8817 19.6869 65.2235 19.5206C64.3788 19.4663 64.0219 19.7448 63.869 20.5405C63.3592 23.199 62.8348 25.8574 62.2668 28.505C62.0228 29.6335 62.4379 30.0024 63.5485 30.0494C65.9664 30.1543 68.3842 30.3605 70.5363 30.5052H70.5399ZM60.4862 29.9011C60.8103 29.525 61.371 29.1633 61.4766 28.7003C62.1029 25.937 62.5981 23.1483 63.1917 20.3814C63.3665 19.5712 63.0897 19.3252 62.3287 19.2023C59.8162 18.7936 57.3219 18.28 54.8057 17.911C54.3323 17.8423 53.564 18.0846 53.32 18.4463C51.5176 21.0867 49.828 23.7994 48.0729 26.4723C47.534 27.2933 47.9636 27.4923 48.681 27.6297C52.4898 28.3567 56.295 29.0946 60.4862 29.9011ZM80.2841 30.3677C80.2877 30.4075 80.295 30.4473 80.2987 30.4835C83.2955 30.1182 86.2923 29.7348 89.2928 29.3984C90.2286 29.2935 90.4361 28.9607 89.93 28.1469C88.2186 25.3908 86.5727 22.5913 84.7848 19.8859C84.4898 19.4374 83.5904 19.148 82.9932 19.1806C80.7648 19.3035 78.5472 19.6508 76.3187 19.7846C75.2736 19.8461 75.1498 20.215 75.3647 21.112C75.9109 23.3871 76.366 25.6838 76.8831 27.9661C77.5167 30.762 76.7993 30.4509 79.9236 30.3822C80.0438 30.3822 80.1639 30.3713 80.2841 30.3677ZM12.5553 81.0915C12.5954 81.0915 12.6318 81.0915 12.6718 81.0915C12.6718 79.4639 12.6136 77.8363 12.6937 76.2123C12.741 75.2972 12.3805 74.8668 11.6377 74.364C8.98681 72.5809 6.42331 70.6712 3.8234 68.8084C3.53938 68.6059 3.25171 68.4033 2.96404 68.2008C2.86209 68.5914 2.65453 68.9857 2.67638 69.3691C2.85845 72.6749 3.05508 75.9772 3.31361 79.2794C3.35367 79.775 3.6122 80.4007 3.98362 80.7009C6.61266 82.8023 9.29268 84.8495 11.9763 86.8822C12.6172 87.3669 12.9413 87.1571 12.8794 86.3216C12.7447 84.5782 12.6573 82.8349 12.5517 81.0915H12.5553ZM28.7774 19.0395C28.457 19.2529 28.1293 19.4121 27.878 19.6508C25.1216 22.2622 22.3796 24.8953 19.6231 27.5031C18.9859 28.1035 19.0332 28.6642 19.6814 29.1488C21.6987 30.6679 23.716 32.1907 25.8025 33.6157C26.0829 33.8074 26.9604 33.6049 27.208 33.3011C29.5931 30.3496 31.8835 27.3259 34.2504 24.3564C34.7711 23.7053 34.6728 23.4594 34.0064 23C32.4188 21.9113 30.9222 20.6961 29.3892 19.5278C29.2035 19.3867 29.0287 19.2348 28.7811 19.0359L28.7774 19.0395ZM126.128 57.5272C125.076 53.9971 123.962 50.25 122.808 46.5173C122.786 46.4414 122.159 46.4016 121.977 46.5426C120.098 48.0364 118.223 49.5411 116.421 51.1217C116.071 51.4291 115.783 52.1308 115.874 52.5648C116.65 56.2758 117.502 59.9687 118.402 63.6543C118.471 63.9328 119.203 64.3488 119.381 64.2547C121.799 62.9454 123.995 61.354 125.499 58.9921C125.717 58.6485 125.83 58.2362 126.132 57.5309L126.128 57.5272ZM122.083 44.745C122.028 44.5388 122.017 44.4086 121.963 44.3074C120.091 40.8062 118.223 37.305 116.311 33.8255C116.253 33.7206 115.634 33.7604 115.43 33.9232C113.835 35.1963 112.259 36.4912 110.737 37.8475C110.449 38.1043 110.194 38.759 110.321 39.0664C111.825 42.6761 113.391 46.2605 115.001 49.8232C115.139 50.127 115.929 50.4959 116.057 50.3947C117.965 48.8575 119.822 47.2552 121.661 45.6312C121.905 45.4178 121.966 45.0018 122.087 44.745H122.083ZM17.4238 101.245C17.4529 101.668 17.3874 101.994 17.5075 102.225C18.8038 104.735 20.1002 107.246 21.4657 109.72C21.706 110.157 22.1939 110.573 22.6637 110.75C26.4434 112.193 30.2449 113.586 34.0465 114.964C34.3487 115.073 34.731 114.968 35.077 114.964C34.9932 114.624 34.924 114.277 34.8221 113.94C34.203 111.929 33.4966 109.944 32.9795 107.907C32.721 106.895 32.2404 106.475 31.2499 106.146C27.0041 104.743 22.8057 103.213 18.589 101.722C18.305 101.621 18.0282 101.491 17.4238 101.241V101.245ZM45.7096 14.9271C45.6878 14.9379 45.4402 14.9922 45.2763 15.1405C42.4288 17.6542 39.5849 20.1716 36.7593 22.7035C36.0492 23.34 36.6464 23.6294 37.1707 23.8175C40.0692 24.8628 42.9641 25.9081 45.8881 26.8738C46.2522 26.9931 46.9987 26.7653 47.2026 26.4578C49.0051 23.756 50.7383 21.0035 52.4534 18.2402C52.5918 18.0159 52.5153 17.3613 52.3842 17.3142C50.2395 16.504 48.0692 15.7553 45.7133 14.9271H45.7096ZM119.254 73.0873C119.214 73.0873 119.177 73.0909 119.137 73.0945C119.137 74.5376 119.174 75.9844 119.123 77.4276C119.093 78.3354 119.447 78.5995 120.135 78.0352C122.079 76.4402 124.024 74.8306 125.848 73.1017C126.354 72.6243 126.671 71.6984 126.664 70.9822C126.635 67.557 126.467 64.1317 126.329 60.7065C126.318 60.4461 126.132 60.1893 126.03 59.9325C125.808 60.1025 125.579 60.2689 125.36 60.4461C123.481 61.9435 121.653 63.5133 119.698 64.9058C118.951 65.4375 118.653 65.8896 118.747 66.7902C118.973 68.8844 119.09 70.9858 119.254 73.0873ZM91.0807 29.3948C94.5945 28.241 97.2891 27.3765 99.9582 26.4289C100.118 26.371 100.235 25.474 100.049 25.2787C97.4603 22.5949 94.8312 19.9474 92.1548 17.3504C91.8599 17.0647 91.1608 16.9706 90.7311 17.0828C89.158 17.4915 87.6287 18.0666 86.0592 18.5006C85.229 18.7285 85.1489 19.0106 85.5932 19.7231C87.3446 22.5262 89.0561 25.3547 90.742 28.194C90.9823 28.6027 91.0115 29.1344 91.0843 29.3948H91.0807ZM115.401 32.5053C115.139 32.093 114.931 31.6626 114.629 31.3081C112.452 28.7401 110.216 26.2191 108.086 23.6113C107.103 22.4105 106.487 22.4503 105.548 23.6836C104.914 24.5155 103.942 25.1376 103.024 25.6983C102.219 26.1902 102.092 26.5121 102.667 27.3367C104.801 30.3894 106.869 33.4891 108.898 36.6142C109.378 37.3556 109.775 37.7282 110.554 37.0844C111.938 35.9378 113.333 34.8021 114.684 33.6193C114.986 33.3553 115.139 32.9249 115.401 32.5089V32.5053ZM63.7197 125.876C64.5317 125.876 65.5003 125.869 66.4689 125.876C70.8021 125.916 70.762 125.902 72.5317 121.858C73.0633 120.639 72.8558 120.364 71.5267 120.339C67.2845 120.266 63.046 120.093 58.8075 119.905C54.0155 119.691 54.5472 118.44 55.1807 123.967C55.29 124.932 55.7306 125.316 56.6628 125.374C58.9605 125.515 61.2581 125.695 63.716 125.873L63.7197 125.876ZM110.263 105.679C109.87 105.679 109.575 105.614 109.32 105.69C105.438 106.819 101.56 107.944 97.6969 109.134C97.1981 109.289 96.6665 109.723 96.397 110.172C95.1444 112.291 93.9719 114.458 92.7848 116.617C92.6501 116.863 92.5882 117.149 92.4935 117.416C92.7848 117.416 93.0943 117.492 93.3601 117.409C96.6373 116.375 99.9145 115.337 103.174 114.248C103.661 114.085 104.157 113.723 104.477 113.322C106.269 111.061 108.006 108.757 109.761 106.464C109.906 106.276 110.023 106.063 110.267 105.679H110.263ZM37.3018 116.834C37.2909 116.935 37.1307 117.301 37.2508 117.492C38.2085 119.019 39.1807 120.541 40.2331 122.003C40.5207 122.4 41.0742 122.748 41.5622 122.842C45.5385 123.609 49.5258 124.328 53.5203 124.99C53.8007 125.037 54.4671 124.498 54.4561 124.256C54.3979 122.939 54.2486 121.616 53.9755 120.324C53.8954 119.945 53.3528 119.449 52.9559 119.384C47.8908 118.519 42.8111 117.72 37.3018 116.834ZM3.87074 82.8421C4.34411 84.5348 4.95221 86.3108 5.32363 88.1337C6.3869 93.3601 10.0319 96.3622 14.3905 98.7855C14.6746 98.9411 15.0278 98.97 15.3519 99.0568C15.3227 98.7711 15.3191 98.4781 15.2572 98.1996C14.5981 95.2626 13.9536 92.3257 13.2399 89.4032C13.1124 88.8824 12.7847 88.2892 12.3623 87.9818C9.78062 86.0974 7.14794 84.2817 4.52982 82.4515C4.36232 82.3321 4.14384 82.2851 3.9472 82.2055C3.929 82.3755 3.90715 82.5455 3.87074 82.8493V82.8421ZM44.7301 14.5147C44.6209 14.3267 44.5881 14.2001 44.508 14.135C43.361 13.256 42.2285 12.3554 41.0342 11.5416C40.8412 11.4078 40.3278 11.585 40.0474 11.755C36.752 13.7696 33.4748 15.8168 30.1903 17.8495C29.4839 18.2872 29.4729 18.7646 30.1138 19.2384C31.6104 20.3488 33.0888 21.4954 34.6582 22.4973C34.975 22.6998 35.8052 22.5045 36.1475 22.2043C38.8348 19.8714 41.4602 17.4698 44.1038 15.0862C44.3187 14.8945 44.5262 14.6956 44.7228 14.5111L44.7301 14.5147ZM75.1935 125.71C77.6551 125.406 80.2477 125.164 82.8075 124.733C83.7689 124.571 84.7848 124.129 85.5495 123.533C86.8239 122.538 87.9382 121.33 89.0816 120.176C89.3911 119.861 89.5622 119.413 89.7989 119.022C89.3255 119.033 88.8522 119.011 88.3824 119.055C84.4134 119.431 80.448 119.966 76.468 120.147C74.5563 120.234 73.442 120.755 72.9286 122.614C72.6337 123.681 72.0802 124.679 71.6396 125.71H75.1899H75.1935ZM126.474 75.4925C126.314 74.9464 126.223 74.6389 126.132 74.3315C125.903 74.5051 125.677 74.6823 125.448 74.8559C123.678 76.1978 121.897 77.5252 120.149 78.8924C119.712 79.236 119.133 79.6701 119.046 80.1439C118.394 83.6198 117.848 87.1173 117.273 90.6077C117.182 91.1538 117.164 91.6783 117.954 91.1972C120.557 89.6166 123.201 87.9384 124.177 84.9218C125.189 81.7968 125.753 78.5271 126.474 75.4961V75.4925ZM95.4248 13.7552C94.6783 14.4207 94.0338 15.1513 93.2436 15.6577C92.3442 16.2328 92.4716 16.58 93.1598 17.2347C95.3009 19.2746 97.4311 21.329 99.4594 23.4775C101.844 26.0057 102.026 26.06 104.619 23.633C104.881 23.3871 105.111 23.1013 105.369 22.8481C106.09 22.1464 106.036 21.5424 105.216 20.9348C102.212 18.7031 99.2263 16.4498 96.2295 14.2109C95.9928 14.0337 95.7124 13.9179 95.4248 13.7552ZM69.9099 19.1625C70.9696 19.1625 71.9382 19.1299 72.9068 19.1733C73.8426 19.2131 74.0865 18.8514 73.7989 17.9906C73.2126 16.2219 72.6992 14.4279 72.0693 12.6773C71.8653 12.1095 71.4393 11.245 71.0242 11.1872C69.4876 10.981 67.9108 11.0352 66.3487 11.0606C66.2176 11.0606 66.0501 11.5561 65.9773 11.8382C65.4821 13.7588 65.0196 15.6866 64.5135 17.6072C64.2841 18.4789 64.5972 18.8044 65.4712 18.8478C66.9823 18.9201 68.4898 19.0612 69.9099 19.1661V19.1625ZM62.7584 18.6633C63.0497 18.327 63.6032 17.9436 63.7816 17.4336C64.1967 16.2472 64.4261 14.9958 64.7392 13.7733C65.4639 10.9593 65.4712 10.9267 62.5508 10.3625C61.7898 10.2142 60.65 10.0406 60.2349 10.4421C58.3778 12.2397 56.7138 14.2398 54.9878 16.1677C54.467 16.75 54.6309 17.1298 55.3701 17.2708C57.686 17.7157 60.0055 18.1461 62.762 18.6633H62.7584ZM76.4134 19.1444C78.3906 18.9238 80.3678 18.6706 82.3487 18.4934C83.5431 18.3885 83.503 17.9544 82.8403 17.1949C81.6569 15.8349 80.3715 14.54 79.3483 13.0716C77.8444 10.9123 75.9254 10.3914 73.453 10.9267C72.5535 11.1221 72.3678 11.3137 72.681 12.1782C73.351 14.0373 73.9955 15.9145 74.4762 17.8315C74.7638 18.9853 75.3574 19.2891 76.4134 19.1408V19.1444ZM17.1725 23.7741C17.4311 24.8266 17.584 25.5861 17.8061 26.3276C18.1375 27.4308 18.5307 27.6297 19.4629 26.6604C21.5931 24.4432 23.7633 22.2441 26.1084 20.262C27.5467 19.0431 28.7192 18.034 27.4556 16.0772C27.3646 15.9362 27.35 15.7264 27.361 15.5492C27.4338 14.3447 27.0223 14.1567 26.1011 14.9271C23.5521 17.0538 20.9413 19.1082 18.4798 21.329C17.7952 21.9475 17.5476 23.0398 17.1725 23.7741ZM8.80838 35.2072C9.11425 36.2597 9.35458 37.2435 9.69323 38.1948C10.0027 39.0628 10.3414 39.193 10.9386 38.2779C12.6718 35.6087 14.3942 32.9177 16.3387 30.4039C17.4165 29.0114 18.2103 27.8684 17.005 26.1938C16.7174 25.7923 16.7647 25.1557 16.6482 24.6313C16.5863 24.3528 16.5025 24.0779 16.4261 23.7994C16.153 23.9766 15.7997 24.096 15.6177 24.3419C13.6441 26.9895 11.6377 29.619 9.77698 32.3426C9.23078 33.1419 9.12154 34.2306 8.80474 35.2072H8.80838ZM56.2877 8.43468C56.102 8.50701 55.8617 8.56488 55.6578 8.68786C52.8467 10.3553 50.0428 12.0263 47.239 13.7045C46.427 14.1928 46.802 14.5256 47.4284 14.7498C49.1361 15.3683 50.8403 16.0121 52.5772 16.5294C52.985 16.6523 53.7024 16.4751 53.9864 16.1677C55.7597 14.2688 57.4602 12.3048 59.1498 10.3336C59.2991 10.1563 59.3027 9.56316 59.219 9.52699C58.2759 9.12913 57.3 8.79999 56.2841 8.43829L56.2877 8.43468ZM84.8394 18.1714C86.5727 17.6434 88.1312 17.1659 89.6897 16.6885C90.5927 16.4136 90.7784 16.0447 89.8972 15.4479C87.4502 13.7877 84.9814 12.1565 82.5927 10.4168C81.3801 9.53422 80.2841 9.51975 78.9259 10.0623C77.9791 10.4421 77.9391 10.6048 78.5945 11.321C80.3824 13.2777 82.0902 15.3068 83.8453 17.2925C84.1366 17.6217 84.508 17.8857 84.8358 18.1714H84.8394ZM27.838 14.7064C28.1584 15.7662 28.3041 16.4787 28.6063 17.1153C28.701 17.3179 29.3273 17.5132 29.5166 17.3974C32.9723 15.3068 36.4133 13.1909 39.818 11.028C41.016 10.2648 39.5995 9.30997 39.8726 8.44914C39.4356 8.40212 38.9113 8.17787 38.5763 8.34064C35.4702 9.81272 32.3678 11.292 29.3382 12.9088C28.6609 13.2705 28.2713 14.1639 27.8343 14.71L27.838 14.7064ZM3.23714 47.9894C3.53573 48.9913 3.81976 50.0293 4.16568 51.0493C4.24579 51.2844 4.5371 51.4508 4.73009 51.6461C4.88303 51.411 5.07602 51.1904 5.17797 50.9336C6.20483 48.4234 7.09332 45.8518 8.26947 43.4176C9.22714 41.4355 10.3013 39.6054 8.65181 37.5003C8.44789 37.2399 8.47338 36.8095 8.3605 36.4659C8.28039 36.2163 8.1493 35.9848 8.04006 35.7425C7.858 35.9631 7.61038 36.1548 7.50843 36.4044C6.32135 39.3015 5.13064 42.1951 3.99818 45.1139C3.65226 46.0037 3.49932 46.9658 3.2335 47.9894H3.23714ZM122.837 89.1862C122.775 88.9837 122.727 88.8426 122.684 88.6979C122.534 88.7847 122.378 88.8607 122.24 88.9583C120.608 90.0941 118.977 91.2298 117.36 92.3836C117.076 92.5861 116.741 92.8248 116.617 93.125C115.368 96.185 114.159 99.263 112.947 102.337C112.885 102.493 112.892 102.674 112.87 102.844C113.074 102.818 113.307 102.844 113.478 102.753C113.854 102.558 114.192 102.305 114.549 102.081C117.404 100.283 118.82 97.3894 120.291 94.5573C121.205 92.7959 121.992 90.973 122.837 89.1826V89.1862ZM53.5421 6.52494C52.8102 6.72749 52.3915 6.81068 51.9946 6.95535C49.1034 8.01873 46.2012 9.05317 43.3391 10.1853C41.5476 10.8942 41.5585 11.1221 43.077 12.3012C45.3564 14.0698 45.3273 14.0301 47.7197 12.4893C49.7479 11.1835 51.8526 9.99719 53.9136 8.73488C54.3432 8.47084 54.7147 8.11277 55.1152 7.79448C54.5362 7.3279 53.9573 6.8577 53.5385 6.5177L53.5421 6.52494ZM102.107 115.854C101.364 115.951 101.098 115.959 100.85 116.027C98.0538 116.787 95.2536 117.532 92.4753 118.349C91.8781 118.527 91.27 118.888 90.8258 119.326C89.5804 120.549 88.4152 121.847 87.2281 123.127C87.0315 123.341 86.8749 123.59 86.7001 123.826C86.9769 123.811 87.2645 123.833 87.534 123.782C92.8576 122.744 97.3219 120.096 101.265 116.49C101.397 116.367 101.553 116.273 102.11 115.861L102.107 115.854ZM83.0806 7.8415C82.7238 8.14532 82.3305 8.47808 81.9336 8.81445C82.1885 9.09657 82.3997 9.43657 82.7056 9.64635C85.1344 11.3174 87.6141 12.9233 90.0174 14.6305C91.7907 15.8928 92.184 15.8964 93.7716 14.352C94.5108 13.6358 94.6273 13.1186 93.564 12.6303C90.3924 11.1618 87.239 9.66443 84.0747 8.18511C83.8053 8.05851 83.5103 7.98618 83.0806 7.83788V7.8415ZM95.5449 12.0118C95.8144 12.4856 95.971 13.1041 96.3715 13.408C99.4302 15.7481 102.536 18.0304 105.639 20.3163C105.85 20.4718 106.152 20.5007 106.411 20.5912C106.48 20.3091 106.691 19.9618 106.596 19.7557C106.039 18.544 105.704 16.9996 104.75 16.2472C102.351 14.3556 99.6596 12.8256 97.0816 11.1618C96.204 10.594 95.443 10.301 95.5486 12.0154L95.5449 12.0118ZM116.148 30.0639C115.947 29.2899 115.966 28.4363 115.554 27.9263C113.063 24.8411 110.482 21.8318 107.911 18.8116C107.82 18.7068 107.463 18.667 107.368 18.7502C107.103 18.9889 107.452 21.9584 107.732 22.2767C110.125 24.9966 112.51 27.7201 114.906 30.4401C115.135 30.7005 115.416 30.9211 115.674 31.1598C115.834 30.7909 115.995 30.4256 116.151 30.0639H116.148ZM62.4525 126.603C62.4525 126.567 62.4525 126.531 62.4525 126.495C60.7593 126.383 59.0661 126.238 57.3728 126.173C56.8376 126.151 56.2914 126.336 55.7524 126.426C56.0583 127.124 56.3023 127.858 56.7028 128.499C56.8339 128.708 57.3728 128.712 57.7297 128.73C60.3915 128.86 63.0606 129.117 65.7151 129.012C66.793 128.969 67.8562 128.162 68.8831 127.623C69.1161 127.5 69.1708 127.052 69.3055 126.752C69.0215 126.701 68.7374 126.611 68.4498 126.611C66.4507 126.6 64.4516 126.603 62.4525 126.603ZM0.666364 60.938C0.972236 62.1678 1.20892 63.2167 1.51115 64.2439C1.58034 64.4754 1.88257 64.6417 2.07556 64.837C2.14474 64.6092 2.23214 64.3849 2.27583 64.1535C2.77834 61.3756 3.0041 58.5147 3.85253 55.8454C4.51889 53.7584 4.02731 52.138 3.1097 50.4272C3.00774 50.2355 2.82567 50.0872 2.68002 49.9208C2.59627 50.1415 2.47246 50.3549 2.43241 50.5864C1.82795 54.0731 1.23805 57.5634 0.662723 60.938H0.666364ZM40.5826 8.26468C40.7793 9.6572 40.8812 10.4529 42.3159 9.8706C45.5676 8.55404 48.8849 7.40385 52.1584 6.14154C52.5044 6.00772 52.7301 5.57369 53.0105 5.2771C52.6355 5.09263 52.2131 4.68754 51.8963 4.75988C48.4734 5.5339 45.0578 6.34409 41.6678 7.24471C41.1762 7.37492 40.823 8.02596 40.5826 8.26468ZM54.2522 128.354C55.0752 128.484 55.5485 128.408 55.2281 127.352C54.9441 126.415 54.6236 125.858 53.4693 125.703C50.1776 125.261 46.9113 124.618 43.6341 124.071C43.2044 123.999 42.7602 124.032 42.3196 124.014C42.6473 124.346 42.9495 124.715 43.31 125.008C46.4925 127.627 50.5162 127.536 54.2522 128.35V128.354ZM122.928 41.8804C122.666 40.9906 122.516 40.0213 122.108 39.1713C120.885 36.6214 119.589 34.104 118.252 31.6083C117.928 31.0043 117.338 30.5413 116.872 30.0097C116.778 30.9428 116.661 31.8724 116.61 32.8055C116.599 33.0008 116.861 33.2034 116.978 33.4132C118.591 36.3067 120.197 39.2039 121.813 42.0938C122.006 42.4374 122.265 42.7412 122.491 43.0668C122.622 42.7051 122.753 42.347 122.924 41.8768L122.928 41.8804ZM95.0934 11.8961C95.1553 11.6899 95.2172 11.4837 95.2828 11.2776C94.7074 10.6555 94.2486 9.75124 93.5349 9.4655C90.5709 8.28276 87.534 7.27364 84.508 6.24643C84.1803 6.13431 83.7543 6.32239 83.3719 6.36941C83.6086 6.71302 83.7689 7.21215 84.0966 7.3713C87.4102 8.96998 90.742 10.5216 94.092 12.0444C94.3506 12.1601 94.7584 11.9539 95.0934 11.8961ZM71.0096 128.915C75.463 128.549 78.6091 127.808 81.1835 126.401C81.4348 126.263 81.6496 126.064 81.879 125.894C81.5695 125.855 81.2527 125.757 80.9468 125.779C77.8699 126.021 74.7893 126.26 71.716 126.56C71.2281 126.607 70.6892 126.857 70.3214 127.178C69.8444 127.594 69.5167 128.177 69.1234 128.687L71.006 128.915H71.0096ZM69.3565 10.3733C71.1698 10.4059 71.2281 10.3155 70.4452 8.62999C70.2449 8.19596 70.0483 7.75831 69.808 7.3496C69.3637 6.59366 68.8904 5.85581 68.4279 5.11072C68.0456 5.93176 67.5941 6.7311 67.2955 7.5847C66.3342 10.3155 66.356 10.3227 69.3565 10.3733ZM52.6318 2.81759C50.4725 3.17566 48.4188 3.39268 46.4343 3.88458C45.0615 4.22457 43.7761 4.92264 42.4689 5.50496C42.2613 5.599 42.1557 5.92453 42.0064 6.14154C42.2358 6.13431 42.4725 6.15963 42.6946 6.11261C45.9937 5.38199 49.2927 4.6586 52.5845 3.8882C52.9377 3.80501 53.229 3.4614 53.5494 3.24077C53.2254 3.09247 52.9049 2.94418 52.6318 2.81759ZM64.9286 10.1274C65.2782 9.80187 65.8025 9.52699 65.9846 9.10381C66.4361 8.0549 66.7383 6.9445 67.077 5.85219C67.1425 5.64602 67.0952 5.40731 67.0988 5.17944C66.8804 5.23731 66.6255 5.23731 66.4507 5.35667C65.5585 5.97878 64.6555 6.59366 63.8144 7.28088C63.0861 7.87767 62.4306 8.5685 61.7461 9.21593C62.711 9.49082 63.676 9.7657 64.925 10.1202L64.9286 10.1274ZM73.0815 10.5867C73.1799 10.4819 73.2818 10.377 73.3801 10.2721C73.6787 10.2504 73.9882 10.2612 74.2795 10.1997C74.7274 10.1057 75.1644 9.96464 75.605 9.84166C75.3246 9.4872 75.0988 9.06764 74.7529 8.79637C73.4784 7.7981 72.1712 6.83961 70.8567 5.88836C70.5799 5.68943 70.2377 5.5773 69.9281 5.42539C70.0228 5.79794 70.0702 6.18856 70.2231 6.53579C70.6091 7.41109 70.955 8.32255 71.4866 9.10742C71.8835 9.69337 72.5426 10.1021 73.0852 10.5904L73.0815 10.5867ZM126.824 54.6662C125.972 51.4074 125.072 47.9351 124.144 44.4665C124.042 44.0867 123.78 43.7467 123.59 43.3887C123.416 43.8263 123.201 44.2567 123.081 44.7088C123.026 44.915 123.139 45.1718 123.204 45.3961C124.162 48.6079 125.12 51.8197 126.092 55.0279C126.154 55.2305 126.358 55.3933 126.493 55.5705C126.565 55.3679 126.638 55.1654 126.82 54.6662H126.824ZM64.6446 5.11072C62.4889 5.92091 60.2386 6.75642 58.0028 7.6281C57.8972 7.66789 57.8863 8.23574 57.9008 8.23936C58.8621 8.43829 60.0565 9.04594 60.752 8.68786C62.2704 7.91022 63.5412 6.64791 64.9031 5.57007C65.0087 5.48688 65.0342 5.30603 65.0961 5.17221C64.9832 5.15774 64.8703 5.13965 64.6482 5.11072H64.6446ZM1.90442 71.749C1.94447 71.749 1.98088 71.749 2.02094 71.749C2.02094 70.4252 2.08648 69.0978 1.99545 67.7776C1.94811 67.094 1.65316 66.4177 1.42012 65.7558C1.35093 65.5604 1.11789 65.423 0.961312 65.2602C0.881203 65.4555 0.717342 65.6545 0.735549 65.8389C1.0305 69.3148 1.33637 72.7907 1.67137 76.2593C1.69322 76.5016 1.94811 76.7223 2.09012 76.9538C2.12654 76.7223 2.19936 76.4836 2.18844 76.2557C2.10469 74.7547 1.99909 73.25 1.90078 71.749H1.90442ZM77.3674 9.71869C77.7352 9.63911 77.9828 9.61741 78.2049 9.53061C78.6382 9.36061 79.0606 9.15806 79.4866 8.96636C79.1225 8.70233 78.7912 8.36957 78.387 8.18872C76.5736 7.38215 74.7384 6.61536 72.9068 5.84496C72.6992 5.75815 72.4625 5.73645 72.2404 5.68581C72.3424 5.85942 72.4006 6.08729 72.5463 6.20303C73.8644 7.25194 75.1899 8.29 76.5299 9.30636C76.7993 9.5089 77.1453 9.61379 77.3674 9.71869ZM42.6218 125.355C42.163 125.005 41.9372 124.889 41.7843 124.712C39.7379 122.31 36.5116 122.578 33.9663 121.312C33.879 121.268 33.7479 121.323 33.635 121.33C33.7151 121.456 33.7661 121.652 33.8826 121.706C36.4971 122.932 39.1152 124.144 41.737 125.345C41.8826 125.413 42.0902 125.352 42.6218 125.352V125.355ZM62.0046 4.78881C59.9108 5.19391 57.726 5.60624 55.5485 6.05112C55.3082 6.09814 55.1079 6.32962 54.8894 6.4743C55.046 6.6443 55.1662 6.89025 55.3628 6.96982C55.7852 7.14705 56.3132 7.45087 56.6737 7.33151C58.549 6.69855 60.3879 5.94985 62.2304 5.23008C62.3833 5.16859 62.4925 4.99859 62.62 4.88285C62.4489 4.85753 62.2777 4.83222 62.0046 4.79243V4.78881ZM75.3319 5.50135C75.026 5.55198 74.9131 5.57007 74.7966 5.59177C74.8986 5.7039 74.9787 5.86304 75.1061 5.92091C76.8503 6.72749 78.5872 7.55215 80.3606 8.29C80.6701 8.42021 81.1653 8.23936 81.5185 8.0766C81.635 8.02235 81.6314 7.35321 81.5695 7.33513C79.443 6.68047 77.3055 6.0692 75.3319 5.50135ZM54.4743 5.47603C56.5936 5.06732 58.4871 4.70562 60.3842 4.3367C60.4971 4.315 60.5991 4.25351 60.7083 4.2101C60.5881 4.15223 60.4643 4.03649 60.3478 4.04011C58.4179 4.145 56.488 4.23904 54.5654 4.40542C54.3178 4.42712 54.0993 4.81775 53.8699 5.03838C54.1211 5.21923 54.3687 5.40007 54.478 5.47603H54.4743ZM77.0287 4.76711C76.854 4.80328 76.5918 4.85392 76.3333 4.90817C76.5991 5.03838 76.854 5.21561 77.138 5.29518C78.5363 5.69666 79.9345 6.09452 81.3474 6.44175C81.686 6.52494 82.0756 6.40196 82.4434 6.37664C82.1667 6.10176 81.9263 5.65326 81.6023 5.58454C80.1239 5.26263 78.62 5.042 77.0324 4.77073L77.0287 4.76711ZM69.4293 1.27316C68.4789 1.19359 67.8271 1.10316 67.1717 1.09955C66.9459 1.09955 66.7201 1.30933 66.4907 1.42507C67.0697 1.89889 67.6487 2.3727 68.224 2.85014C68.5408 2.43781 68.854 2.02548 69.4256 1.27316H69.4293ZM77.2581 3.55544C77.2545 3.58799 77.2509 3.62055 77.2472 3.6531C76.8867 3.6531 76.5226 3.64225 76.1621 3.65671C75.9254 3.66756 75.6887 3.72182 75.452 3.75437C75.6705 3.82309 75.8817 3.92075 76.1038 3.9533C77.3565 4.13777 78.6091 4.31499 79.8653 4.47052C80.0583 4.49584 80.2659 4.39818 80.4662 4.3584C80.2914 4.21372 80.1312 3.98224 79.9345 3.94607C79.0497 3.78331 78.1539 3.67842 77.2618 3.55182L77.2581 3.55544ZM72.7575 1.71804C72.0073 1.59145 71.4794 1.38167 71.006 1.46124C70.5362 1.54081 70.1066 1.89889 69.6878 2.17739C69.5859 2.24611 69.6041 2.48845 69.564 2.64759C70.0192 2.59695 70.4743 2.57525 70.9222 2.48845C71.3337 2.40887 71.7379 2.27866 72.1384 2.14122C72.2768 2.0942 72.3897 1.97123 72.7575 1.71081V1.71804ZM55.5631 3.55906C57.067 3.45778 58.3269 3.37821 59.5904 3.28055C59.7579 3.26609 59.9181 3.16843 60.082 3.10694C59.9327 3.04907 59.7798 2.94418 59.6305 2.94056C58.3669 2.89716 57.1034 2.84291 55.8398 2.86822C55.5376 2.87546 55.239 3.17205 54.9368 3.33481C55.2172 3.43608 55.4975 3.53736 55.5667 3.56267L55.5631 3.55906ZM63.5267 1.05976C63.29 1.12486 63.0169 1.20082 62.7474 1.27678C62.9841 1.43592 63.2026 1.63485 63.4575 1.74698C63.7889 1.89165 64.1421 2.00739 64.4953 2.06165C64.965 2.13399 65.4457 2.13399 65.919 2.16654C65.4966 1.84825 65.1034 1.46847 64.6373 1.22614C64.3351 1.07061 63.9309 1.1104 63.5267 1.05614V1.05976ZM59.9036 1.57336C59.889 1.61677 59.8781 1.65655 59.8635 1.69996C59.7433 1.69272 59.6195 1.65655 59.5067 1.68187C59.1644 1.75421 58.8294 1.85187 58.4871 1.93867C58.793 2.0291 59.0952 2.13399 59.4047 2.20633C59.5758 2.24611 59.7615 2.23164 59.94 2.2425C60.7629 2.2859 61.5859 2.3293 62.4052 2.3727C61.5713 2.10867 60.7338 1.84102 59.8999 1.57698L59.9036 1.57336ZM54.3214 2.25696C54.7183 2.10867 55.2354 1.91335 55.7561 1.72166C55.5594 1.66017 55.3519 1.51911 55.1698 1.54805C54.4161 1.65655 53.6696 1.8157 52.9195 1.95676C53.3237 2.04356 53.7279 2.13037 54.3214 2.26058V2.25696ZM75.2008 2.97311C75.452 2.92248 75.9946 2.81397 76.5372 2.70546C75.9291 2.60419 75.3246 2.48121 74.7165 2.40887C74.4871 2.37994 74.2395 2.43419 74.0137 2.4993C73.8062 2.55717 73.6168 2.67291 73.4165 2.76333C73.6095 2.83205 73.7989 2.94056 73.9992 2.96588C74.2905 3.00205 74.5927 2.97311 75.2008 2.97311ZM127.064 58.5436C127.017 58.4496 126.966 58.3555 126.919 58.2579C126.875 58.3447 126.78 58.4459 126.795 58.5219C126.82 58.6413 126.919 58.7425 126.984 58.851C127.01 58.7498 127.035 58.6485 127.064 58.5436Z\",\n fill: \"currentColor\"\n })\n });\n};\n\nfunction StartScreen() {\n const {\n termsOfServiceUrl,\n privacyPolicyUrl,\n welcomeScreen: WelcomeScreen\n } = useContext(ModalConfigCtx);\n const locale = useTWLocale().connectWallet;\n if (WelcomeScreen) {\n if (typeof WelcomeScreen === \"function\") {\n return /*#__PURE__*/jsx(WelcomeScreen, {});\n }\n }\n const title = (typeof WelcomeScreen === \"object\" ? WelcomeScreen?.title : undefined) || locale.welcomeScreen.defaultTitle;\n const subtitle = (typeof WelcomeScreen === \"object\" ? WelcomeScreen?.subtitle : undefined) || locale.welcomeScreen.defaultSubtitle;\n const img = typeof WelcomeScreen === \"object\" ? WelcomeScreen?.img : undefined;\n const showTOS = termsOfServiceUrl || privacyPolicyUrl;\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n animate: \"fadein\",\n flex: \"column\",\n children: [/*#__PURE__*/jsxs(Container, {\n expand: true,\n flex: \"column\",\n center: \"both\",\n style: {\n minHeight: \"300px\"\n },\n p: \"lg\",\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n children: img ? /*#__PURE__*/jsx(Img, {\n src: img.src,\n width: img.width ? String(img.width) : undefined,\n height: img.height ? String(img.height) : undefined\n }) : /*#__PURE__*/jsx(GlobalContainer, {\n children: /*#__PURE__*/jsx(GlobeIcon, {\n size: \"150\"\n })\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n }), /*#__PURE__*/jsx(Text, {\n center: true,\n color: \"primaryText\",\n weight: 600,\n multiline: true,\n children: title\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"secondaryText\",\n multiline: true,\n style: {\n textAlign: \"center\"\n },\n children: subtitle\n })]\n }), /*#__PURE__*/jsxs(Container, {\n py: \"lg\",\n flex: \"column\",\n gap: \"lg\",\n children: [/*#__PURE__*/jsx(Link, {\n target: \"_blank\",\n center: true,\n href: \"https://blog.thirdweb.com/web3-wallet/\",\n children: locale.newToWallets\n }), showTOS && /*#__PURE__*/jsx(TOS, {\n termsOfServiceUrl: termsOfServiceUrl,\n privacyPolicyUrl: privacyPolicyUrl\n })]\n })]\n });\n}\nconst floatingAnimation = keyframes`\n from {\n transform: translateY(4px);\n }\n to {\n transform: translateY(-4px);\n }\n`;\nconst GlobalContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n color: theme.colors.accentText,\n filter: `drop-shadow(0px 6px 10px ${theme.colors.accentText})`,\n animation: `${floatingAnimation} 2s ease infinite alternate`\n };\n});\n\nconst ConnectModalContent = props => {\n const {\n screen,\n setScreen,\n initialScreen\n } = props;\n const walletConfigs = useWallets();\n const connectionStatus = useConnectionStatus();\n const disconnect = useDisconnect();\n const isWalletModalOpen = useIsWalletModalOpen();\n const setIsWalletModalOpen = useSetIsWalletModalOpen();\n const modalConfig = useContext(ModalConfigCtx);\n const setModalConfig = useContext(SetModalConfigCtx);\n const title = modalConfig.title;\n const theme = modalConfig.theme;\n const modalSize = modalConfig.modalSize;\n const isWideModal = modalSize === \"wide\";\n const {\n user\n } = useUser();\n const authConfig = useThirdwebAuthContext();\n const closeModal = () => {\n setIsWalletModalOpen(false);\n onModalUnmount(() => {\n setScreen(initialScreen);\n });\n };\n const {\n setHideModal\n } = props;\n const handleConnected = useCallback(() => {\n const requiresSignIn = modalConfig.auth?.loginOptional ? false : !!authConfig?.authUrl && !user?.address;\n onModalUnmount(() => {\n setHideModal(false);\n });\n\n // show sign in screen if required\n if (requiresSignIn) {\n setScreen(reservedScreens.signIn);\n }\n\n // close modal and reset screen\n else {\n setIsWalletModalOpen(false);\n onModalUnmount(() => {\n setScreen(initialScreen);\n });\n }\n }, [modalConfig.auth?.loginOptional, authConfig?.authUrl, user?.address, setIsWalletModalOpen, setScreen, initialScreen, setHideModal]);\n const handleBack = useCallback(() => {\n setScreen(initialScreen);\n if (connectionStatus === \"connecting\") {\n disconnect();\n }\n }, [setScreen, initialScreen, connectionStatus, disconnect]);\n const walletList = /*#__PURE__*/jsx(WalletSelector, {\n title: title,\n walletConfigs: walletConfigs,\n onGetStarted: () => {\n setScreen(reservedScreens.getStarted);\n },\n selectWallet: setScreen\n });\n const getStarted = /*#__PURE__*/jsx(StartScreen, {});\n const getWalletUI = walletConfig => {\n const ConnectUI = walletConfig.connectUI || HeadlessConnectUI;\n return /*#__PURE__*/jsx(ConnectUI, {\n supportedWallets: walletConfigs,\n theme: typeof theme === \"string\" ? theme : theme.type,\n goBack: handleBack,\n connected: handleConnected,\n isOpen: isWalletModalOpen,\n show: () => {\n props.setHideModal(false);\n },\n hide: () => {\n props.setHideModal(true);\n },\n walletConfig: walletConfig,\n modalSize: modalConfig.modalSize,\n selectionData: modalConfig.data,\n setSelectionData: data => {\n setModalConfig(config => ({\n ...config,\n data\n }));\n }\n });\n };\n return /*#__PURE__*/jsx(ScreenContext.Provider, {\n value: screen,\n children: isWideModal ? /*#__PURE__*/jsxs(\"div\", {\n style: {\n height: \"100%\",\n display: \"grid\",\n gridTemplateColumns: \"300px 1fr\"\n },\n children: [/*#__PURE__*/jsxs(LeftContainer, {\n children: [\" \", walletList, \" \"]\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n scrollY: true,\n relative: true,\n children: [screen === reservedScreens.signIn && /*#__PURE__*/jsx(SignatureScreen, {\n onDone: closeModal,\n modalSize: modalSize,\n termsOfServiceUrl: modalConfig.termsOfServiceUrl,\n privacyPolicyUrl: modalConfig.privacyPolicyUrl\n }), screen === reservedScreens.main && /*#__PURE__*/jsx(Fragment, {\n children: getStarted\n }), screen === reservedScreens.getStarted && getStarted, typeof screen !== \"string\" && getWalletUI(screen)]\n })]\n }) : /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n scrollY: true,\n relative: true,\n style: {\n maxHeight: compactModalMaxHeight\n },\n children: [screen === reservedScreens.signIn && /*#__PURE__*/jsx(SignatureScreen, {\n onDone: closeModal,\n modalSize: modalSize,\n termsOfServiceUrl: modalConfig.termsOfServiceUrl,\n privacyPolicyUrl: modalConfig.privacyPolicyUrl\n }), screen === reservedScreens.main && walletList, screen === reservedScreens.getStarted && getStarted, typeof screen !== \"string\" && getWalletUI(screen)]\n })\n });\n};\nconst ConnectModal = () => {\n const {\n theme,\n modalSize,\n auth\n } = useContext(ModalConfigCtx);\n const authConfig = useThirdwebAuthContext();\n const {\n user\n } = useUser();\n const {\n screen,\n setScreen,\n initialScreen\n } = useScreen();\n const isWalletModalOpen = useIsWalletModalOpen();\n const setIsWalletModalOpen = useSetIsWalletModalOpen();\n const [hideModal, setHideModal] = useState(false);\n const connectionStatus = useConnectionStatus();\n const [prevConnectionStatus, setPrevConnectionStatus] = useState(connectionStatus);\n useEffect(() => {\n setPrevConnectionStatus(connectionStatus);\n }, [connectionStatus]);\n const disconnect = useDisconnect();\n const wallet = useWallet();\n const isWrapperConnected = !!wallet?.getPersonalWallet();\n const isWrapperScreen = typeof screen !== \"string\" && !!screen.personalWallets;\n\n // reopen the screen to complete wrapper wallet's next step after connecting a personal wallet\n useEffect(() => {\n if (!isWrapperConnected && isWrapperScreen && !isWalletModalOpen && connectionStatus === \"connected\" && prevConnectionStatus === \"connecting\") {\n setIsWalletModalOpen(true);\n }\n }, [isWalletModalOpen, connectionStatus, setIsWalletModalOpen, isWrapperScreen, isWrapperConnected, prevConnectionStatus]);\n useEffect(() => {\n if (!isWalletModalOpen) {\n onModalUnmount(() => {\n setHideModal(false);\n });\n }\n }, [isWalletModalOpen, setIsWalletModalOpen, screen]);\n\n // if wallet is suddenly disconnected when showing the sign in screen, close the modal and reset the screen\n useEffect(() => {\n if (isWalletModalOpen && screen === reservedScreens.signIn && !wallet) {\n setScreen(initialScreen);\n setIsWalletModalOpen(false);\n }\n }, [initialScreen, isWalletModalOpen, screen, setIsWalletModalOpen, setScreen, wallet]);\n return /*#__PURE__*/jsx(CustomThemeProvider, {\n theme: theme,\n children: /*#__PURE__*/jsx(Modal, {\n hide: hideModal,\n size: modalSize,\n open: isWalletModalOpen,\n setOpen: value => {\n if (hideModal) {\n return;\n }\n setIsWalletModalOpen(value);\n if (!value) {\n const requiresSignIn = auth?.loginOptional ? false : !!authConfig?.authUrl && !user?.address;\n onModalUnmount(() => {\n if (connectionStatus === \"connecting\" || requiresSignIn) {\n disconnect();\n }\n setScreen(initialScreen);\n });\n }\n },\n children: /*#__PURE__*/jsx(ConnectModalContent, {\n initialScreen: initialScreen,\n screen: screen,\n setScreen: setScreen,\n setHideModal: setHideModal\n })\n })\n });\n};\nconst LeftContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"auto\",\n ...noScrollBar,\n position: \"relative\",\n borderRight: `1px solid ${theme.colors.separatorLine}`\n };\n});\n\nconst ConnectModalInline = props => {\n const {\n screen,\n setScreen,\n initialScreen\n } = useScreen();\n const walletConfigs = useWallets();\n const modalSize = isMobile() || walletConfigs.length === 1 ? \"compact\" : props.modalSize;\n const ctxTheme = useCustomTheme();\n const content = /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(ConnectModalContent, {\n initialScreen: initialScreen,\n screen: screen,\n setScreen: setScreen,\n setHideModal: () => {\n if (props.onModalHide) {\n props.onModalHide();\n }\n }\n }), /*#__PURE__*/jsx(CrossContainer, {\n children: /*#__PURE__*/jsx(IconButton, {\n type: \"button\",\n \"aria-label\": \"Close\",\n children: /*#__PURE__*/jsx(Cross2Icon, {\n width: iconSize.md,\n height: iconSize.md,\n style: {\n color: \"inherit\"\n }\n })\n })\n })]\n });\n const walletUIStatesProps = {\n theme: props.theme || ctxTheme,\n modalSize: modalSize,\n title: props.modalTitle,\n termsOfServiceUrl: props.termsOfServiceUrl,\n privacyPolicyUrl: props.privacyPolicyUrl,\n welcomeScreen: props.welcomeScreen,\n titleIconUrl: props.modalTitleIconUrl\n };\n return /*#__PURE__*/jsx(WalletUIStatesProvider, {\n ...walletUIStatesProps,\n children: /*#__PURE__*/jsx(CustomThemeProvider, {\n theme: walletUIStatesProps.theme,\n children: /*#__PURE__*/jsxs(ConnectModalInlineContainer, {\n className: props.className,\n style: {\n height: modalSize === \"compact\" ? \"auto\" : wideModalMaxHeight,\n maxWidth: modalSize === \"compact\" ? modalMaxWidthCompact : modalMaxWidthWide\n },\n children: [props.modalSize === \"compact\" ? /*#__PURE__*/jsxs(DynamicHeight, {\n children: [\" \", content, \" \"]\n }) : content, /*#__PURE__*/jsx(SyncedWalletUIStates, {\n ...walletUIStatesProps\n })]\n })\n })\n });\n};\nfunction SyncedWalletUIStates(props) {\n const setModalConfig = useContext(SetModalConfigCtx);\n const locale = useTWLocale();\n\n // update modalConfig on props change\n useEffect(() => {\n setModalConfig(c => ({\n ...c,\n title: props.title || locale.connectWallet.defaultModalTitle,\n theme: props.theme || \"dark\",\n modalSize: (isMobile() ? \"compact\" : props.modalSize) || \"wide\",\n termsOfServiceUrl: props.termsOfServiceUrl,\n privacyPolicyUrl: props.privacyPolicyUrl,\n welcomeScreen: props.welcomeScreen,\n titleIconUrl: props.titleIconUrl\n }));\n }, [props.title, props.theme, props.modalSize, props.termsOfServiceUrl, props.privacyPolicyUrl, props.welcomeScreen, props.titleIconUrl, setModalConfig, locale.connectWallet.defaultModalTitle]);\n return /*#__PURE__*/jsx(WalletUIStatesProvider, {\n ...props\n });\n}\nconst ConnectModalInlineContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n background: theme.colors.modalBg,\n color: theme.colors.primaryText,\n transition: \"background 0.2s ease\",\n borderRadius: radius.xl,\n width: \"100%\",\n boxSizing: \"border-box\",\n boxShadow: shadow.lg,\n position: \"relative\",\n border: `1px solid ${theme.colors.borderColor}`,\n lineHeight: \"normal\",\n overflow: \"hidden\",\n fontFamily: theme.fontFamily,\n \"& *::selection\": {\n backgroundColor: theme.colors.primaryText,\n color: theme.colors.modalBg\n }\n };\n});\n\nlet video;\nfunction supportsVideoType(mimeType) {\n if (!mimeType || !mimeType.startsWith(\"video/\")) {\n return \"\";\n }\n if (!video) {\n video = document.createElement(\"video\");\n }\n return video.canPlayType(mimeType);\n}\nfunction shouldRenderVideoTag(mimeType) {\n return !!supportsVideoType(mimeType);\n}\nlet audio;\nfunction supportsAudioType(mimeType) {\n if (!mimeType || !mimeType.startsWith(\"audio/\")) {\n return \"\";\n }\n if (!audio) {\n audio = document.createElement(\"audio\");\n }\n return audio.canPlayType(mimeType);\n}\nfunction shouldRenderAudioTag(mimeType) {\n return !!supportsAudioType(mimeType);\n}\n\nfunction mergeRefs(refs) {\n return value => {\n refs.forEach(ref => {\n if (typeof ref === \"function\") {\n ref(value);\n // eslint-disable-next-line eqeqeq\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nconst CarbonDocumentUnknown = props => {\n return /*#__PURE__*/jsxs(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\",\n ...props,\n children: [/*#__PURE__*/jsx(\"circle\", {\n cx: \"9\",\n cy: \"28.5\",\n r: \"1.5\",\n fill: \"currentColor\"\n }), /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M10 25H8v-4h2a2 2 0 0 0 0-4H8a2.002 2.002 0 0 0-2 2v.5H4V19a4.005 4.005 0 0 1 4-4h2a4 4 0 0 1 0 8Z\"\n }), /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"m27.7 9.3l-7-7A.908.908 0 0 0 20 2H10a2.006 2.006 0 0 0-2 2v8h2V4h8v6a2.006 2.006 0 0 0 2 2h6v16H14v2h12a2.006 2.006 0 0 0 2-2V10a.91.91 0 0 0-.3-.7ZM20 10V4.4l5.6 5.6Z\"\n })]\n });\n};\nconst CarbonDocumentAudio = props => {\n return /*#__PURE__*/jsxs(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\",\n ...props,\n children: [/*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M29 31a.999.999 0 0 1-.625-.22L23.65 27H20a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1h3.65l4.726-3.78A1 1 0 0 1 30 17v13a1 1 0 0 1-1 1Zm-8-6h3a1 1 0 0 1 .625.22L28 27.92v-8.84l-3.376 2.7A1 1 0 0 1 24 22h-3Z\"\n }), /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M16 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6v3h2v-5a.91.91 0 0 0-.3-.7l-7-7A.909.909 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h8Zm2-23.6l5.6 5.6H18Z\"\n })]\n });\n};\nconst CarbonPauseFilled = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\",\n ...props,\n children: /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M12 6h-2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm10 0h-2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2z\"\n })\n });\n};\nconst CarbonPlayFilledAlt = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\",\n ...props,\n children: /*#__PURE__*/jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z\"\n })\n });\n};\n\nconst ModelViewer = /* @__PURE__ */lazy(() => import('./ModelViewer-ad6f3167.browser.esm.js'));\nconst PlayButton = _ref => {\n let {\n onClick,\n isPlaying\n } = _ref;\n const [isHovering, setIsHovering] = useState(false);\n const onMouseEnter = () => setIsHovering(true);\n const onMouseLeave = () => setIsHovering(false);\n const onMouseDown = () => setIsHovering(false);\n const onMouseUp = () => setIsHovering(true);\n return /*#__PURE__*/jsx(\"button\", {\n style: {\n position: \"absolute\",\n bottom: 0,\n right: 0,\n transform: \"translate(-25%, -25%)\",\n maxWidth: \"32px\",\n width: \"8%\",\n minWidth: \"24px\",\n aspectRatio: \"1\",\n zIndex: 3,\n backgroundColor: \"#fff\",\n color: \"rgb(138, 147, 155)\",\n display: \"grid\",\n placeItems: \"center\",\n borderRadius: \"50%\",\n border: \"1px solid rgb(229, 232, 235)\",\n cursor: \"pointer\",\n ...(isHovering ? {\n color: \"rgb(53, 56, 64)\",\n boxShadow: \"rgb(4 17 29 / 25%) 0px 0px 8px 0px\"\n } : {})\n },\n onClick: onClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp,\n children: !isPlaying ? /*#__PURE__*/jsx(CarbonPlayFilledAlt, {\n style: {\n width: \"66%\",\n height: \"66%\"\n }\n }) : /*#__PURE__*/jsx(CarbonPauseFilled, {\n style: {\n width: \"66%\",\n height: \"66%\"\n }\n })\n });\n};\nconst VideoPlayer = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Video_Player(_ref2, ref) {\n let {\n src,\n alt,\n poster,\n requireInteraction,\n style,\n width,\n height,\n controls,\n ...restProps\n } = _ref2;\n const videoRef = useRef(null);\n const [playing, setPlaying] = useState(!requireInteraction);\n const [muted, setMuted] = useState(true);\n useEffect(() => {\n if (videoRef.current) {\n if (playing) {\n try {\n videoRef.current.play();\n } catch (err) {\n console.error(\"error playing video\", err);\n }\n } else {\n try {\n videoRef.current.pause();\n videoRef.current.currentTime = 0;\n } catch (err) {\n console.error(\"error pausing video\", err);\n }\n }\n }\n }, [playing]);\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\",\n ...style\n },\n ...restProps,\n children: [/*#__PURE__*/jsx(\"video\", {\n ref: mergeRefs([videoRef, ref]),\n src: src ?? undefined,\n poster: poster ?? undefined,\n loop: true,\n playsInline: true,\n controlsList: \"nodownload\",\n muted: muted,\n preload: poster ? \"metadata\" : \"auto\",\n onCanPlay: () => {\n if (playing) {\n videoRef.current?.play();\n }\n },\n width: width,\n height: height,\n controls: controls,\n style: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"contain\",\n zIndex: 1,\n transition: \"opacity .5s\",\n opacity: !poster ? 1 : playing ? 1 : 0\n }\n }), poster && /*#__PURE__*/jsx(\"img\", {\n src: poster,\n style: {\n objectFit: \"contain\",\n pointerEvents: \"none\",\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n zIndex: 2,\n transition: \"opacity .5s\",\n opacity: playing ? 0 : 1,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n },\n alt: alt\n }), /*#__PURE__*/jsx(PlayButton, {\n onClick: () => {\n setPlaying(prev => !prev);\n setMuted(false);\n },\n isPlaying: playing\n })]\n });\n}))();\nconst AudioPlayer = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Audio_Player(_ref3, ref) {\n let {\n src,\n alt,\n poster,\n style,\n height,\n width,\n ...restProps\n } = _ref3;\n const audioRef = useRef(null);\n const [playing, setPlaying] = useState(false);\n const [muted, setMuted] = useState(true);\n useEffect(() => {\n if (audioRef.current) {\n if (playing) {\n audioRef.current.play();\n } else {\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n }\n }\n }, [playing]);\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\",\n ...style\n },\n ...restProps,\n children: [poster ? /*#__PURE__*/jsx(\"img\", {\n height: height,\n width: width,\n src: poster,\n style: {\n height: \"100%\",\n width: \"100%\",\n pointerEvents: \"none\",\n objectFit: \"contain\"\n },\n alt: alt\n }) : /*#__PURE__*/jsx(\"div\", {\n style: {\n width: \"100%\",\n height: \"100%\",\n display: \"grid\",\n placeItems: \"center\",\n pointerEvents: \"none\",\n backgroundColor: \"#fff\",\n color: \"rgb(138, 147, 155)\"\n },\n children: /*#__PURE__*/jsx(CarbonDocumentAudio, {\n style: {\n height: \"64px\",\n width: \"64px\"\n }\n })\n }), /*#__PURE__*/jsx(PlayButton, {\n onClick: () => {\n setPlaying(prev => !prev);\n setMuted(false);\n },\n isPlaying: playing\n }), /*#__PURE__*/jsx(\"audio\", {\n ref: mergeRefs([audioRef, ref]),\n src: src ?? undefined,\n loop: true,\n playsInline: true,\n muted: muted,\n preload: \"none\",\n controlsList: \"nodownload\",\n style: {\n position: \"absolute\",\n opacity: 0,\n pointerEvents: \"none\",\n zIndex: -1,\n visibility: \"hidden\"\n }\n })]\n });\n}))();\nconst IframePlayer = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Iframe_Player(_ref4, ref) {\n let {\n src,\n alt,\n poster,\n requireInteraction,\n style,\n ...restProps\n } = _ref4;\n const [playing, setPlaying] = useState(!requireInteraction);\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\",\n ...style\n },\n ...restProps,\n children: [/*#__PURE__*/jsx(\"iframe\", {\n src: playing ? src ?? undefined : undefined,\n ref: ref,\n style: {\n objectFit: \"contain\",\n zIndex: 1,\n height: \"100%\",\n width: \"100%\",\n transition: \"opacity .5s\",\n opacity: !poster ? 1 : playing ? 1 : 0\n },\n sandbox: \"allow-scripts\",\n allow: \"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n }), poster && /*#__PURE__*/jsx(\"img\", {\n src: poster,\n style: {\n objectFit: \"contain\",\n pointerEvents: \"none\",\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n zIndex: 2,\n transition: \"opacity .5s\",\n opacity: playing ? 0 : 1,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n },\n alt: alt\n }), /*#__PURE__*/jsx(PlayButton, {\n onClick: () => {\n setPlaying(prev => !prev);\n },\n isPlaying: playing\n })]\n });\n}))();\nconst LinkPlayer = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Link_Player(_ref5, ref) {\n let {\n src,\n alt,\n style,\n ...restProps\n } = _ref5;\n return /*#__PURE__*/jsx(\"div\", {\n style: {\n position: \"relative\",\n ...style\n },\n ...restProps,\n children: /*#__PURE__*/jsx(\"div\", {\n style: {\n width: \"100%\",\n height: \"100%\",\n display: \"grid\",\n placeItems: \"center\",\n backgroundColor: \"#fff\",\n color: \"rgb(138, 147, 155)\"\n },\n children: /*#__PURE__*/jsxs(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n alignItems: \"center\",\n flexWrap: \"nowrap\"\n },\n children: [/*#__PURE__*/jsx(CarbonDocumentUnknown, {\n style: {\n maxWidth: \"128px\",\n minWidth: \"48px\",\n width: \"50%\",\n aspectRatio: \"1\"\n }\n }), /*#__PURE__*/jsx(\"a\", {\n rel: \"noopener noreferrer\",\n style: {\n textDecoration: \"underline\",\n color: \"rgb(138, 147, 155)\"\n },\n href: src ?? undefined,\n target: \"_blank\",\n ref: ref,\n children: alt || \"File\"\n })]\n })\n })\n });\n}))();\n\n/**\n * This component can be used to render any media type, including image, audio, video, and html files.\n * Its convenient for rendering NFT media files, as these can be a variety of different types.\n *\n * The component falls back to a external link if the media type is not supported.\n *\n * The default size is 300px by 300px, but this can be changed using the `width` and `height` props.\n *\n * @example\n * We can take a video file hosted on IPFS and render it using this component as follows\n *\n * ```jsx\n * const Component = () => {\n * return \n * }\n * ```\n *\n * You can try switching out the `src` prop to different types of URLs and media types to explore the possibilities.\n */\nconst MediaRenderer = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Media_Renderer(_ref6, ref) {\n let {\n src,\n poster,\n alt,\n gatewayUrl,\n requireInteraction = false,\n width = \"300px\",\n height = \"300px\",\n style,\n mimeType,\n ...restProps\n } = _ref6;\n const mergedStyle = {\n objectFit: \"contain\",\n width,\n height,\n ...style\n };\n const videoOrImageSrc = useResolvedMediaType(src ?? undefined, mimeType, gatewayUrl);\n const possiblePosterSrc = useResolvedMediaType(poster ?? undefined, undefined, gatewayUrl);\n if (!videoOrImageSrc.mimeType) {\n return /*#__PURE__*/jsx(\"img\", {\n style: mergedStyle,\n ...restProps,\n ref: ref,\n alt: alt\n });\n } else if (videoOrImageSrc.mimeType.startsWith(\"text/html\")) {\n return /*#__PURE__*/jsx(IframePlayer, {\n style: mergedStyle,\n src: videoOrImageSrc.url,\n poster: possiblePosterSrc.url,\n requireInteraction: requireInteraction,\n ...restProps\n });\n } else if (videoOrImageSrc.mimeType.startsWith(\"model\")) {\n return /*#__PURE__*/jsx(Suspense, {\n fallback: poster ? /*#__PURE__*/jsx(\"img\", {\n style: mergedStyle,\n src: poster,\n alt: alt,\n ref: ref,\n ...restProps\n }) : null,\n children: /*#__PURE__*/jsx(ModelViewer, {\n style: mergedStyle,\n src: videoOrImageSrc.url || \"\",\n poster: poster,\n alt: alt,\n ...restProps\n })\n });\n } else if (shouldRenderVideoTag(videoOrImageSrc.mimeType)) {\n return /*#__PURE__*/jsx(VideoPlayer, {\n style: mergedStyle,\n src: videoOrImageSrc.url,\n poster: possiblePosterSrc.url,\n requireInteraction: requireInteraction,\n ...restProps\n });\n } else if (shouldRenderAudioTag(videoOrImageSrc.mimeType)) {\n return /*#__PURE__*/jsx(AudioPlayer, {\n style: mergedStyle,\n src: videoOrImageSrc.url,\n poster: possiblePosterSrc.url,\n requireInteraction: requireInteraction,\n ...restProps\n });\n } else if (videoOrImageSrc.mimeType.startsWith(\"image/\")) {\n return /*#__PURE__*/jsx(\"img\", {\n style: mergedStyle,\n src: videoOrImageSrc.url,\n alt: alt,\n ref: ref,\n ...restProps\n });\n }\n return /*#__PURE__*/jsx(LinkPlayer, {\n style: mergedStyle,\n src: videoOrImageSrc.url,\n alt: alt,\n ref: ref,\n ...restProps\n });\n}))();\n/**\n * @param uri - the uri to resolve (can be a url or a ipfs://\\)\n * @returns the fully resolved url + mime type of the media\n *\n * @example\n * Usage with fully formed url:\n * ```jsx\n * const Component = () => {\n * const resolved = useResolvedMediaType(\"https://example.com/video.mp4\");\n * console.log(\"mime type\", resolved.data.mimeType);\n * console.log(\"url\", resolved.data.url);\n * return null;\n * }\n * ```\n *\n * Usage with ipfs cid:\n * ```jsx\n * const Component = () => {\n * const resolved = useResolvedMediaType(\"ipfs://QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvsd\");\n * console.log(\"mime type\", resolved.data.mimeType);\n * console.log(\"url\", resolved.data.url);\n * return null;\n * }\n * ```\n */\nfunction useResolvedMediaType(uri, mimeType, gatewayUrl) {\n const storage = useStorage();\n const resolvedUrl = useMemo(() => {\n if (!uri) {\n return \"\";\n }\n if (gatewayUrl) {\n return uri.replace(\"ipfs://\", gatewayUrl);\n }\n if (storage) {\n return storage.resolveScheme(uri);\n }\n return uri.replace(\"ipfs://\", \"https://ipfs.io/ipfs/\");\n }, [uri, storage, gatewayUrl]);\n const resolvedMimType = useQuery([\"mime-type\", resolvedUrl], () => resolveMimeType(resolvedUrl), {\n enabled: !!resolvedUrl && !mimeType,\n initialData: mimeType\n });\n return {\n url: resolvedUrl,\n mimeType: resolvedMimType.data\n };\n}\n\n/**\n * This component can be used to render NFTs from the thirdweb SDK.\n * It will render the animation_url if it exists, otherwise it will render the image.\n * The default size is 300px by 300px, but this can be changed using the `width` and `height` props.\n *\n * Props: {@link ThirdwebNftMediaProps}\n *\n * @example\n * ```jsx\n * import { ThirdwebNftMedia, useContract, useNFT } from \"@thirdweb-dev/react\";\n * export default function NFTCollectionRender() {\n * const { contract } = useContract();\n * const { data: nft, isLoading } = useNFT(contract, 0);\n *\n * return (\n *
\n * {!isLoading && nft ? (\n * \n * ) : (\n *

Loading...

\n * )}\n *
\n * );\n * }\n * ```\n */\nconst ThirdwebNftMedia = /* @__PURE__ */(() => /*#__PURE__*/React.forwardRef(function Thirdweb_NftMedia(_ref, ref) {\n let {\n metadata,\n width = \"300px\",\n height = \"300px\",\n style,\n ...props\n } = _ref;\n return /*#__PURE__*/jsx(MediaRenderer, {\n src: metadata.animation_url || metadata.image,\n poster: metadata.image,\n alt: metadata.name?.toString() || \"\",\n ref: ref,\n width: width,\n height: height,\n style: {\n ...style\n },\n ...props\n });\n}))();\n\nconst Popover = props => {\n return /*#__PURE__*/jsxs(RXPopover.Root, {\n open: props.open,\n onOpenChange: props.onOpenChange,\n children: [/*#__PURE__*/jsx(RXPopover.Trigger, {\n asChild: true,\n children: props.children\n }), /*#__PURE__*/jsx(RXPopover.Portal, {\n children: /*#__PURE__*/jsxs(PopoverContent, {\n sideOffset: 7,\n side: \"top\",\n children: [/*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"y\",\n gap: \"sm\",\n style: {\n lineHeight: 1.5,\n maxWidth: \"200px\",\n textAlign: \"center\"\n },\n children: props.content\n }), /*#__PURE__*/jsx(PopoverArrow, {})]\n })\n })]\n });\n};\nconst slideUpAndFade = keyframes`\nfrom {\n opacity: 0;\n transform: translateY(2px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`;\nconst PopoverContent = /* @__PURE__ */(() => styled(RXPopover.Content)(() => {\n const theme = useCustomTheme();\n return {\n borderRadius: radius.sm,\n padding: `${spacing.sm} ${spacing.md}`,\n backgroundColor: theme.colors.tooltipBg,\n boxShadow: shadow.md,\n willChange: \"transform, opacity\",\n animation: `${slideUpAndFade} 400ms cubic-bezier(0.16, 1, 0.3, 1)`,\n color: theme.colors.tooltipText,\n fontSize: fontSize.md\n };\n}))();\nconst PopoverArrow = /* @__PURE__ */(() => styled(RXPopover.Arrow)(() => {\n const theme = useCustomTheme();\n return {\n fill: theme.colors.tooltipBg\n };\n}))();\n\n/**\n *\n * @returns `true` if the wallet does not have a UI and can sign transactions without user interaction.\n */\nfunction useIsHeadlessWallet() {\n const walletConfig = useWalletConfig();\n return !!walletConfig?.isHeadless;\n}\n\nconst TW_WEB3BUTTON = \"tw-web3button\";\n/**\n * Button that executes a function on a smart contract from the connected wallet when clicked.\n *\n * It ensures the following criteria before attempting to call the contract function:\n *\n * 1. There is a connected wallet (if there is not, it renders a `ConnectWallet` component instead.\n *\n * 2. The connected wallet is on the correct network as specified in the `ThirdwebProvider`'s `activeChain` prop. if it is not, it renders a \"switch network\" button instead.\n *\n * If the action you are performing is async, make sure to return a `Promise` from the action function so that the SDK knows when the action is complete. This can be done by either using async/await or by returning a `Promise`.\n *\n * @example\n * ```javascript\n * import { Web3Button } from \"@thirdweb-dev/react\";\n *\n * const App = () => {\n * return (\n *
\n * contract.erc721.transfer(\"0x...\", 1)}\n * >\n * Claim NFT\n * \n *
\n * )\n * }\n * ```\n *\n */\nconst Web3Button = props => {\n const {\n contractAddress,\n onSuccess,\n onError,\n onSubmit,\n isDisabled,\n contractAbi,\n children,\n action,\n className,\n type,\n style,\n connectWallet\n } = props;\n const address = useAddress();\n const sdkChainId = useSDKChainId();\n const switchChain = useSwitchChain();\n const hasMismatch = useNetworkMismatch();\n const connectionStatus = useConnectionStatus();\n const queryClient = useQueryClient();\n const requiresConfirmation = !useIsHeadlessWallet();\n const {\n contract\n } = useContract(contractAddress, contractAbi || \"custom\");\n const contextTheme = useCustomTheme();\n const theme = props.theme || contextTheme || \"dark\";\n const locale = useTWLocale();\n const [confirmStatus, setConfirmStatus] = useState(\"idle\");\n const themeType = typeof theme === \"string\" ? theme : theme.type;\n const actionMutation = useMutation(async () => {\n invariant(contract, \"contract is not ready yet\");\n if (onSubmit) {\n onSubmit();\n }\n\n // Wait for the promise to resolve, so errors get caught by onError\n const result = await action(contract);\n return result;\n }, {\n onSuccess: res => {\n if (onSuccess) {\n onSuccess(res);\n }\n },\n onError: err => {\n if (onError) {\n onError(err);\n }\n },\n onSettled: () => queryClient.invalidateQueries()\n });\n if (!address) {\n return /*#__PURE__*/jsx(ConnectWallet, {\n style: style,\n theme: theme,\n className: `${className || \"\"} ${TW_WEB3BUTTON}--connect-wallet`,\n ...connectWallet\n });\n }\n\n // let onClick = () => actionMutation.mutate();\n\n const btnStyle = {\n minWidth: \"150px\",\n minHeight: \"43px\"\n };\n let button = null;\n const handleSwitchChain = async () => {\n if (sdkChainId) {\n setConfirmStatus(\"waiting\");\n try {\n await switchChain(sdkChainId);\n setConfirmStatus(\"idle\");\n } catch (e) {\n console.error(e);\n setConfirmStatus(\"idle\");\n }\n }\n };\n\n // Switch Network Button\n if (hasMismatch && !isDisabled) {\n const _button = /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n type: type,\n className: `${className || \"\"} ${TW_WEB3BUTTON}--switch-network`,\n onClick: handleSwitchChain,\n style: {\n ...btnStyle,\n ...style\n },\n \"data-is-loading\": confirmStatus === \"waiting\",\n \"data-theme\": themeType,\n children: confirmStatus === \"waiting\" ? /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"primaryButtonText\"\n }) : locale.connectWallet.switchNetwork\n });\n if (requiresConfirmation) {\n button = /*#__PURE__*/jsx(Popover, {\n content: /*#__PURE__*/jsx(\"span\", {\n children: locale.connectWallet.confirmInWallet\n }),\n open: confirmStatus === \"waiting\",\n onOpenChange: isOpen => {\n if (!isOpen) {\n setConfirmStatus(\"idle\");\n }\n },\n children: _button\n });\n } else {\n button = _button;\n }\n }\n\n // Disabled Loading Spinner Button\n else if (!isDisabled && (actionMutation.isLoading || !contract || connectionStatus === \"connecting\" || connectionStatus === \"unknown\")) {\n button = /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n type: type,\n className: `${className || \"\"} ${TW_WEB3BUTTON}`,\n disabled: true,\n style: {\n ...btnStyle,\n ...style\n },\n \"data-is-loading\": true,\n \"data-theme\": themeType,\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"md\",\n color: \"primaryButtonText\"\n })\n });\n }\n\n // action button\n else {\n button = /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n type: type,\n className: `${className || \"\"} ${TW_WEB3BUTTON}`,\n onClick: () => actionMutation.mutate(),\n disabled: isDisabled,\n style: {\n ...btnStyle,\n ...style\n },\n \"data-is-loading\": \"false\",\n \"data-theme\": themeType,\n children: children\n });\n }\n return /*#__PURE__*/jsx(CustomThemeProvider, {\n theme: theme,\n children: button\n });\n};\n\n/**\n * @internal\n */\nconst signerWallet = signer => {\n return {\n id: \"signerWallet\",\n meta: {\n name: \"Signer\",\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTggNWgyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJoLjAyN0EyIDIgMCAwIDEgMiAxOC42NzRWNi43NTRhMiAyIDAgMCAxIDEuNDUtMS45MjNsMTItMy40MjhBMiAyIDAgMCAxIDE4IDMuMzI2VjV6bTAgMnY4LjI0NmEyIDIgMCAwIDEtMS40NSAxLjkyM0wxMC4xNCAxOUgyMFY3aC0yek00IDYuNzU0djExLjkybDEyLTMuNDI4VjMuMzI2TDQgNi43NTR6TTE4IDExVjloMnYyaC0yem0tNS0xYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnoiIHN0eWxlPSJmaWxsOiByZ2IoMTY5LCAyMDQsIDIyNyk7Ij48L3BhdGg+PC9zdmc+\"\n },\n create: options => new SignerWallet({\n ...options,\n signer\n })\n };\n};\n\n/**\n *\n * The `` component lets you control what networks you want users to connect to,\n * what types of wallets can connect to your app, and the settings for the [Thirdweb SDK](https://docs.thirdweb.com/typescript).\n *\n * @example\n * You can wrap your application with the provider as follows:\n *\n * ```jsx title=\"App.jsx\"\n * import { ThirdwebProvider } from \"@thirdweb-dev/react\";\n *\n * const App = () => {\n * return (\n * \n * \n * \n * );\n * };\n * ```\n *\n */\nconst ThirdwebProvider = props => {\n const {\n supportedWallets,\n children,\n signer,\n theme: _theme,\n ...restProps\n } = props;\n const wallets = supportedWallets || defaultWallets;\n const theme = _theme || \"dark\";\n const signerWalletConfig = useMemo(() => signer ? signerWallet(signer) : undefined, [signer]);\n\n // preload the embeddedWallet SDK if present in supportedWallets\n const ewsRef = useRef(false);\n useEffect(() => {\n if (ewsRef.current) {\n return;\n }\n ewsRef.current = true;\n const preloadEmbeddedWallet = async () => {\n const hasEmbeddedWallet = wallets.find(w => w.id === walletIds.embeddedWallet);\n if (hasEmbeddedWallet && restProps.clientId) {\n // TODO only preload the iframe instead of creating the SDK\n const {\n EmbeddedWalletSdk\n } = await import('@thirdweb-dev/wallets');\n new EmbeddedWalletSdk({\n clientId: restProps.clientId,\n chain: \"Ethereum\"\n });\n }\n };\n preloadEmbeddedWallet();\n }, [restProps.clientId, wallets]);\n return /*#__PURE__*/jsx(ThirdwebLocaleContext.Provider, {\n value: restProps.locale || en(),\n children: /*#__PURE__*/jsx(WalletUIStatesProvider, {\n theme: theme,\n children: /*#__PURE__*/jsx(CustomThemeProvider, {\n theme: theme,\n children: /*#__PURE__*/jsxs(ThirdwebProviderCore, {\n ...restProps,\n theme: typeof theme === \"string\" ? theme : theme.type,\n supportedWallets: wallets,\n signerWallet: signerWalletConfig,\n children: [children, /*#__PURE__*/jsx(ConnectModal, {})]\n })\n })\n })\n });\n};\n\n/**\n * @internal\n */\nfunction useInstalledWallets() {\n let isMetamaskInstalled = false;\n let isCoinbaseWalletInstalled = false;\n let isZerionWalletInstalled = false;\n let isTrustWalletInstalled = false;\n const window_ = globalThis?.window;\n if (assertWindowEthereum(window_)) {\n isMetamaskInstalled = !!getInjectedMetamaskProvider();\n isCoinbaseWalletInstalled = !!getInjectedCoinbaseProvider();\n isZerionWalletInstalled = !!window_.ethereum?.isZerion;\n isTrustWalletInstalled = !!window_.ethereum?.isTrust;\n }\n return {\n metamask: isMetamaskInstalled,\n coinbaseWallet: isCoinbaseWalletInstalled,\n trustWallet: isTrustWalletInstalled,\n zerionWallet: isZerionWalletInstalled\n };\n}\n\nfunction useRainbowWallet() {\n const connect = useConnect();\n return useCallback(async connectOptions => {\n const {\n rainbowWallet\n } = await import('./safeChainSlug-12460a7c.browser.esm.js').then(function (n) { return n.R; });\n return connect(rainbowWallet(), connectOptions);\n }, [connect]);\n}\n\nfunction useTrustWallet() {\n const connect = useConnect();\n return useCallback(async connectOptions => {\n const {\n trustWallet\n } = await import('./safeChainSlug-12460a7c.browser.esm.js').then(function (n) { return n.T; });\n return connect(trustWallet(), connectOptions);\n }, [connect]);\n}\n\nfunction useMetamask() {\n const connect = useConnect();\n return useCallback(async connectOptions => {\n const {\n metamaskWallet\n } = await import('./safeChainSlug-12460a7c.browser.esm.js').then(function (n) { return n.h; });\n return connect(metamaskWallet(), connectOptions);\n }, [connect]);\n}\n\nfunction useCoinbaseWallet() {\n const connect = useConnect();\n return useCallback(async connectOptions => {\n const {\n coinbaseWallet\n } = await import('./safeChainSlug-12460a7c.browser.esm.js').then(function (n) { return n.g; });\n return connect(coinbaseWallet(), connectOptions);\n }, [connect]);\n}\n\nfunction useFrameWallet() {\n const connect = useConnect();\n return useCallback(async connectOptions => {\n const {\n frameWallet\n } = await import('./frameWallet-6283facc.browser.esm.js');\n return connect(frameWallet(), connectOptions);\n }, [connect]);\n}\n\nfunction useBloctoWallet() {\n const connect = useConnect();\n return useCallback(async options => {\n const {\n bloctoWallet\n } = await import('./bloctoWallet-b9e11021.browser.esm.js');\n return connect(bloctoWallet({\n appId: options?.appId\n }), options);\n }, [connect]);\n}\n\nconst useEmbeddedWalletSendVerificationEmail = () => {\n const context = useWalletContext();\n const sendVerificationEmail = useCallback(async email => {\n if (!context.clientId) {\n throw new Error(\"Please, provide a clientId in the ThirdwebProvider\");\n }\n return EmbeddedWallet.sendVerificationEmail({\n email,\n clientId: context.clientId\n });\n }, [context.clientId]);\n return sendVerificationEmail;\n};\n\n/**\n * @deprecated We have deprecated `PaperWallet` in favor of our `EmbeddedWallet` which adds support for more sign in methods. use the `useEmbeddedWallet` hook instead\n */\nfunction usePaperWallet() {\n const connect = useConnect();\n return useCallback(async options => {\n const {\n paperWallet\n } = await import('./paperWallet-6ef8b5a7.browser.esm.js');\n return connect(paperWallet(options), {\n chainId: options.chainId,\n email: options.email\n });\n }, [connect]);\n}\n\n/**\n * @deprecated We have deprecated `PaperWallet` in favor of our `EmbeddedWallet` which adds support for more sign in methods. use the `useEmbeddedWallet` hook instead\n */\nfunction usePaperWalletUserEmail() {\n const wallet = useWallet();\n const queryClient = useQueryClient();\n const emailQuery = useQuery([wallet?.walletId, \"paper-email\"], () => {\n if (!wallet || wallet.walletId !== walletIds.paper) {\n throw \"Not connected to Paper Wallet\";\n }\n return wallet.getEmail();\n }, {\n retry: false\n });\n\n // Invalidate the query when the wallet changes\n useEffect(() => {\n queryClient.invalidateQueries([wallet?.walletId, \"paper-email\"]);\n }, [wallet, queryClient]);\n return emailQuery;\n}\n\n/**\n * @deprecated use the `useWalletConnect` hook instead\n */\nfunction useWalletConnectV1() {\n const connect = useConnect();\n return useCallback(async options => {\n const {\n walletConnectV1\n } = await import('./walletConnectV1-0bb585a3.browser.esm.js');\n return connect(walletConnectV1(), options);\n }, [connect]);\n}\nfunction useWalletConnect() {\n const connect = useConnect();\n return useCallback(async options => {\n const {\n walletConnect\n } = await import('./safeChainSlug-12460a7c.browser.esm.js').then(function (n) { return n.i; });\n return connect(walletConnect(options), options);\n }, [connect]);\n}\n\nconst OneKeyScan = _ref => {\n let {\n onBack,\n onConnected,\n onGetStarted,\n walletConfig,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.oneKeyWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const wallet = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n wallet.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(wallet);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n hideBackButton: hideBackButton,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst oneKeyWalletUris = {\n ios: \"onekey-wallet://\",\n android: \"onekey-wallet://\",\n other: \"onekey-wallet://\"\n};\n\nconst OneKeyConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.oneKeyWallet;\n const connectingLocale = {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n };\n const {\n walletConfig,\n connected\n } = props;\n const connect = useConnect();\n const [errorConnecting, setErrorConnecting] = useState(false);\n const hideBackButton = props.supportedWallets.length === 1;\n const connectToExtension = useCallback(async () => {\n try {\n connectPrompted.current = true;\n setErrorConnecting(false);\n setScreen(\"connecting\");\n await wait(1000);\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [connected, connect, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if wallet is not injected\n else {\n // on mobile, open the OneKey Mobile via wallet connect\n if (isMobile()) {\n setScreen(\"open-wc-uri\");\n } else {\n // on desktop, show the OneKey app scan qr code\n setScreen(\"scanning\");\n }\n }\n })();\n }, [connectToExtension, walletConfig]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n },\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n onRetry: connectToExtension,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL\n });\n }\n if (screen === \"open-wc-uri\") {\n return /*#__PURE__*/jsx(WCOpenURI, {\n locale: connectingLocale,\n onRetry: () => {\n // NOOP - TODO make onRetry optional\n },\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: connected,\n walletConfig: walletConfig,\n appUriPrefix: oneKeyWalletUris\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(OneKeyScan, {\n onBack: props.goBack,\n onConnected: props.connected,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n walletConfig: walletConfig\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Onekey Wallet](https://onekey.so/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const oneKeyWalletConfig = oneKeyWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(oneKeyWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst oneKeyWallet = options => {\n return {\n id: OneKeyWallet.id,\n recommended: options?.recommended,\n meta: {\n name: \"OneKey Wallet\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/onekey/jnmbobjmhlngoefaiojfljckilhhlhcj\",\n android: \"https://play.google.com/store/apps/details?id=so.onekey.app.wallet\",\n ios: \"https://apps.apple.com/us/app/onekey-blockchain-defi-wallet/id1609559473\"\n },\n iconURL: \"data:image/png;base64,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\"\n },\n create: walletOptions => {\n const wallet = new OneKeyWallet({\n ...walletOptions,\n projectId: options?.projectId,\n qrcode: false\n });\n return wallet;\n },\n connectUI: OneKeyConnectUI,\n isInstalled() {\n return !!getInjectedOneKeyProvider();\n }\n };\n};\n\nexport { ConnectWallet as C, ExportLocalWallet as E, MediaRenderer as M, NetworkSelector as N, OTPInput as O, ThirdwebProvider as T, Web3Button as W, ConnectModalInline as a, useRainbowWallet as b, useTrustWallet as c, defaultTokens as d, embeddedWallet as e, useMetamask as f, useCoinbaseWallet as g, useFrameWallet as h, useBloctoWallet as i, useEmbeddedWallet as j, useEmbeddedWalletUserEmail as k, useEmbeddedWalletSendVerificationEmail as l, usePaperWalletUserEmail as m, usePaperWallet as n, useWalletConnect as o, useWalletConnectV1 as p, oneKeyWallet as q, useResolvedMediaType as r, ThirdwebNftMedia as s, openOauthSignInWindow as t, useInstalledWallets as u };\n","import { PaperWallet } from '@thirdweb-dev/wallets';\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport { useCreateWalletInstance, useSetConnectionStatus, useSetConnectedWallet, useWalletContext, useConnectionStatus } from '@thirdweb-dev/react-core';\nimport { c as useTWLocale, u as useCustomTheme, I as Img, a as iconSize, p as TextDivider, C as Container, M as ModalHeader, S as Spacer, B as Button, s as spacing, T as Text, t as Input, e as Spinner, L as Line, z as StyledButton, h as fontSize, H as ModalTitle, W as WalletEntryButton } from './formElements-8021f017.browser.esm.js';\nimport { t as openOauthSignInWindow, O as OTPInput } from './oneKeyWallet-14e8704c.browser.esm.js';\nimport { g as googleIconUri, I as InputSelectionUI, e as emailIcon, u as useScreenContext, r as reservedScreens } from './Tooltip-ee6e156f.browser.esm.js';\nimport { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport '@emotion/react';\nimport '@radix-ui/react-icons';\nimport 'detect-browser';\nimport '@radix-ui/colors';\nimport '@tanstack/react-query';\nimport '@radix-ui/react-popover';\nimport 'copy-to-clipboard';\nimport '@radix-ui/react-tabs';\nimport 'fuse.js';\nimport '@radix-ui/react-dropdown-menu';\nimport '@thirdweb-dev/chains';\nimport './safeChainSlug-12460a7c.browser.esm.js';\nimport 'qrcode';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport 'tiny-invariant';\nimport '@radix-ui/react-dialog';\nimport '@radix-ui/react-focus-scope';\nimport '@radix-ui/react-tooltip';\n\nconst PaperFormUI = props => {\n const cwLocale = useTWLocale().connectWallet;\n const locale = useTWLocale().wallets.paperWallet;\n const createWalletInstance = useCreateWalletInstance();\n const setConnectionStatus = useSetConnectionStatus();\n const setConnectedWallet = useSetConnectedWallet();\n const themeObj = useCustomTheme();\n\n // Need to trigger google login on button click to avoid popup from being blocked\n const googleLogin = async () => {\n try {\n const paperWallet = createWalletInstance(props.walletConfig);\n setConnectionStatus(\"connecting\");\n const googleWindow = openOauthSignInWindow(\"google\", themeObj);\n if (!googleWindow) {\n throw new Error(\"Failed to open google login window\");\n }\n await paperWallet.connect({\n googleLogin: {\n openedWindow: googleWindow,\n closeOpenedWindow: openedWindow => {\n openedWindow.close();\n }\n }\n });\n setConnectedWallet(paperWallet);\n } catch (e) {\n setConnectionStatus(\"disconnected\");\n console.error(e);\n }\n };\n return /*#__PURE__*/jsxs(\"div\", {\n children: [props.googleLoginSupported && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsxs(SocialButton, {\n variant: \"secondary\",\n fullWidth: true,\n onClick: () => {\n googleLogin();\n props.onSelect({\n google: true\n });\n },\n children: [/*#__PURE__*/jsx(Img, {\n src: googleIconUri,\n width: iconSize.md,\n height: iconSize.md\n }), locale.signInWithGoogle]\n }), /*#__PURE__*/jsx(TextDivider, {\n text: cwLocale.or,\n py: \"lg\"\n })]\n }), /*#__PURE__*/jsx(InputSelectionUI, {\n onSelect: email => props.onSelect({\n email\n }),\n placeholder: locale.emailPlaceholder,\n name: \"email\",\n type: \"email\",\n errorMessage: _input => {\n const input = _input.replace(/\\+/g, \"\");\n const emailRegex = /^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,})$/g;\n const isValidEmail = emailRegex.test(input);\n if (!isValidEmail) {\n return locale.invalidEmail;\n }\n },\n emptyErrorMessage: locale.emailRequired,\n submitButtonText: locale.submitEmail\n })]\n });\n};\nconst PaperFormUIScreen = props => {\n const isCompact = props.modalSize === \"compact\";\n const locale = useTWLocale().wallets.paperWallet;\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n p: \"lg\",\n animate: \"fadein\",\n style: {\n minHeight: \"250px\"\n },\n children: [/*#__PURE__*/jsx(ModalHeader, {\n onBack: props.onBack,\n title: locale.signIn\n }), isCompact ? /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }) : null, /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"y\",\n p: isCompact ? undefined : \"lg\",\n children: /*#__PURE__*/jsx(PaperFormUI, {\n walletConfig: props.walletConfig,\n googleLoginSupported: props.googleLoginSupported,\n onSelect: props.onSelect\n })\n })]\n });\n};\nconst SocialButton = /* @__PURE__ */styled(Button)({\n display: \"flex\",\n justifyContent: \"center\",\n gap: spacing.sm\n});\n\nconst PaperOTPLoginUI = props => {\n const locale = useTWLocale().wallets.paperWallet.emailLoginScreen;\n const email = props.selectionData;\n const [otpInput, setOtpInput] = useState(\"\");\n const [recoveryCode, setRecoveryCode] = useState(\"\");\n const {\n createWalletInstance,\n setConnectedWallet,\n setConnectionStatus\n } = useWalletContext();\n const [wallet, setWallet] = useState(null);\n const isWideModal = props.modalSize === \"wide\";\n const [verifyStatus, setVerifyStatus] = useState(\"idle\");\n const [sendEmailStatus, setSendEmailStatus] = useState(\"sending\");\n const recoveryCodeRequired = !!(typeof sendEmailStatus !== \"string\" && sendEmailStatus.recoveryShareManagement !== \"AWS_MANAGED\" && sendEmailStatus.isNewDevice && !sendEmailStatus.isNewUser);\n const sendEmail = useCallback(async () => {\n setOtpInput(\"\");\n setVerifyStatus(\"idle\");\n setSendEmailStatus(\"sending\");\n try {\n const _wallet = createWalletInstance(props.walletConfig);\n setWallet(_wallet);\n const _paperSDK = await _wallet.getPaperSDK();\n const {\n isNewDevice,\n isNewUser,\n recoveryShareManagement\n } = await _paperSDK.auth.sendPaperEmailLoginOtp({\n email: email\n });\n setSendEmailStatus({\n isNewDevice,\n isNewUser,\n recoveryShareManagement\n });\n } catch (e) {\n console.error(e);\n setVerifyStatus(\"idle\");\n setSendEmailStatus(\"error\");\n }\n }, [createWalletInstance, email, props.walletConfig]);\n const handleSubmit = otp => {\n if (recoveryCodeRequired && !recoveryCode) {\n return;\n }\n if (typeof sendEmailStatus === \"string\" || otp.length !== 6) {\n return;\n }\n verifyCodes(otp);\n };\n const verifyCodes = async otp => {\n setVerifyStatus(\"idle\");\n if (!wallet) {\n return;\n }\n try {\n setVerifyStatus(\"verifying\");\n setConnectionStatus(\"connecting\");\n await wallet.connect({\n email,\n otp,\n recoveryCode: recoveryCodeRequired ? recoveryCode : undefined\n });\n setConnectedWallet(wallet);\n setVerifyStatus(\"valid\");\n props.connected();\n } catch (e) {\n setVerifyStatus(\"invalid\");\n console.error(e);\n }\n };\n\n // send email on mount\n const emailSentOnMount = useRef(false);\n useEffect(() => {\n if (!emailSentOnMount.current) {\n emailSentOnMount.current = true;\n sendEmail();\n }\n }, [sendEmail]);\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: locale.title,\n onBack: props.goBack\n })\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n center: \"y\",\n children: /*#__PURE__*/jsxs(\"form\", {\n onSubmit: e => {\n e.preventDefault();\n },\n children: [/*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n center: \"x\",\n px: \"lg\",\n children: [!isWideModal && /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Text, {\n children: locale.enterCodeSendTo\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n children: email\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n })]\n }), /*#__PURE__*/jsx(OTPInput, {\n isInvalid: verifyStatus === \"invalid\",\n digits: 6,\n value: otpInput,\n setValue: value => {\n setOtpInput(value);\n setVerifyStatus(\"idle\"); // reset error\n if (!recoveryCodeRequired) {\n handleSubmit(value);\n }\n },\n onEnter: () => {\n handleSubmit(otpInput);\n }\n }), recoveryCodeRequired && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n px: \"lg\",\n style: {\n textAlign: \"center\"\n },\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n children: locale.newDeviceDetected\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Text, {\n balance: true,\n size: \"sm\",\n multiline: true,\n style: {\n maxWidth: \"350px\"\n },\n children: locale.enterRecoveryCode\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Input, {\n sm: true,\n autoComplete: \"off\",\n required: true,\n \"data-error\": verifyStatus === \"invalid\",\n id: \"recovery-code\",\n variant: \"outline\",\n style: {\n textAlign: \"center\"\n },\n value: recoveryCode,\n onChange: e => setRecoveryCode(e.target.value),\n placeholder: locale.enterRecoveryCode\n })]\n }), verifyStatus === \"invalid\" && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n color: \"danger\",\n center: true,\n children: recoveryCodeRequired ? locale.invalidCodeOrRecoveryCode : locale.invalidCode\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n px: isWideModal ? \"xxl\" : \"lg\",\n children: verifyStatus === \"verifying\" ? /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n })\n }) : /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n children: /*#__PURE__*/jsx(Button, {\n onClick: () => handleSubmit(otpInput),\n variant: \"accent\",\n type: \"submit\",\n style: {\n width: \"100%\"\n },\n children: locale.verify\n })\n }, \"btn-container\")\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), !isWideModal && /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n p: isWideModal ? undefined : \"lg\",\n animate: \"fadein\",\n children: [sendEmailStatus === \"error\" && /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(Text, {\n size: \"sm\",\n center: true,\n color: \"danger\",\n children: locale.failedToSendCode\n })\n }), sendEmailStatus === \"sending\" && /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n center: \"both\",\n gap: \"xs\",\n style: {\n textAlign: \"center\"\n },\n children: [/*#__PURE__*/jsx(Text, {\n size: \"sm\",\n children: locale.sendingCode\n }), /*#__PURE__*/jsx(Spinner, {\n size: \"xs\",\n color: \"secondaryText\"\n })]\n }), typeof sendEmailStatus !== \"string\" && /*#__PURE__*/jsx(LinkButton, {\n onClick: sendEmail,\n type: \"button\",\n children: locale.resendCode\n })]\n })]\n })\n })]\n });\n};\nconst LinkButton = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n color: theme.colors.accentText,\n fontSize: fontSize.sm,\n cursor: \"pointer\",\n textAlign: \"center\",\n width: \"100%\",\n \"&:hover\": {\n color: theme.colors.primaryText\n }\n };\n});\n\nconst PaperGoogleLogin = props => {\n const {\n goBack,\n modalSize,\n connected\n } = props;\n const locale = useTWLocale().wallets.paperWallet.googleLoginScreen;\n const createWalletInstance = useCreateWalletInstance();\n const setConnectionStatus = useSetConnectionStatus();\n const setConnectedWallet = useSetConnectedWallet();\n const connectionStatus = useConnectionStatus();\n const themeObj = useCustomTheme();\n\n // Need to trigger google login on button click to avoid popup from being blocked\n const googleLogin = async () => {\n try {\n const paperWallet = createWalletInstance(props.walletConfig);\n setConnectionStatus(\"connecting\");\n const googleWindow = openOauthSignInWindow(\"google\", themeObj);\n if (!googleWindow) {\n throw new Error(\"Failed to open google login window\");\n }\n await paperWallet.connect({\n googleLogin: {\n openedWindow: googleWindow,\n closeOpenedWindow: openedWindow => {\n openedWindow.close();\n }\n }\n });\n setConnectedWallet(paperWallet);\n props.connected();\n } catch (e) {\n setConnectionStatus(\"disconnected\");\n console.error(e);\n }\n };\n useEffect(() => {\n if (connectionStatus === \"connected\") {\n connected();\n }\n }, [connectionStatus, connected]);\n return /*#__PURE__*/jsx(Container, {\n animate: \"fadein\",\n flex: \"column\",\n fullHeight: true,\n children: /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n expand: true,\n p: \"lg\",\n style: {\n paddingBottom: 0\n },\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n center: \"both\",\n gap: \"xs\",\n children: [/*#__PURE__*/jsx(Img, {\n src: googleIconUri,\n width: iconSize.md,\n height: iconSize.md\n }), /*#__PURE__*/jsxs(ModalTitle, {\n children: [\" \", locale.title, \" \"]\n })]\n }),\n onBack: goBack\n }), modalSize === \"compact\" ? /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }) : null, /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n center: \"both\",\n expand: true,\n style: {\n textAlign: \"center\",\n minHeight: \"250px\"\n },\n children: [connectionStatus === \"connecting\" && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n multiline: true,\n center: true,\n style: {\n maxWidth: \"250px\"\n },\n children: locale.instruction\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n center: \"x\",\n flex: \"row\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n })]\n }), connectionStatus === \"disconnected\" && /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Text, {\n color: \"danger\",\n children: locale.failed\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Button, {\n variant: \"primary\",\n onClick: googleLogin,\n children: locale.retry\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xxl\"\n })]\n })]\n })]\n })\n });\n};\n\nconst paperWallet = options => {\n const defaultRecovery = \"AWS_MANAGED\";\n const defaultConfig = {\n oauthOptions: {\n providers: [\"google\"]\n }\n };\n const finalOptions = options ? {\n ...defaultConfig,\n ...options\n } : defaultConfig;\n const {\n oauthOptions\n } = finalOptions;\n return {\n category: \"socialLogin\",\n isHeadless: true,\n id: PaperWallet.id,\n recommended: finalOptions?.recommended,\n meta: {\n ...PaperWallet.meta,\n name: \"Email\",\n iconURL: emailIcon\n },\n create(walletOptions) {\n return new PaperWallet({\n ...walletOptions,\n ...finalOptions,\n advancedOptions: {\n recoveryShareManagement: \"AWS_MANAGED\",\n ...finalOptions?.advancedOptions\n }\n });\n },\n selectUI(props) {\n return /*#__PURE__*/jsx(PaperSelectionUI, {\n ...props,\n recoveryShareManagement: finalOptions?.advancedOptions?.recoveryShareManagement || defaultRecovery,\n providers: oauthOptions ? oauthOptions?.providers : undefined\n });\n },\n connectUI(props) {\n return /*#__PURE__*/jsx(PaperConnectUI, {\n ...props,\n recoveryShareManagement: finalOptions?.advancedOptions?.recoveryShareManagement || defaultRecovery,\n providers: oauthOptions ? oauthOptions?.providers : undefined\n });\n }\n };\n};\nconst PaperSelectionUI = props => {\n const screen = useScreenContext();\n\n // show the icon + text if\n // wide -\n // compact + not main screen (safe/smart wallet list screen)\n if (props.modalSize === \"wide\" || screen !== reservedScreens.main && props.modalSize === \"compact\") {\n return /*#__PURE__*/jsx(WalletEntryButton, {\n walletConfig: props.walletConfig,\n selectWallet: () => {\n props.onSelect(undefined);\n }\n });\n }\n return /*#__PURE__*/jsx(\"div\", {\n children: /*#__PURE__*/jsx(PaperFormUI, {\n walletConfig: props.walletConfig,\n googleLoginSupported: props.recoveryShareManagement !== \"USER_MANAGED\" && !!props.providers?.includes(\"google\"),\n onSelect: props.onSelect\n })\n });\n};\nconst PaperConnectUI = props => {\n const [loginType, setLoginType] = useState(props.selectionData);\n if (loginType) {\n const handleBack = () => {\n // go back to base screen\n if (props.modalSize === \"wide\") {\n setLoginType(undefined);\n }\n\n // go to main screen\n else {\n props.goBack();\n }\n };\n if (\"email\" in loginType) {\n return /*#__PURE__*/jsx(PaperOTPLoginUI, {\n ...props,\n recoveryShareManagement: props.recoveryShareManagement,\n selectionData: loginType.email,\n goBack: handleBack\n });\n }\n\n // google\n else {\n return /*#__PURE__*/jsx(PaperGoogleLogin, {\n ...props,\n goBack: handleBack\n });\n }\n }\n return /*#__PURE__*/jsx(PaperFormUIScreen, {\n walletConfig: props.walletConfig,\n googleLoginSupported: props.recoveryShareManagement !== \"USER_MANAGED\" && !!props.providers?.includes(\"google\"),\n modalSize: props.modalSize,\n onSelect: _loginType => {\n setLoginType(_loginType);\n },\n onBack: props.goBack\n });\n};\n\nexport { paperWallet };\n","import { CoinbaseWallet, getInjectedCoinbaseProvider, MetaMaskWallet, getInjectedMetamaskProvider, WalletConnect, TrustWallet as TrustWallet$1, assertWindowEthereum, ZerionWallet, RainbowWallet as RainbowWallet$1, getInjectedRainbowProvider, PhantomWallet, getInjectedPhantomProvider } from '@thirdweb-dev/wallets';\nimport { useCreateWalletInstance, useWalletContext, useConnect, useSetConnectionStatus, useSetConnectedWallet } from '@thirdweb-dev/react-core';\nimport { I as Img, b as StyledDiv, u as useCustomTheme, r as radius, q as fadeInAnimation, f as ModalConfigCtx, C as Container, M as ModalHeader, T as Text, S as Spacer, B as Button, s as spacing, a as iconSize, L as Line, c as useTWLocale, i as isMobile, z as StyledButton, A as ScreenBottomContainer, h as fontSize, V as isAndroid, X as isIOS, e as Spinner, g as Label, t as Input, w as InputContainer, x as InputButton } from './formElements-8021f017.browser.esm.js';\nimport { useContext, useMemo, useState, useRef, useEffect, useCallback } from 'react';\nimport { keyframes } from '@emotion/react';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { ReloadIcon } from '@radix-ui/react-icons';\nimport QRCodeUtil from 'qrcode';\n\nfunction WalletLogoSpinner(props) {\n const loaderRadius = 20;\n const radiusFactor = 36 - loaderRadius;\n const dashArrayStart = 116 + radiusFactor;\n const dashArrayEnd = 245 + radiusFactor;\n const dashOffset = -1 * (360 + radiusFactor * 1.75);\n return /*#__PURE__*/jsx(LogoContainer, {\n \"data-error\": props.error,\n children: /*#__PURE__*/jsx(\"div\", {\n \"data-container\": true,\n style: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n children: /*#__PURE__*/jsxs(\"div\", {\n \"data-img-container\": true,\n children: [/*#__PURE__*/jsx(\"svg\", {\n viewBox: \"0 0 110 110\",\n style: {\n display: props.error ? \"none\" : \"block\"\n },\n children: /*#__PURE__*/jsx(\"rect\", {\n x: \"2\",\n y: \"2\",\n width: \"106\",\n height: \"106\",\n rx: loaderRadius,\n strokeDasharray: `${dashArrayStart} ${dashArrayEnd}`,\n strokeDashoffset: dashOffset,\n strokeLinecap: \"round\",\n fill: \"none\",\n strokeWidth: 4\n })\n }), /*#__PURE__*/jsx(Img, {\n src: props.iconUrl,\n width: \"80\",\n height: \"80\"\n })]\n })\n })\n });\n}\nconst dashRotateAnimation = keyframes`\nfrom {\n stroke-dashoffset: 0px;\n}\n`;\nconst shakeErrorAnimation = keyframes`\n 0% {\n transform: translateX(0);\n }\n 25% {\n transform: translateX(-5px);\n }\n 50% {\n transform: translateX(5px);\n }\n 75% {\n transform: translateX(-5px);\n }\n 100% {\n transform: translateX(0);\n }\n`;\nconst plusAnimation = keyframes`\n0% {\n transform: scale(0.95);\n}\n100% {\n opacity: 0;\n transform: scale(1.4);\n}\n`;\nconst LogoContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n display: \"flex\",\n justifyContent: \"center\",\n position: \"relative\",\n borderRadius: radius.xl,\n \"[data-img-container]\": {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n position: \"relative\"\n },\n \"&[data-error='true'] [data-container]\": {\n animation: `${shakeErrorAnimation} 0.25s linear`\n },\n \"&[data-error='true'] [data-img-container]::before\": {\n content: '\"\"',\n position: \"absolute\",\n inset: 0,\n background: theme.colors.danger,\n animation: `${plusAnimation} 1.5s ease infinite`,\n borderRadius: \"20px\",\n zIndex: -1\n },\n svg: {\n position: \"absolute\",\n /* can't use inset because safari doesn't like it */\n left: \"-8px\",\n top: \"-8px\",\n width: \"calc(100% + 16px)\",\n height: \"calc(100% + 16px)\",\n animation: `${fadeInAnimation} 400ms ease`\n },\n img: {\n zIndex: 100\n },\n rect: {\n animation: `${dashRotateAnimation} 1.2s linear infinite`,\n stroke: theme.colors.accentText\n }\n };\n});\n\nconst ConnectingScreen = props => {\n const {\n locale\n } = props;\n const modalConfig = useContext(ModalConfigCtx);\n return /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n fullHeight: true,\n flex: \"column\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n style: {\n paddingBottom: 0\n },\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: props.walletName,\n onBack: props.hideBackButton ? undefined : props.onBack\n })\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n center: \"y\",\n expand: true,\n px: modalConfig.modalSize === \"compact\" ? \"lg\" : \"xxl\",\n relative: true,\n style: {\n paddingTop: 0\n },\n children: [/*#__PURE__*/jsx(Container, {\n py: \"3xl\",\n children: /*#__PURE__*/jsx(WalletLogoSpinner, {\n error: props.errorConnecting,\n iconUrl: props.walletIconURL\n })\n }), /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n style: {\n animationDuration: \"200ms\"\n },\n children: [/*#__PURE__*/jsx(Text, {\n center: true,\n color: \"primaryText\",\n size: \"lg\",\n weight: 600,\n children: props.errorConnecting ? locale.failed : locale.inProgress\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), !props.errorConnecting ? /*#__PURE__*/jsx(Text, {\n balance: true,\n center: true,\n multiline: true,\n children: locale.instruction\n }) : /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n animate: \"fadein\",\n children: /*#__PURE__*/jsxs(Button, {\n fullWidth: true,\n variant: \"accent\",\n onClick: props.onRetry,\n style: {\n gap: spacing.xs,\n alignItems: \"center\"\n },\n children: [/*#__PURE__*/jsx(ReloadIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), \" \", locale.tryAgain]\n })\n })]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"x\",\n p: \"lg\",\n children: /*#__PURE__*/jsx(Button, {\n variant: \"link\",\n onClick: props.onGetStarted,\n children: locale.getStartedLink\n })\n })]\n });\n};\n\nconst QRCode = props => {\n const size = props.size || 310;\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n children: [props.qrCodeUri ? /*#__PURE__*/jsx(QRCodeContainer, {\n children: /*#__PURE__*/jsx(QRCodeRenderer, {\n uri: props.qrCodeUri,\n size: size + 20,\n ecl: \"M\",\n clearSize: props.QRIcon ? 70 : undefined\n })\n }) : /*#__PURE__*/jsxs(QRPlaceholder, {\n style: {\n width: `${size}px`,\n height: `${size}px`\n },\n children: [/*#__PURE__*/jsx(\"span\", {\n \"data-v1\": true\n }), /*#__PURE__*/jsx(\"span\", {\n \"data-v2\": true\n }), /*#__PURE__*/jsx(\"span\", {\n \"data-v3\": true\n }), /*#__PURE__*/jsx(\"div\", {})]\n }), props.QRIcon && /*#__PURE__*/jsx(IconContainer, {\n children: props.QRIcon\n })]\n });\n};\nconst IconContainer = /* @__PURE__ */StyledDiv({\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignContent: \"center\",\n zIndex: 1000\n});\nconst QRCodeContainer = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n animation: `${fadeInAnimation} 600ms ease`,\n \"--ck-qr-dot-color\": theme.colors.primaryText,\n \"--ck-body-background\": theme.colors.modalBg,\n \"--ck-qr-background\": theme.colors.modalBg\n };\n});\nconst generateMatrix = (value, errorCorrectionLevel) => {\n const arr = Array.prototype.slice.call(QRCodeUtil.create(value, {\n errorCorrectionLevel\n }).modules.data, 0);\n const sqrt = Math.sqrt(arr.length);\n return arr.reduce((rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows, []);\n};\nconst PlaceholderKeyframes = keyframes`\n 0%{ background-position: 100% 0; }\n 100%{ background-position: -100% 0; }\n`;\nconst QRPlaceholder = /* @__PURE__ */StyledDiv(() => {\n const theme = useCustomTheme();\n return {\n \"--color\": theme.colors.skeletonBg,\n \"--bg\": theme.colors.modalBg,\n overflow: \"hidden\",\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: radius.md,\n \"> div\": {\n zIndex: 4,\n position: \"relative\",\n width: \"28%\",\n height: \"28%\",\n borderRadius: \"5px\",\n background: \"var(--bg)\",\n boxShadow: \"0 0 0 7px var(--bg)\"\n },\n \"> span\": {\n zIndex: 4,\n position: \"absolute\",\n background: \"var(--color)\",\n borderRadius: \"12px\",\n width: \"13.25%\",\n height: \"13.25%\",\n boxShadow: \"0 0 0 4px var(--bg)\",\n \"&:before\": {\n content: '\"\"',\n position: \"absolute\",\n inset: \"9px\",\n borderRadius: \"3px\",\n boxShadow: \"0 0 0 4px var(--bg)\"\n },\n \"&[data-v1]\": {\n top: 0,\n left: 0\n },\n \"&[data-v2]\": {\n top: 0,\n right: 0\n },\n \"&[data-v3]\": {\n bottom: 0,\n left: 0\n }\n },\n \"&:before\": {\n zIndex: 3,\n content: '\"\"',\n position: \"absolute\",\n inset: 0,\n background: \"repeat\",\n backgroundSize: \"1.888% 1.888%\",\n backgroundImage: \"radial-gradient(var(--color) 41%, transparent 41%)\"\n },\n \"&::after\": {\n zIndex: 100,\n content: '\"\"',\n position: \"absolute\",\n inset: 0,\n transform: \"scale(1.5) rotate(45deg)\",\n background: \"linear-gradient(90deg, transparent 50%, var(--color), transparent)\",\n backgroundSize: \"200% 100%\",\n animation: `${PlaceholderKeyframes} 1000ms linear infinite both`\n }\n };\n});\nfunction QRCodeRenderer(_ref) {\n let {\n ecl = \"M\",\n size: sizeProp = 200,\n uri,\n clearSize = 0,\n image,\n imageBackground = \"transparent\"\n } = _ref;\n const logoSize = clearSize;\n const size = sizeProp - 10 * 2;\n const dots = useMemo(() => {\n const dotsArray = [];\n const matrix = generateMatrix(uri, ecl);\n const cellSize = size / matrix.length;\n const qrList = [{\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: 0,\n y: 1\n }];\n qrList.forEach(_ref2 => {\n let {\n x,\n y\n } = _ref2;\n const x1 = (matrix.length - 7) * cellSize * x;\n const y1 = (matrix.length - 7) * cellSize * y;\n for (let i = 0; i < 3; i++) {\n dotsArray.push( /*#__PURE__*/jsx(\"rect\", {\n fill: i % 2 !== 0 ? \"var(--ck-qr-background, var(--ck-body-background))\" : \"var(--ck-qr-dot-color)\",\n rx: (i - 2) * -5 + (i === 0 ? 2 : 3),\n ry: (i - 2) * -5 + (i === 0 ? 2 : 3),\n width: cellSize * (7 - i * 2),\n height: cellSize * (7 - i * 2),\n x: x1 + cellSize * i,\n y: y1 + cellSize * i\n }, `${i}-${x}-${y}`));\n }\n });\n if (image) {\n const x1 = (matrix.length - 7) * cellSize * 1;\n const y1 = (matrix.length - 7) * cellSize * 1;\n dotsArray.push( /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(\"rect\", {\n fill: imageBackground,\n rx: (0 - 2) * -5 + 2,\n ry: (0 - 2) * -5 + 2,\n width: cellSize * (7 - 0 * 2),\n height: cellSize * (7 - 0 * 2),\n x: x1 + cellSize * 0,\n y: y1 + cellSize * 0\n }), /*#__PURE__*/jsx(\"foreignObject\", {\n width: cellSize * (7 - 0 * 2),\n height: cellSize * (7 - 0 * 2),\n x: x1 + cellSize * 0,\n y: y1 + cellSize * 0,\n children: /*#__PURE__*/jsx(\"div\", {\n style: {\n borderRadius: (0 - 2) * -5 + 2,\n overflow: \"hidden\"\n },\n children: image\n })\n })]\n }));\n }\n const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n matrix.forEach((row, i) => {\n row.forEach((_, j) => {\n if (matrix[i][j]) {\n // Do not render dots under position squares\n if (!(i < 7 && j < 7 || i > matrix.length - 8 && j < 7 || i < 7 && j > matrix.length - 8)) {\n //if (image && i > matrix.length - 9 && j > matrix.length - 9) return;\n if (image || !(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {\n dotsArray.push( /*#__PURE__*/jsx(\"circle\", {\n cx: i * cellSize + cellSize / 2,\n cy: j * cellSize + cellSize / 2,\n fill: \"var(--ck-qr-dot-color)\",\n r: cellSize / 3\n }, `circle-${i}-${j}`));\n }\n }\n }\n });\n });\n return dotsArray;\n }, [ecl, image, imageBackground, logoSize, size, uri]);\n return /*#__PURE__*/jsxs(\"svg\", {\n height: size,\n width: size,\n viewBox: `0 0 ${size} ${size}`,\n style: {\n width: size,\n height: size\n },\n children: [/*#__PURE__*/jsx(\"rect\", {\n fill: \"transparent\",\n height: size,\n width: size\n }), dots]\n });\n}\n\nfunction openWindow(uri) {\n if (uri.startsWith(\"http\")) {\n // taken from for https://github.com/rainbow-me/rainbowkit/\n\n // Using 'window.open' causes issues on iOS in non-Safari browsers and\n // WebViews where a blank tab is left behind after connecting.\n // This is especially bad in some WebView scenarios (e.g. following a\n // link from Twitter) where the user doesn't have any mechanism for\n // closing the blank tab.\n // For whatever reason, links with a target of \"_blank\" don't suffer\n // from this problem, and programmatically clicking a detached link\n // element with the same attributes also avoids the issue.\n\n const link = document.createElement(\"a\");\n link.href = uri;\n link.target = \"_blank\";\n link.rel = \"noreferrer noopener\";\n link.click();\n } else {\n window.location.href = uri;\n }\n}\n\nconst AppleIcon = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.size,\n height: props.size,\n viewBox: \"0 0 23 28\",\n fill: \"none\",\n children: /*#__PURE__*/jsx(\"path\", {\n d: \"M22.4181 21.6041C22.008 22.5506 21.5224 23.422 20.9599 24.223C20.1931 25.3151 19.5652 26.0711 19.0814 26.4908C18.3313 27.1799 17.5277 27.5327 16.6671 27.5528C16.0493 27.5528 15.3043 27.3772 14.437 27.021C13.5669 26.6664 12.7673 26.4908 12.0362 26.4908C11.2694 26.4908 10.447 26.6664 9.56734 27.021C8.68636 27.3772 7.97665 27.5628 7.43403 27.5812C6.60879 27.6164 5.78624 27.2534 4.96519 26.4908C4.44116 26.0343 3.78569 25.2516 3.00047 24.1428C2.15799 22.9587 1.46536 21.5857 0.92274 20.0203C0.341611 18.3295 0.050293 16.6922 0.050293 15.1071C0.050293 13.2914 0.44307 11.7253 1.2298 10.413C1.84809 9.35886 2.67065 8.52734 3.70014 7.91691C4.72963 7.30648 5.84199 6.99541 7.03991 6.97551C7.69538 6.97551 8.55493 7.17804 9.6231 7.57607C10.6882 7.97544 11.3722 8.17797 11.672 8.17797C11.8962 8.17797 12.656 7.94116 13.944 7.46904C15.162 7.0312 16.19 6.84991 17.0321 6.92133C19.3141 7.10529 21.0285 8.00387 22.1687 9.62276C20.1278 10.858 19.1182 12.5881 19.1383 14.8076C19.1567 16.5363 19.7846 17.9749 21.0185 19.1172C21.5777 19.6473 22.2022 20.0571 22.897 20.3481C22.7463 20.7846 22.5872 21.2027 22.4181 21.6041ZM17.1845 1.03178C17.1845 2.38678 16.6889 3.65194 15.7011 4.82296C14.509 6.21507 13.0672 7.0195 11.5036 6.89256C11.4837 6.73 11.4721 6.55892 11.4721 6.37913C11.4721 5.07833 12.039 3.68622 13.0457 2.54798C13.5484 1.97167 14.1876 1.49247 14.9628 1.11021C15.7363 0.733653 16.4679 0.525407 17.156 0.489746C17.1761 0.670889 17.1845 0.85206 17.1845 1.03178Z\",\n fill: \"#959CA0\"\n })\n });\n};\n\nconst ChromeIcon = props => {\n return /*#__PURE__*/jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.size,\n height: props.size,\n viewBox: \"0 0 190.5 190.5\",\n children: /*#__PURE__*/jsxs(\"g\", {\n transform: \"translate(90.669 -507.469)\",\n children: [/*#__PURE__*/jsx(\"path\", {\n d: \"M4.583 650.342c26.304 0 47.627-21.324 47.627-47.628s-21.323-47.628-47.627-47.628-47.627 21.324-47.627 47.628 21.323 47.628 47.627 47.628z\",\n fill: \"#fff\",\n clipPath: \"none\",\n mask: \"none\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M-36.664 626.539l-41.24-71.43c-8.362 14.479-12.765 30.904-12.765 47.625s4.401 33.146 12.762 47.625 20.387 26.503 34.868 34.86 30.908 12.755 47.628 12.75l41.24-71.43v-.011c-4.177 7.244-10.188 13.26-17.428 17.443a47.62 47.62 0 0 1-47.632.007 47.62 47.62 0 0 1-17.433-17.437z\",\n fill: \"#229342\",\n clipPath: \"none\",\n mask: \"none\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M45.826 626.536l-41.239 71.43c16.72.003 33.146-4.398 47.626-12.757s26.504-20.384 34.863-34.865a95.24 95.24 0 0 0 12.755-47.627c-.003-16.72-4.408-33.145-12.772-47.623H4.58l-.01.007a47.62 47.62 0 0 1 23.819 6.372c7.243 4.179 13.257 10.19 17.439 17.431a47.62 47.62 0 0 1-.001 47.633z\",\n fill: \"#fbc116\",\n clipPath: \"none\",\n mask: \"none\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M4.583 640.43c20.824 0 37.705-16.881 37.705-37.706s-16.881-37.705-37.705-37.705-37.705 16.881-37.705 37.705 16.881 37.706 37.705 37.706z\",\n fill: \"#1a73e8\",\n clipPath: \"none\",\n mask: \"none\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M4.583 555.097h82.479c-8.358-14.481-20.381-26.507-34.861-34.868a95.23 95.23 0 0 0-47.625-12.76c-16.72.001-33.145 4.404-47.623 12.767a95.23 95.23 0 0 0-34.856 34.872l41.24 71.43.011.006a47.62 47.62 0 0 1-.015-47.633c4.179-7.242 10.193-13.256 17.434-17.436s15.456-6.381 23.818-6.379z\",\n fill: \"#e33b2e\",\n clipPath: \"none\",\n mask: \"none\"\n })]\n })\n });\n};\n\nconst PlayStoreIcon = props => {\n return /*#__PURE__*/jsxs(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.size,\n height: props.size,\n viewBox: \"0 0 23 26\",\n fill: \"none\",\n children: [/*#__PURE__*/jsx(\"path\", {\n d: \"M10.5832 12.0978L0.0976562 23.2275C0.0980507 23.2298 0.0988382 23.2317 0.0992076 23.2341C0.420793 24.4427 1.52467 25.3326 2.83473 25.3326C3.35844 25.3326 3.85012 25.191 4.27179 24.9424L4.30528 24.9228L16.1087 18.1117L10.5838 12.0977\",\n fill: \"#EB3131\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M21.1922 10.2046L21.1821 10.1977L16.0862 7.2435L10.345 12.3523L16.1061 18.1127L21.1752 15.1879C22.0639 14.7081 22.6672 13.7712 22.6672 12.6908C22.6672 11.6182 22.072 10.6859 21.1922 10.2046Z\",\n fill: \"#F6B60B\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M0.0961678 2.10416C0.0331317 2.33661 0 2.58009 0 2.83292V22.5002C0 22.7526 0.0327407 22.9969 0.0965672 23.2285L10.9441 12.3832L0.0965672 2.10444\",\n fill: \"#5778C5\"\n }), /*#__PURE__*/jsx(\"path\", {\n d: \"M10.6603 12.6667L16.088 7.24061L4.29785 0.404818C3.8693 0.148138 3.36912 0 2.83391 0C1.52384 0 0.418474 0.891502 0.0968301 2.10147C0.0964356 2.10265 0.0964355 2.10347 0.0964355 2.1045L10.6603 12.6669\",\n fill: \"#3BAD49\"\n })]\n });\n};\n\nconst GetStartedScreen = _ref => {\n let {\n walletName,\n walletIconURL,\n appleStoreLink,\n googlePlayStoreLink,\n chromeExtensionLink,\n header,\n footer,\n onBack,\n locale: localeProp\n } = _ref;\n const [showScreen, setShowScreen] = useState(\"base\");\n const locale = useTWLocale().connectWallet.download;\n const isScanScreen = showScreen === \"android-scan\" || showScreen === \"ios-scan\";\n const handleBack = onBack ? () => {\n if (showScreen === \"base\") {\n onBack();\n } else {\n setShowScreen(\"base\");\n }\n } : undefined;\n return /*#__PURE__*/jsx(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: /*#__PURE__*/jsxs(Container, {\n expand: true,\n flex: \"column\",\n p: \"lg\",\n children: [showScreen === \"android-scan\" && googlePlayStoreLink && /*#__PURE__*/jsx(InstallScanScreen, {\n platformIcon: /*#__PURE__*/jsx(PlayStoreIcon, {\n size: iconSize.md\n }),\n url: googlePlayStoreLink,\n platform: \"Google Play\",\n walletName: walletName,\n walletIconURL: walletIconURL,\n onBack: handleBack,\n locale: {\n scanToDownload: localeProp.scanToDownload\n }\n }), showScreen === \"ios-scan\" && appleStoreLink && /*#__PURE__*/jsx(InstallScanScreen, {\n platformIcon: /*#__PURE__*/jsx(AppleIcon, {\n size: iconSize.md\n }),\n url: appleStoreLink,\n platform: \"App Store\",\n walletName: walletName,\n walletIconURL: walletIconURL,\n onBack: handleBack,\n locale: {\n scanToDownload: localeProp.scanToDownload\n }\n }), showScreen === \"base\" && /*#__PURE__*/jsxs(Container, {\n expand: true,\n flex: \"column\",\n children: [header || /*#__PURE__*/jsx(ModalHeader, {\n onBack: handleBack,\n title: walletName\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n animate: \"fadein\",\n flex: \"column\",\n center: \"y\",\n style: {\n minHeight: \"250px\"\n },\n children: /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n gap: \"xs\",\n children: [chromeExtensionLink && /*#__PURE__*/jsxs(ButtonLink, {\n onClick: () => {\n openWindow(chromeExtensionLink);\n },\n children: [/*#__PURE__*/jsx(ChromeIcon, {\n size: iconSize.lg\n }), /*#__PURE__*/jsx(\"span\", {\n children: locale.chrome\n })]\n }), googlePlayStoreLink && /*#__PURE__*/jsxs(ButtonLink, {\n as: \"button\",\n onClick: () => {\n if (isMobile()) {\n openWindow(googlePlayStoreLink);\n } else {\n setShowScreen(\"android-scan\");\n }\n },\n children: [/*#__PURE__*/jsx(PlayStoreIcon, {\n size: iconSize.lg\n }), /*#__PURE__*/jsx(\"span\", {\n children: locale.android\n })]\n }), appleStoreLink && /*#__PURE__*/jsxs(ButtonLink, {\n as: \"button\",\n onClick: () => {\n if (isMobile()) {\n openWindow(appleStoreLink);\n } else {\n setShowScreen(\"ios-scan\");\n }\n },\n children: [/*#__PURE__*/jsx(AppleIcon, {\n size: iconSize.lg\n }), /*#__PURE__*/jsx(\"span\", {\n children: locale.iOS\n })]\n })]\n })\n })]\n }), !isScanScreen && footer]\n })\n });\n};\nconst InstallScanScreen = props => {\n return /*#__PURE__*/jsxs(Container, {\n animate: \"fadein\",\n expand: true,\n children: [/*#__PURE__*/jsx(ModalHeader, {\n title: props.walletName,\n onBack: props.onBack\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n expand: true,\n center: \"both\",\n style: {\n textAlign: \"center\"\n },\n children: [/*#__PURE__*/jsx(QRCode, {\n qrCodeUri: props.url,\n QRIcon: /*#__PURE__*/jsx(Img, {\n src: props.walletIconURL,\n width: iconSize.xxl,\n height: iconSize.xxl\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Text, {\n multiline: true,\n center: true,\n balance: true,\n children: props.locale.scanToDownload\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n })]\n })]\n });\n};\nconst ButtonLink = /* @__PURE__ */StyledButton(() => {\n const theme = useCustomTheme();\n return {\n all: \"unset\",\n textDecoration: \"none\",\n padding: `${spacing.sm} ${spacing.md}`,\n borderRadius: radius.sm,\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.md,\n cursor: \"pointer\",\n boxSizing: \"border-box\",\n width: \"100%\",\n fontWeight: 500,\n color: theme.colors.secondaryButtonText,\n background: theme.colors.secondaryButtonBg,\n transition: \"100ms ease\",\n \"&:hover\": {\n background: theme.colors.secondaryButtonHoverBg,\n textDecoration: \"none\",\n color: theme.colors.primaryText\n }\n };\n});\n\nconst ScanScreen = props => {\n const modalConfig = useContext(ModalConfigCtx);\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n flex: \"column\",\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n onBack: props.onBack,\n title: props.walletName\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n flex: \"column\",\n px: \"lg\",\n center: \"both\",\n children: /*#__PURE__*/jsxs(\"div\", {\n style: {\n textAlign: \"center\"\n },\n children: [/*#__PURE__*/jsx(QRCode, {\n qrCodeUri: props.qrCodeUri,\n QRIcon: /*#__PURE__*/jsx(Img, {\n width: iconSize.xxl,\n height: iconSize.xxl,\n src: props.walletIconURL\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Text, {\n center: true,\n multiline: true,\n balance: true,\n style: {\n paddingInline: spacing.lg\n },\n children: props.qrScanInstruction\n })]\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(ScreenBottomContainer, {\n style: {\n border: modalConfig.modalSize === \"compact\" ? undefined : \"none\"\n },\n children: /*#__PURE__*/jsx(Button, {\n variant: \"link\",\n onClick: props.onGetStarted,\n style: {\n fontSize: fontSize.sm,\n textAlign: \"center\"\n },\n children: props.getStartedLink\n })\n })]\n });\n};\n\nconst CoinbaseScan = _ref => {\n let {\n walletConfig,\n onConnected,\n onGetStarted,\n onBack,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.coinbaseWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState(undefined);\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n (async () => {\n const wallet = createInstance(walletConfig);\n const uri = await wallet.getQrUrl();\n setQrCodeUri(uri || undefined);\n setConnectionStatus(\"connecting\");\n try {\n await wallet.connect({\n chainId: chainToConnect?.chainId\n });\n setConnectedWallet(wallet);\n onConnected();\n } catch {\n setConnectionStatus(\"disconnected\");\n }\n })();\n }, [createInstance, onConnected, walletConfig, chainToConnect?.chainId, setConnectedWallet, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n hideBackButton: hideBackButton,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst wait = ms => new Promise(resolve => setTimeout(resolve, ms));\n\nconst CoinbaseConnectUI = _ref => {\n let {\n walletConfig,\n connected,\n goBack,\n supportedWallets\n } = _ref;\n const connect = useConnect();\n const {\n meta\n } = walletConfig;\n const [screen, setScreen] = useState(\"loading\");\n const locale = useTWLocale().wallets.coinbaseWallet;\n const [errorConnecting, setErrorConnecting] = useState(false);\n const hideBackButton = supportedWallets.length === 1;\n const connectToExtension = useCallback(async () => {\n try {\n setErrorConnecting(false);\n connectPrompted.current = true;\n await wait(1000);\n setScreen(\"connecting\");\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [connected, connect, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (screen !== \"loading\") {\n return;\n }\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if metamask is not injected\n else {\n if (isMobile()) {\n // coinbase will redirect to download page for coinbase wallet apps\n connect(walletConfig);\n } else {\n setScreen(\"scanning\");\n }\n }\n })();\n }, [screen, walletConfig, connect, connectToExtension]);\n if (screen === \"connecting\" || screen === \"loading\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n },\n errorConnecting: errorConnecting,\n onGetStarted: () => setScreen(\"get-started\"),\n onRetry: connectToExtension,\n hideBackButton: hideBackButton,\n onBack: goBack,\n walletName: meta.name,\n walletIconURL: meta.iconURL\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: meta.iconURL,\n walletName: meta.name,\n chromeExtensionLink: meta.urls?.chrome,\n googlePlayStoreLink: meta.urls?.android,\n appleStoreLink: meta.urls?.ios,\n onBack: () => {\n goBack();\n }\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(CoinbaseScan, {\n onBack: goBack,\n onConnected: connected,\n onGetStarted: () => setScreen(\"get-started\"),\n walletConfig: walletConfig,\n hideBackButton: hideBackButton\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Coinbase Wallet](https://www.coinbase.com/wallet) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const coinbaseWalletConfig = coinbaseWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(coinbaseWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst coinbaseWallet = options => {\n const qrmodal = options?.qrmodal || \"custom\";\n return {\n id: CoinbaseWallet.id,\n recommended: options?.recommended,\n meta: {\n name: \"Coinbase Wallet\",\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiByeD0iOCIgZmlsbD0iIzA1NTVGRiIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwM184NjM0KSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIuMzMxMiA0SDM1LjY2NzJDNDAuMjcwNCA0IDQ0IDguMDEyOCA0NCAxMi45NjMyVjM1LjAzNjhDNDQgMzkuOTg3MiA0MC4yNzA0IDQ0IDM1LjY2ODggNDRIMTIuMzMxMkM3LjcyOTYgNDQgNCAzOS45ODcyIDQgMzUuMDM2OFYxMi45NjMyQzQgOC4wMTI4IDcuNzI5NiA0IDEyLjMzMTIgNFoiIGZpbGw9IiMwMDUyRkYiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNC4wMDAzIDkuNzkzNDZDMzEuODQ2NyA5Ljc5MzQ2IDM4LjIwNjcgMTYuMTUzNSAzOC4yMDY3IDIzLjk5OTlDMzguMjA2NyAzMS44NDYzIDMxLjg0NjcgMzguMjA2MyAyNC4wMDAzIDM4LjIwNjNDMTYuMTUzOSAzOC4yMDYzIDkuNzkzOTUgMzEuODQ2MyA5Ljc5Mzk1IDIzLjk5OTlDOS43OTM5NSAxNi4xNTM1IDE2LjE1MzkgOS43OTM0NiAyNC4wMDAzIDkuNzkzNDZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwLjUwMDYgMTkuNDU5SDI3LjQ5NzRDMjguMDczNCAxOS40NTkgMjguNTM5IDE5Ljk2MTQgMjguNTM5IDIwLjU3OVYyNy40MTlDMjguNTM5IDI4LjAzODIgMjguMDcxOCAyOC41MzkgMjcuNDk3NCAyOC41MzlIMjAuNTAwNkMxOS45MjQ2IDI4LjUzOSAxOS40NTkgMjguMDM2NiAxOS40NTkgMjcuNDE5VjIwLjU3OUMxOS40NTkgMTkuOTYxNCAxOS45MjYyIDE5LjQ1OSAyMC41MDA2IDE5LjQ1OVoiIGZpbGw9IiMwMDUyRkYiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zMzAzXzg2MzQiPgo8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/us/app/coinbase-wallet-nfts-crypto/id1278383455\"\n }\n },\n create(walletOptions) {\n return new CoinbaseWallet({\n ...walletOptions,\n headlessMode: qrmodal === \"custom\"\n });\n },\n connectUI: qrmodal === \"custom\" ? CoinbaseConnectUI : CoinbaseNativeModalConnectUI,\n isInstalled() {\n return !!getInjectedCoinbaseProvider();\n }\n };\n};\nconst CoinbaseNativeModalConnectUI = _ref => {\n let {\n connected,\n walletConfig,\n show,\n hide,\n supportedWallets,\n theme,\n goBack\n } = _ref;\n const createWalletInstance = useCreateWalletInstance();\n const setConnectionStatus = useSetConnectionStatus();\n const setConnectedWallet = useSetConnectedWallet();\n const prompted = useRef(false);\n const singleWallet = supportedWallets.length === 1;\n useEffect(() => {\n if (prompted.current) {\n return;\n }\n prompted.current = true;\n (async () => {\n hide();\n const wallet = createWalletInstance(walletConfig);\n wallet.theme = theme;\n setConnectionStatus(\"connecting\");\n try {\n await wallet.connect();\n setConnectedWallet(wallet);\n connected();\n } catch (e) {\n setConnectionStatus(\"disconnected\");\n if (!singleWallet) {\n goBack();\n show();\n }\n console.error(e);\n }\n })();\n }, [walletConfig, singleWallet, createWalletInstance, theme, setConnectionStatus, setConnectedWallet, hide, connected, goBack, show]);\n return null;\n};\n\nvar coinbaseWallet$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n coinbaseWallet: coinbaseWallet,\n CoinbaseNativeModalConnectUI: CoinbaseNativeModalConnectUI\n});\n\nconst MetamaskScan = _ref => {\n let {\n onBack,\n onConnected,\n onGetStarted,\n walletConfig,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.metamaskWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const metamask = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n metamask.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(metamask);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n hideBackButton: hideBackButton,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst metamaskUris = {\n ios: \"metamask://\",\n android: \"https://metamask.app.link/\",\n other: \"https://metamask.app.link/\"\n};\n\nconst WCOpenURI = _ref => {\n let {\n onBack,\n onConnected,\n walletConfig,\n appUriPrefix,\n onRetry,\n errorConnecting,\n hideBackButton,\n onGetStarted,\n locale\n } = _ref;\n const createInstance = useCreateWalletInstance();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const connectStarted = useRef(false);\n useEffect(() => {\n if (connectStarted.current) {\n return;\n }\n connectStarted.current = true;\n const wallet = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n wallet.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n if (isAndroid()) {\n openWindow(`${appUriPrefix.android}wc?uri=${encodeURIComponent(uri)}`);\n } else if (isIOS()) {\n openWindow(`${appUriPrefix.ios}wc?uri=${encodeURIComponent(uri)}`);\n } else {\n openWindow(`${appUriPrefix.other}wc?uri=${encodeURIComponent(uri)}`);\n }\n },\n onConnected() {\n setConnectedWallet(wallet);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus, appUriPrefix]);\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: locale,\n hideBackButton: hideBackButton,\n onBack: onBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n errorConnecting: errorConnecting,\n onRetry: onRetry,\n onGetStarted: onGetStarted\n });\n};\n\nconst MetamaskConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.metamaskWallet;\n const {\n walletConfig,\n connected\n } = props;\n const connect = useConnect();\n const [errorConnecting, setErrorConnecting] = useState(false);\n const connectingLocale = {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n };\n const hideBackButton = props.supportedWallets.length === 1;\n const connectToExtension = useCallback(async () => {\n try {\n connectPrompted.current = true;\n setErrorConnecting(false);\n setScreen(\"connecting\");\n await wait(1000);\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [connected, connect, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if metamask is not injected\n else {\n // on mobile, open metamask app link\n if (isMobile()) {\n if (props.connectionMethod === \"walletConnect\") {\n setScreen(\"open-wc-uri\");\n } else {\n window.open(`https://metamask.app.link/dapp/${window.location.toString()}`);\n }\n } else {\n // on desktop, show the metamask scan qr code\n setScreen(\"scanning\");\n }\n }\n })();\n }, [connectToExtension, props.connectionMethod, walletConfig]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: connectingLocale,\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n onRetry: connectToExtension,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n if (screen === \"open-wc-uri\") {\n return /*#__PURE__*/jsx(WCOpenURI, {\n locale: connectingLocale,\n onRetry: () => {\n // NOOP - TODO make onRetry optional\n },\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: connected,\n walletConfig: walletConfig,\n appUriPrefix: metamaskUris\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(MetamaskScan, {\n onBack: props.goBack,\n onConnected: props.connected,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n walletConfig: walletConfig\n });\n }\n return null;\n};\n\nfunction handelWCSessionRequest(wallet, uris) {\n if (isMobile()) {\n wallet.on(\"wc_session_request_sent\", () => {\n if (isAndroid()) {\n openWindow(uris.android);\n } else if (isIOS()) {\n openWindow(uris.ios);\n } else {\n openWindow(uris.other);\n }\n });\n }\n}\n\n/**\n * A wallet configurator for [MetaMask Wallet](https://metamask.io/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const metamaskWalletConfig = metamaskWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(metamaskWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst metamaskWallet = options => {\n const connectionMethod = options?.connectionMethod || \"walletConnect\";\n return {\n id: MetaMaskWallet.id,\n recommended: options?.recommended,\n meta: {\n ...MetaMaskWallet.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiNGRkU2Q0UiLz4KPHBhdGggZD0iTTY0Ljk3MTIgMTQuMTc5TDQzLjI5MDMgMzAuMjgxN0w0Ny4yOTk2IDIwLjc4MTRMNjQuOTcxMiAxNC4xNzlaIiBmaWxsPSIjRTI3NjFCIiBzdHJva2U9IiNFMjc2MUIiIHN0cm9rZS13aWR0aD0iMC4xMjQ1MTQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQuOTE5OCAxNC4xNzlMMzYuNDI2NCAzMC40MzQzTDMyLjYxMzIgMjAuNzgxNEwxNC45MTk4IDE0LjE3OVpNNTcuMTcwNCA1MS41MDUxTDUxLjM5NjEgNjAuMzUxOEw2My43NTEgNjMuNzUxTDY3LjMwMjcgNTEuNzAxMkw1Ny4xNzA0IDUxLjUwNTFaTTEyLjYzMTkgNTEuNzAxMkwxNi4xNjE5IDYzLjc1MUwyOC41MTY3IDYwLjM1MThMMjIuNzQyNCA1MS41MDUxTDEyLjYzMTkgNTEuNzAxMloiIGZpbGw9IiNFNDc2MUIiIHN0cm9rZT0iI0U0NzYxQiIgc3Ryb2tlLXdpZHRoPSIwLjEyNDUxNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yNy44MTk0IDM2LjU1NzJMMjQuMzc2NiA0MS43NjVMMzYuNjQ0NCA0Mi4zMDk3TDM2LjIwODYgMjkuMTI2OEwyNy44MTk0IDM2LjU1NzJaTTUyLjA3MTYgMzYuNTU3Mkw0My41NzM1IDI4Ljk3NDNMNDMuMjkwMyA0Mi4zMDk3TDU1LjUzNjIgNDEuNzY1TDUyLjA3MTYgMzYuNTU3MlpNMjguNTE2NyA2MC4zNTE3TDM1Ljg4MTcgNTYuNzU2NEwyOS41MTkxIDUxLjc4ODNMMjguNTE2NyA2MC4zNTE3Wk00NC4wMDkzIDU2Ljc1NjRMNTEuMzk2MSA2MC4zNTE3TDUwLjM3MiA1MS43ODgzTDQ0LjAwOTMgNTYuNzU2NFoiIGZpbGw9IiNFNDc2MUIiIHN0cm9rZT0iI0U0NzYxQiIgc3Ryb2tlLXdpZHRoPSIwLjEyNDUxNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik01MS4zOTYxIDYwLjM1MTdMNDQuMDA5MyA1Ni43NTY0TDQ0LjU5NzcgNjEuNTcyTDQ0LjUzMjMgNjMuNTk4NEw1MS4zOTYxIDYwLjM1MTdaTTI4LjUxNjcgNjAuMzUxN0wzNS4zODA1IDYzLjU5ODRMMzUuMzM3IDYxLjU3MkwzNS44ODE3IDU2Ljc1NjRMMjguNTE2NyA2MC4zNTE3WiIgZmlsbD0iI0Q3QzFCMyIgc3Ryb2tlPSIjRDdDMUIzIiBzdHJva2Utd2lkdGg9IjAuMTI0NTE0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTM1LjQ4OTUgNDguNjA3TDI5LjM0NDcgNDYuNzk4NEwzMy42ODA5IDQ0LjgxNTZMMzUuNDg5NSA0OC42MDdaTTQ0LjQwMTUgNDguNjA3TDQ2LjIxMDEgNDQuODE1Nkw1MC41NjgxIDQ2Ljc5ODRMNDQuNDAxNSA0OC42MDdaIiBmaWxsPSIjMjMzNDQ3IiBzdHJva2U9IiMyMzM0NDciIHN0cm9rZS13aWR0aD0iMC4xMjQ1MTQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjguNTE2NyA2MC4zNTE3TDI5LjU2MjYgNTEuNTA1TDIyLjc0MjQgNTEuNzAxMUwyOC41MTY3IDYwLjM1MTdaTTUwLjM1MDIgNTEuNTA1TDUxLjM5NjEgNjAuMzUxN0w1Ny4xNzA0IDUxLjcwMTFMNTAuMzUwMiA1MS41MDVaTTU1LjUzNjIgNDEuNzY1TDQzLjI5MDMgNDIuMzA5N0w0NC40MjMzIDQ4LjYwN0w0Ni4yMzE5IDQ0LjgxNTVMNTAuNTg5OSA0Ni43OTg0TDU1LjUzNjIgNDEuNzY1Wk0yOS4zNDQ3IDQ2Ljc5ODRMMzMuNzAyNyA0NC44MTU1TDM1LjQ4OTUgNDguNjA3TDM2LjY0NDMgNDIuMzA5N0wyNC4zNzY2IDQxLjc2NUwyOS4zNDQ3IDQ2Ljc5ODRaIiBmaWxsPSIjQ0Q2MTE2IiBzdHJva2U9IiNDRDYxMTYiIHN0cm9rZS13aWR0aD0iMC4xMjQ1MTQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjQuMzc2NiA0MS43NjVMMjkuNTE5MSA1MS43ODgzTDI5LjM0NDcgNDYuNzk4NEwyNC4zNzY2IDQxLjc2NVpNNTAuNTg5OSA0Ni43OTg0TDUwLjM3MiA1MS43ODgzTDU1LjUzNjIgNDEuNzY1TDUwLjU4OTkgNDYuNzk4NFpNMzYuNjQ0NCA0Mi4zMDk3TDM1LjQ4OTUgNDguNjA3TDM2LjkyNzYgNTYuMDM3M0wzNy4yNTQ1IDQ2LjI1MzdMMzYuNjQ0NCA0Mi4zMDk3Wk00My4yOTAzIDQyLjMwOTdMNDIuNzAxOSA0Ni4yMzE5TDQyLjk2MzQgNTYuMDM3M0w0NC40MjMzIDQ4LjYwN0w0My4yOTAzIDQyLjMwOTdaIiBmaWxsPSIjRTQ3NTFGIiBzdHJva2U9IiNFNDc1MUYiIHN0cm9rZS13aWR0aD0iMC4xMjQ1MTQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNDQuNDIzMyA0OC42MDdMNDIuOTYzNCA1Ni4wMzc0TDQ0LjAwOTMgNTYuNzU2NEw1MC4zNzIgNTEuNzg4M0w1MC41ODk5IDQ2Ljc5ODVMNDQuNDIzMyA0OC42MDdaTTI5LjM0NDcgNDYuNzk4NUwyOS41MTkgNTEuNzg4M0wzNS44ODE3IDU2Ljc1NjRMMzYuOTI3NiA1Ni4wMzc0TDM1LjQ4OTUgNDguNjA3TDI5LjM0NDcgNDYuNzk4NVoiIGZpbGw9IiNGNjg1MUIiIHN0cm9rZT0iI0Y2ODUxQiIgc3Ryb2tlLXdpZHRoPSIwLjEyNDUxNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik00NC41MzIzIDYzLjU5ODRMNDQuNTk3NyA2MS41NzJMNDQuMDUyOSA2MS4wOTI2SDM1LjgzODFMMzUuMzM3IDYxLjU3MkwzNS4zODA1IDYzLjU5ODRMMjguNTE2NyA2MC4zNTE3TDMwLjkxMzYgNjIuMzEyOEwzNS43NzI4IDY1LjY5MDNINDQuMTE4M0w0OC45OTkyIDYyLjMxMjhMNTEuMzk2MSA2MC4zNTE3TDQ0LjUzMjMgNjMuNTk4NFoiIGZpbGw9IiNDMEFEOUUiIHN0cm9rZT0iI0MwQUQ5RSIgc3Ryb2tlLXdpZHRoPSIwLjEyNDUxNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik00NC4wMDkzIDU2Ljc1NjRMNDIuOTYzNCA1Ni4wMzc0SDM2LjkyNzZMMzUuODgxNyA1Ni43NTY0TDM1LjMzNyA2MS41NzJMMzUuODM4MSA2MS4wOTI2SDQ0LjA1MjlMNDQuNTk3NyA2MS41NzJMNDQuMDA5MyA1Ni43NTY0WiIgZmlsbD0iIzE2MTYxNiIgc3Ryb2tlPSIjMTYxNjE2IiBzdHJva2Utd2lkdGg9IjAuMTI0NTE0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTY1Ljg4NjQgMzEuMzI3N0w2Ny43Mzg1IDIyLjQzNzRMNjQuOTcxMiAxNC4xNzlMNDQuMDA5MyAyOS43MzdMNTIuMDcxNiAzNi41NTcyTDYzLjQ2NzcgMzkuODkxMUw2NS45OTUzIDM2Ljk0OTRMNjQuOTA1OCAzNi4xNjVMNjYuNjQ5IDM0LjU3NDNMNjUuMjk4MSAzMy41Mjg0TDY3LjA0MTIgMzIuMTk5Mkw2NS44ODY0IDMxLjMyNzdaTTEyLjE3NDMgMjIuNDM3NEwxNC4wMjY1IDMxLjMyNzdMMTIuODQ5OCAzMi4xOTkyTDE0LjU5MyAzMy41Mjg0TDEzLjI2MzggMzQuNTc0M0wxNS4wMDcgMzYuMTY1TDEzLjkxNzUgMzYuOTQ5NEwxNi40MjMzIDM5Ljg5MTFMMjcuODE5NSAzNi41NTcyTDM1Ljg4MTcgMjkuNzM3TDE0LjkxOTggMTQuMTc5TDEyLjE3NDMgMjIuNDM3NFoiIGZpbGw9IiM3NjNEMTYiIHN0cm9rZT0iIzc2M0QxNiIgc3Ryb2tlLXdpZHRoPSIwLjEyNDUxNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02My40Njc3IDM5Ljg5MUw1Mi4wNzE2IDM2LjU1NzJMNTUuNTM2MiA0MS43NjVMNTAuMzcyIDUxLjc4ODNMNTcuMTcwNCA1MS43MDEySDY3LjMwMjdMNjMuNDY3NyAzOS44OTFaTTI3LjgxOTQgMzYuNTU3MkwxNi40MjMzIDM5Ljg5MUwxMi42MzE5IDUxLjcwMTJIMjIuNzQyNEwyOS41MTkxIDUxLjc4ODNMMjQuMzc2NiA0MS43NjVMMjcuODE5NCAzNi41NTcyWk00My4yOTAzIDQyLjMwOTdMNDQuMDA5MyAyOS43MzdMNDcuMzIxNCAyMC43ODEzSDMyLjYxMzJMMzUuODgxNyAyOS43MzdMMzYuNjQ0MyA0Mi4zMDk3TDM2LjkwNTggNDYuMjc1NUwzNi45Mjc2IDU2LjAzNzNINDIuOTYzNEw0My4wMDcgNDYuMjc1NUw0My4yOTAzIDQyLjMwOTdaIiBmaWxsPSIjRjY4NTFCIiBzdHJva2U9IiNGNjg1MUIiIHN0cm9rZS13aWR0aD0iMC4xMjQ1MTQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K\"\n },\n create: walletOptions => {\n const wallet = new MetaMaskWallet({\n ...walletOptions,\n projectId: options?.projectId,\n qrcode: false\n });\n if (connectionMethod === \"walletConnect\") {\n handelWCSessionRequest(wallet, metamaskUris);\n }\n return wallet;\n },\n connectUI(props) {\n return /*#__PURE__*/jsx(MetamaskConnectUI, {\n ...props,\n connectionMethod: connectionMethod\n });\n },\n isInstalled() {\n return !!getInjectedMetamaskProvider();\n }\n };\n};\n\nvar metamaskWallet$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n metamaskWallet: metamaskWallet\n});\n\nconst TW_WC_PROJECT_ID = \"145769e410f16970a79ff77b2d89a1e0\";\n\nconst WalletConnectScan = _ref => {\n let {\n onBack,\n onConnected,\n walletConfig,\n hide,\n show\n } = _ref;\n const locale = useTWLocale().wallets.walletConnect;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const [isWCModalOpen, setIsWCModalOpen] = useState(false);\n const handleWCModalConnect = async () => {\n const walletInstance = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n try {\n setQrCodeUri(undefined);\n setIsWCModalOpen(true);\n wait(1000).then(() => {\n hide();\n });\n await walletInstance.connectWithModal({\n chainId: chainToConnect?.chainId\n });\n setConnectedWallet(walletInstance);\n onConnected();\n show();\n } catch {\n show();\n setIsWCModalOpen(false);\n }\n };\n return /*#__PURE__*/jsxs(Container, {\n fullHeight: true,\n animate: \"fadein\",\n flex: \"column\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n onBack: onBack,\n title: walletConfig.meta.name\n })\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Container, {\n flex: \"column\",\n center: \"both\",\n px: \"lg\",\n expand: true,\n children: isWCModalOpen ? /*#__PURE__*/jsx(Container, {\n style: {\n minHeight: \"300px\"\n },\n flex: \"column\",\n center: \"both\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"xl\",\n color: \"accentText\"\n })\n }) : /*#__PURE__*/jsx(WalletConnectQRScanConnect, {\n createInstance: createInstance,\n onConnected: onConnected,\n qrCodeUri: qrCodeUri,\n setConnectedWallet: setConnectedWallet,\n setConnectionStatus: setConnectionStatus,\n setQrCodeUri: setQrCodeUri,\n walletConfig: walletConfig,\n chainIdToConnect: chainToConnect?.chainId\n })\n }), /*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(Text, {\n multiline: true,\n center: true,\n balance: true,\n children: locale.scanInstruction\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsx(Container, {\n py: \"lg\",\n flex: \"row\",\n center: \"x\",\n children: /*#__PURE__*/jsx(Button, {\n variant: \"link\",\n onClick: handleWCModalConnect,\n children: \"Open Official WalletConnect Modal\"\n })\n })]\n });\n};\nfunction WalletConnectQRScanConnect(props) {\n const {\n qrCodeUri,\n walletConfig,\n onConnected,\n setConnectedWallet,\n createInstance,\n setQrCodeUri,\n chainIdToConnect,\n setConnectionStatus\n } = props;\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const walletInstance = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n walletInstance.connectWithQrCode({\n chainId: chainIdToConnect,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(walletInstance);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainIdToConnect, onConnected, walletConfig, setConnectionStatus, setQrCodeUri]);\n return /*#__PURE__*/jsx(QRCode, {\n qrCodeUri: qrCodeUri,\n QRIcon: /*#__PURE__*/jsx(Img, {\n width: iconSize.xxl,\n height: iconSize.xxl,\n src: walletConfig.meta.iconURL\n })\n });\n}\n\n// export const CopyButton: React.FC<{\n// text: string;\n// tip: string;\n// side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n// align?: \"start\" | \"center\" | \"end\";\n// hide?: boolean;\n// }> = (props) => {\n// const { hasCopied, onCopy } = useClipboard(props.text);\n\n// return (\n// \n// \n// {hasCopied ? : }\n// Copy\n// \n// \n// );\n// };\n\n\n// color: ${(p) => p.theme.colors.success};\n// `;\n\nconst HeadlessConnectUI = _ref => {\n let {\n connected,\n walletConfig,\n hide,\n show,\n supportedWallets,\n goBack\n } = _ref;\n const connect = useConnect();\n const prompted = useRef(false);\n const singleWallet = supportedWallets.length === 1;\n useEffect(() => {\n if (prompted.current) {\n return;\n }\n prompted.current = true;\n (async () => {\n hide();\n try {\n await connect(walletConfig);\n connected();\n } catch (e) {\n if (!singleWallet) {\n goBack();\n }\n console.error(e);\n }\n show();\n })();\n }, [walletConfig, connect, singleWallet, connected, hide, show, goBack]);\n return /*#__PURE__*/jsx(Container, {\n flex: \"row\",\n center: \"both\",\n style: {\n minHeight: \"250px\"\n },\n p: \"lg\",\n children: /*#__PURE__*/jsx(Spinner, {\n size: \"lg\",\n color: \"accentText\"\n })\n });\n};\n\n/**\n * A wallet configurator for [WalletConnect](https://walletconnect.com/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const walletConnectConfig = walletConnect();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(walletConnectConfig);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst walletConnect = config => {\n const projectId = config?.projectId || TW_WC_PROJECT_ID;\n\n // on mobile - always use the official WalletConnect Modal\n // on desktop - use the official WalletConnect Modal if qrModal is set to \"walletconnect\"\n const showOfficialModal = isMobile() ? true : config?.qrModal === \"walletConnect\" ? true : false;\n return {\n recommended: config?.recommended,\n id: WalletConnect.id,\n meta: {\n ...WalletConnect.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiMxQzdERkMiLz4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8xXzQ2KSIvPgo8cGF0aCBkPSJNMjYuNDIyNyAzMS40NzMxQzMzLjkxNzEgMjQuMTc1NiA0Ni4wODI5IDI0LjE3NTYgNTMuNTc3MyAzMS40NzMxTDU0LjQ3OTYgMzIuMzU4QzU0Ljg1OCAzMi43MjA3IDU0Ljg1OCAzMy4zMTU1IDU0LjQ3OTYgMzMuNjc4Mkw1MS4zOTQ1IDM2LjY4MTNDNTEuMjA1MyAzNi44Njk5IDUwLjg5OTcgMzYuODY5OSA1MC43MTA1IDM2LjY4MTNMNDkuNDczNiAzNS40NzcyQzQ0LjIzNDcgMzAuMzg1IDM1Ljc2NTMgMzAuMzg1IDMwLjUyNjQgMzUuNDc3MkwyOS4yMDIxIDM2Ljc2ODRDMjkuMDEzIDM2Ljk1NyAyOC43MDc0IDM2Ljk1NyAyOC41MTgyIDM2Ljc2ODRMMjUuNDMzMSAzMy43NjUzQzI1LjA1NDcgMzMuNDAyNiAyNS4wNTQ3IDMyLjgwNzggMjUuNDMzMSAzMi40NDUxTDI2LjQyMjcgMzEuNDczMVpNNTkuOTY1OCAzNy42ODI0TDYyLjcxNjIgNDAuMzUxOEM2My4wOTQ2IDQwLjcxNDUgNjMuMDk0NiA0MS4zMDkzIDYyLjcxNjIgNDEuNjcyTDUwLjMzMjIgNTMuNzI4QzQ5Ljk1MzggNTQuMDkwNyA0OS4zNDI2IDU0LjA5MDcgNDguOTc4OCA1My43MjhMNDAuMTg5MiA0NS4xNjg0QzQwLjEwMTkgNDUuMDgxMyAzOS45NDE4IDQ1LjA4MTMgMzkuODU0NSA0NS4xNjg0TDMxLjA2NDkgNTMuNzI4QzMwLjY4NjUgNTQuMDkwNyAzMC4wNzUzIDU0LjA5MDcgMjkuNzExNSA1My43MjhMMTcuMjgzOCA0MS42NzJDMTYuOTA1NCA0MS4zMDkzIDE2LjkwNTQgNDAuNzE0NSAxNy4yODM4IDQwLjM1MThMMjAuMDM0MiAzNy42ODI0QzIwLjQxMjUgMzcuMzE5NyAyMS4wMjM3IDM3LjMxOTcgMjEuMzg3NSAzNy42ODI0TDMwLjE3NzIgNDYuMjQyQzMwLjI2NDUgNDYuMzI5IDMwLjQyNDUgNDYuMzI5IDMwLjUxMTkgNDYuMjQyTDM5LjMwMTUgMzcuNjgyNEMzOS42Nzk5IDM3LjMxOTcgNDAuMjkxIDM3LjMxOTcgNDAuNjU0OSAzNy42ODI0TDQ5LjQ0NDUgNDYuMjQyQzQ5LjUzMTggNDYuMzI5IDQ5LjY5MTkgNDYuMzI5IDQ5Ljc3OTIgNDYuMjQyTDU4LjU2ODggMzcuNjgyNEM1OC45NzYzIDM3LjMxOTcgNTkuNTg3NSAzNy4zMTk3IDU5Ljk2NTggMzcuNjgyNFoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfMV80NiIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDI0Nzk1NSA0MC4wMDEyKSBzY2FsZSg4MCkiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNUQ5REY2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNkZGRiIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=\"\n },\n create(options) {\n return new WalletConnect({\n ...options,\n qrcode: showOfficialModal,\n projectId,\n qrModalOptions: config?.qrModalOptions\n });\n },\n connectUI(props) {\n if (showOfficialModal) {\n return /*#__PURE__*/jsx(HeadlessConnectUI, {\n ...props\n });\n }\n return /*#__PURE__*/jsx(WalletConnectScan, {\n onBack: props.goBack,\n onConnected: props.connected,\n walletConfig: props.walletConfig,\n hideBackButton: props.supportedWallets.length > 1,\n modalSize: props.modalSize,\n hide: props.hide,\n show: props.show\n });\n }\n };\n};\n\nvar walletConnect$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n walletConnect: walletConnect\n});\n\nconst TrustScan = _ref => {\n let {\n onBack,\n onConnected,\n onGetStarted,\n walletConfig,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.trustWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const trust = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n trust.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(trust);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n hideBackButton: hideBackButton,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst trustWalletUris = {\n ios: \"trust://\",\n android: \"https://link.trustwallet.com/\",\n other: \"https://link.trustwallet.com/\"\n};\n\nconst TrustConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.trustWallet;\n const {\n walletConfig,\n connected\n } = props;\n const connect = useConnect();\n const hideBackButton = props.supportedWallets.length === 1;\n const [errorConnecting, setErrorConnecting] = useState(false);\n const connectingLocale = {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n };\n const connectToExtension = useCallback(async () => {\n try {\n setErrorConnecting(false);\n connectPrompted.current = true;\n setScreen(\"connecting\");\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [connected, connect, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if trust is not injected\n else {\n // on mobile, open trust app link\n if (isMobile()) {\n setScreen(\"open-wc-uri\");\n } else {\n // on desktop, show the trust scan qr code\n setScreen(\"scanning\");\n }\n }\n })();\n }, [connectToExtension, walletConfig]);\n const handleGetStarted = () => {\n setScreen(\"get-started\");\n };\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: connectingLocale,\n onRetry: connectToExtension,\n errorConnecting: errorConnecting,\n onGetStarted: handleGetStarted,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL\n // supportLink=\"https://community.trustwallet.com/c/helpcenter/8\"\n });\n }\n\n if (screen === \"open-wc-uri\") {\n return /*#__PURE__*/jsx(WCOpenURI, {\n locale: connectingLocale,\n onRetry: () => {\n // NOOP - TODO make onRetry optional\n },\n errorConnecting: errorConnecting,\n onGetStarted: handleGetStarted,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: props.connected,\n walletConfig: walletConfig,\n appUriPrefix: trustWalletUris\n // supportLink=\"https://support.trustwallet.com/en/support/home\"\n });\n }\n\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(TrustScan, {\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: props.connected,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n walletConfig: walletConfig\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Trust Wallet](https://trustwallet.com/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const trustWalletConfig = trustWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(trustWalletConfig);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst trustWallet = options => {\n return {\n id: TrustWallet$1.id,\n recommended: options?.recommended,\n meta: {\n ...TrustWallet$1.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00MC41MzAzIDE3LjE0MjVDNDguMjQ3NyAyMy42ODU3IDU3LjE1NiAyMy4zNTE4IDU5LjcwMDMgMjMuMzcwN0M1OC44Njk4IDYwLjI1MTMgNTQuNjgzNSA1Mi45MDU4IDQwLjE4ODcgNjMuMTQxMkMyNS44NDc0IDUyLjY5MTYgMjEuNTc5IDU5Ljk3NDQgMjEuMjk2NCAyMy4wODU1QzIzLjgxNDIgMjMuMTA0MiAzMi43MTY1IDIzLjU3MDQgNDAuNTMwMyAxNy4xNDI1WiIgc3Ryb2tlPSIjMzM3NUJCIiBzdHJva2Utd2lkdGg9IjciIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\"\n },\n create: walletOptions => {\n const wallet = new TrustWallet$1({\n ...walletOptions,\n projectId: options?.projectId,\n qrcode: false\n });\n handelWCSessionRequest(wallet, trustWalletUris);\n return wallet;\n },\n connectUI: TrustConnectUI,\n isInstalled() {\n if (assertWindowEthereum(globalThis.window)) {\n return !!globalThis.window.ethereum.isTrust;\n }\n return false;\n }\n };\n};\n\nvar TrustWallet = /*#__PURE__*/Object.freeze({\n __proto__: null,\n trustWallet: trustWallet\n});\n\nconst ZerionScan = _ref => {\n let {\n onBack,\n onConnected,\n onGetStarted,\n walletConfig,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.zerionWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const zerion = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n zerion.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(zerion);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n hideBackButton: hideBackButton,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst ZerionConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.zerionWallet;\n const {\n walletConfig,\n connected\n } = props;\n const connect = useConnect();\n const hideBackButton = props.supportedWallets.length === 1;\n const [errorConnecting, setErrorConnecting] = useState(false);\n const connectingLocale = {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n };\n const connectToExtension = useCallback(async () => {\n try {\n setErrorConnecting(false);\n connectPrompted.current = true;\n setScreen(\"connecting\");\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n }\n }, [connect, connected, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if zerion is not injected\n else {\n // on mobile, open zerion app link\n if (isMobile()) {\n setScreen(\"open-wc-uri\");\n } else {\n // on desktop, show the metamask scan qr code\n setScreen(\"scanning\");\n }\n }\n })();\n }, [connectToExtension, walletConfig]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: connectingLocale,\n hideBackButton: hideBackButton,\n onGetStarted: () => setScreen(\"get-started\"),\n onRetry: connectToExtension,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n errorConnecting: errorConnecting\n });\n }\n if (screen === \"open-wc-uri\") {\n return /*#__PURE__*/jsx(WCOpenURI, {\n locale: connectingLocale,\n onRetry: () => {\n // NO OP\n },\n onGetStarted: () => setScreen(\"get-started\"),\n errorConnecting: errorConnecting,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: props.connected,\n walletConfig: walletConfig,\n appUriPrefix: {\n ios: \"zerion://\",\n android: \"https://link.zerion.io/pt3gdRP0njb/\",\n other: \"https://link.zerion.io/pt3gdRP0njb/\"\n }\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(ZerionScan, {\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: props.connected,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n walletConfig: walletConfig\n });\n }\n return null;\n};\n\nconst zerionWalletUris = {\n ios: \"zerion://\",\n android: \"https://link.zerion.io/pt3gdRP0njb/\",\n other: \"https://link.zerion.io/pt3gdRP0njb/\"\n};\n\n/**\n * A wallet configurator for [Zerion Wallet](https://zerion.io/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const zerionWalletConfig = zerionWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(zerionWalletConfig);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst zerionWallet = options => {\n return {\n id: ZerionWallet.id,\n recommended: options?.recommended,\n meta: {\n ...ZerionWallet.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiMyMzYxRUMiLz4KPHBhdGggZD0iTTE3LjM3OSAyMEMxNi4wMDggMjAgMTUuNDc5OCAyMS42OTUyIDE2LjYzMDEgMjIuNDAzNEw0NS40MDk0IDM5Ljc1NjJDNDYuMTI2OCA0MC4xOTc4IDQ3LjA4MzUgNDAuMDIzNCA0Ny41Nzc0IDM5LjM2MDhMNjAuMjMwOSAyMi43NDlDNjEuMDkxMiAyMS41OTUgNjAuMjIyIDIwIDU4LjczMjkgMjBIMTcuMzc5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTYyLjYxMTcgNjAuMDAwMUM2My45ODI3IDYwLjAwMDEgNjQuNTI0NSA1OC4yOTU1IDYzLjM3NDMgNTcuNTg3NUwzNC41ODY4IDQwLjIzNjlDMzMuODY5NCAzOS43OTUzIDMyLjkzNTkgMzkuOTkxOSAzMi40NDIxIDQwLjY1NDNMMTkuNzY0IDU3LjI2MjlDMTguOTAzOSA1OC40MTY3IDE5LjgwMDMgNjAuMDAwMSAyMS4yODkyIDYwLjAwMDFINjIuNjExN1oiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\"\n },\n create: walletOptions => {\n const wallet = new ZerionWallet({\n ...walletOptions,\n projectId: options?.projectId,\n qrcode: false\n });\n handelWCSessionRequest(wallet, zerionWalletUris);\n return wallet;\n },\n connectUI: ZerionConnectUI,\n isInstalled() {\n if (assertWindowEthereum(globalThis.window)) {\n return !!globalThis.window.ethereum.isZerion;\n }\n return false;\n }\n };\n};\n\nconst RainbowScan = _ref => {\n let {\n onBack,\n onConnected,\n onGetStarted,\n walletConfig,\n hideBackButton\n } = _ref;\n const locale = useTWLocale().wallets.rainbowWallet;\n const createInstance = useCreateWalletInstance();\n const [qrCodeUri, setQrCodeUri] = useState();\n const {\n setConnectedWallet,\n chainToConnect,\n setConnectionStatus\n } = useWalletContext();\n const scanStarted = useRef(false);\n useEffect(() => {\n if (scanStarted.current) {\n return;\n }\n scanStarted.current = true;\n const rainbow = createInstance(walletConfig);\n setConnectionStatus(\"connecting\");\n rainbow.connectWithQrCode({\n chainId: chainToConnect?.chainId,\n onQrCodeUri(uri) {\n setQrCodeUri(uri);\n },\n onConnected() {\n setConnectedWallet(rainbow);\n onConnected();\n }\n });\n }, [createInstance, setConnectedWallet, chainToConnect, onConnected, walletConfig, setConnectionStatus]);\n return /*#__PURE__*/jsx(ScanScreen, {\n qrScanInstruction: locale.scanScreen.instruction,\n onBack: onBack,\n onGetStarted: onGetStarted,\n qrCodeUri: qrCodeUri,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n hideBackButton: hideBackButton,\n getStartedLink: locale.getStartedLink\n });\n};\n\nconst rainbowWalletUris = {\n ios: \"rainbow://\",\n android: \"https://rnbwapp.com/\",\n other: \"https://rnbwapp.com/\"\n};\n\nconst RainbowConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const {\n walletConfig,\n connected\n } = props;\n const connect = useConnect();\n const [errorConnecting, setErrorConnecting] = useState(false);\n const locale = useTWLocale().wallets.rainbowWallet;\n const connectingLocale = {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n };\n const hideBackButton = props.supportedWallets.length === 1;\n const connectToExtension = useCallback(async () => {\n try {\n setErrorConnecting(false);\n connectPrompted.current = true;\n setScreen(\"connecting\");\n await wait(1000);\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [connected, connect, walletConfig]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n\n // if loading\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if rainbow is not injected\n else {\n // on mobile, open rainbow app link\n if (isMobile()) {\n setScreen(\"open-wc-uri\");\n } else {\n // on desktop, show the rainbow scan qr code\n setScreen(\"scanning\");\n }\n }\n })();\n }, [connectToExtension, walletConfig]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: connectingLocale,\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n onRetry: connectToExtension,\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL\n });\n }\n if (screen === \"open-wc-uri\") {\n return /*#__PURE__*/jsx(WCOpenURI, {\n locale: connectingLocale,\n onRetry: () => {\n // NOOP - TODO make onRetry optional\n },\n errorConnecting: errorConnecting,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n onConnected: connected,\n walletConfig: walletConfig,\n appUriPrefix: rainbowWalletUris\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: props.goBack\n });\n }\n if (screen === \"scanning\") {\n return /*#__PURE__*/jsx(RainbowScan, {\n onBack: props.goBack,\n onConnected: connected,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n hideBackButton: hideBackButton,\n walletConfig: walletConfig\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Rainbow Wallet](https://rainbow.me/en/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const rainbowWalletConfig = rainbowWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(rainbowWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst rainbowWallet = options => {\n return {\n id: RainbowWallet$1.id,\n recommended: options?.recommended,\n meta: {\n ...RainbowWallet$1.meta,\n name: \"Rainbow\",\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzVfMTQ5KSI+CjxwYXRoIGQ9Ik04MCAwSDBWODBIODBWMFoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl81XzE0OSkiLz4KPHBhdGggZD0iTTEzLjMzMzMgMjUuMzMzNEgxNy4zMzMzQzM3Ljk1MTkgMjUuMzMzNCA1NC42NjY2IDQyLjA0ODEgNTQuNjY2NiA2Mi42NjY3VjY2LjY2NjdINjIuNjY2NkM2NC44NzU4IDY2LjY2NjcgNjYuNjY2NiA2NC44NzU4IDY2LjY2NjYgNjIuNjY2N0M2Ni42NjY2IDM1LjQyMDYgNDQuNTc5NCAxMy4zMzM0IDE3LjMzMzMgMTMuMzMzNEMxNS4xMjQyIDEzLjMzMzQgMTMuMzMzMyAxNS4xMjQyIDEzLjMzMzMgMTcuMzMzNFYyNS4zMzM0WiIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzVfMTQ5KSIvPgo8cGF0aCBkPSJNNTYgNjIuNjY2Nkg2Ni42NjY3QzY2LjY2NjcgNjQuODc1OCA2NC44NzU4IDY2LjY2NjYgNjIuNjY2NyA2Ni42NjY2SDU2VjYyLjY2NjZaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNV8xNDkpIi8+CjxwYXRoIGQ9Ik0xNy4zMzMzIDEzLjMzMzRWMjRIMTMuMzMzM1YxNy4zMzM0QzEzLjMzMzMgMTUuMTI0MiAxNS4xMjQyIDEzLjMzMzQgMTcuMzMzMyAxMy4zMzM0WiIgZmlsbD0idXJsKCNwYWludDNfbGluZWFyXzVfMTQ5KSIvPgo8cGF0aCBkPSJNMTMuMzMzMyAyNEgxNy4zMzMzQzM4LjY4ODMgMjQgNTYgNDEuMzExNyA1NiA2Mi42NjY3VjY2LjY2NjdINDRWNjIuNjY2N0M0NCA0Ny45MzkxIDMyLjA2MDkgMzYgMTcuMzMzMyAzNkgxMy4zMzMzVjI0WiIgZmlsbD0idXJsKCNwYWludDRfcmFkaWFsXzVfMTQ5KSIvPgo8cGF0aCBkPSJNNDUuMzMzMyA2Mi42NjY2SDU2VjY2LjY2NjZINDUuMzMzM1Y2Mi42NjY2WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzVfMTQ5KSIvPgo8cGF0aCBkPSJNMTMuMzMzMyAzNC42NjY3VjI0SDE3LjMzMzNWMzQuNjY2N0gxMy4zMzMzWiIgZmlsbD0idXJsKCNwYWludDZfbGluZWFyXzVfMTQ5KSIvPgo8cGF0aCBkPSJNMTMuMzMzMyA0MS4zMzMzQzEzLjMzMzMgNDMuNTQyNCAxNS4xMjQyIDQ1LjMzMzMgMTcuMzMzMyA0NS4zMzMzQzI2LjkwNjIgNDUuMzMzMyAzNC42NjY2IDUzLjA5MzcgMzQuNjY2NiA2Mi42NjY2QzM0LjY2NjYgNjQuODc1OCAzNi40NTc1IDY2LjY2NjYgMzguNjY2NiA2Ni42NjY2SDQ1LjMzMzNWNjIuNjY2NkM0NS4zMzMzIDQ3LjIwMjYgMzIuNzk3MyAzNC42NjY2IDE3LjMzMzMgMzQuNjY2NkgxMy4zMzMzVjQxLjMzMzNaIiBmaWxsPSJ1cmwoI3BhaW50N19yYWRpYWxfNV8xNDkpIi8+CjxwYXRoIGQ9Ik0zNC42NjY3IDYyLjY2NjZINDUuMzMzNFY2Ni42NjY2SDM4LjY2NjdDMzYuNDU3NiA2Ni42NjY2IDM0LjY2NjcgNjQuODc1OCAzNC42NjY3IDYyLjY2NjZaIiBmaWxsPSJ1cmwoI3BhaW50OF9yYWRpYWxfNV8xNDkpIi8+CjxwYXRoIGQ9Ik0xNy4zMzMzIDQ1LjMzMzNDMTUuMTI0MiA0NS4zMzMzIDEzLjMzMzMgNDMuNTQyNCAxMy4zMzMzIDQxLjMzMzNWMzQuNjY2NkgxNy4zMzMzVjQ1LjMzMzNaIiBmaWxsPSJ1cmwoI3BhaW50OV9yYWRpYWxfNV8xNDkpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl81XzE0OSIgeDE9IjQwIiB5MT0iMCIgeDI9IjQwIiB5Mj0iODAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzE3NDI5OSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDFFNTkiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzVfMTQ5IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjMzMzMgNjIuNjY2Nykgcm90YXRlKC05MCkgc2NhbGUoNDkuMzMzMykiPgo8c3RvcCBvZmZzZXQ9IjAuNzcwMjc3IiBzdG9wLWNvbG9yPSIjRkY0MDAwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNV8xNDkiIHgxPSI1NS4zMzMzIiB5MT0iNjQuNjY2NiIgeDI9IjY2LjY2NjciIHkyPSI2NC42NjY2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjODc1NEM5Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQzX2xpbmVhcl81XzE0OSIgeDE9IjE1LjMzMzMiIHkxPSIxMy4zMzM0IiB4Mj0iMTUuMzMzMyIgeTI9IjI0LjY2NjciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDRfcmFkaWFsXzVfMTQ5IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjMzMzMgNjIuNjY2Nykgcm90YXRlKC05MCkgc2NhbGUoMzguNjY2NykiPgo8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50NV9saW5lYXJfNV8xNDkiIHgxPSI0NS4zMzMzIiB5MT0iNjQuNjY2NiIgeDI9IjU2IiB5Mj0iNjQuNjY2NiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Nl9saW5lYXJfNV8xNDkiIHgxPSIxNS4zMzMzIiB5MT0iMzQuNjY2NyIgeDI9IjE1LjMzMzMiIHkyPSIyNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50N19yYWRpYWxfNV8xNDkiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuMzMzMyA2Mi42NjY2KSByb3RhdGUoLTkwKSBzY2FsZSgyOCkiPgo8c3RvcCBvZmZzZXQ9IjAuNTk1MTMiIHN0b3AtY29sb3I9IiMwMEFBRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDFEQTQwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF81XzE0OSIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgzNCA2NC42NjY2KSBzY2FsZSgxMS4zMzMzIDMwLjIyMjIpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDlfcmFkaWFsXzVfMTQ5IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDE1LjMzMzMgNDYpIHJvdGF0ZSgtOTApIHNjYWxlKDExLjMzMzMgMjE0LjkxMykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzVfMTQ5Ij4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"\n },\n create: walletOptions => {\n const wallet = new RainbowWallet$1({\n ...walletOptions,\n projectId: options?.projectId,\n qrcode: false\n });\n handelWCSessionRequest(wallet, rainbowWalletUris);\n return wallet;\n },\n connectUI: RainbowConnectUI,\n isInstalled() {\n return !!getInjectedRainbowProvider();\n }\n };\n};\n\nvar RainbowWallet = /*#__PURE__*/Object.freeze({\n __proto__: null,\n rainbowWallet: rainbowWallet\n});\n\nconst PhantomConnectUI = props => {\n const [screen, setScreen] = useState(\"connecting\");\n const locale = useTWLocale().wallets.phantomWallet;\n const {\n walletConfig,\n connected\n } = props;\n const [errorConnecting, setErrorConnecting] = useState(false);\n const connect = useConnect();\n const hideBackButton = props.supportedWallets.length === 1;\n const {\n goBack\n } = props;\n const connectToExtension = useCallback(async () => {\n try {\n connectPrompted.current = true;\n setScreen(\"connecting\");\n setErrorConnecting(false);\n await wait(1000);\n await connect(walletConfig);\n connected();\n } catch (e) {\n setErrorConnecting(true);\n console.error(e);\n }\n }, [walletConfig, connected, connect]);\n const connectPrompted = useRef(false);\n useEffect(() => {\n if (connectPrompted.current) {\n return;\n }\n const isInstalled = walletConfig.isInstalled ? walletConfig.isInstalled() : false;\n (async () => {\n if (isInstalled) {\n connectToExtension();\n }\n\n // if phantom is not injected\n else {\n setScreen(\"get-started\");\n }\n })();\n }, [walletConfig, connected, connect, goBack, connectToExtension]);\n if (screen === \"connecting\") {\n return /*#__PURE__*/jsx(ConnectingScreen, {\n locale: {\n getStartedLink: locale.getStartedLink,\n instruction: locale.connectionScreen.instruction,\n tryAgain: locale.connectionScreen.retry,\n inProgress: locale.connectionScreen.inProgress,\n failed: locale.connectionScreen.failed\n },\n hideBackButton: hideBackButton,\n onBack: props.goBack,\n walletName: walletConfig.meta.name,\n walletIconURL: walletConfig.meta.iconURL,\n onGetStarted: () => {\n setScreen(\"get-started\");\n },\n onRetry: () => {\n connectToExtension();\n },\n errorConnecting: errorConnecting\n });\n }\n if (screen === \"get-started\") {\n return /*#__PURE__*/jsx(GetStartedScreen, {\n locale: {\n scanToDownload: locale.getStartedScreen.instruction\n },\n walletIconURL: walletConfig.meta.iconURL,\n walletName: walletConfig.meta.name,\n chromeExtensionLink: walletConfig.meta.urls?.chrome,\n googlePlayStoreLink: walletConfig.meta.urls?.android,\n appleStoreLink: walletConfig.meta.urls?.ios,\n onBack: () => {\n props.goBack();\n }\n });\n }\n return null;\n};\n\n/**\n * A wallet configurator for [Phantom Wallet](https://phantom.app/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const phantomWalletConfig = phantomWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(phantomWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst phantomWallet = options => {\n return {\n recommended: options?.recommended,\n id: PhantomWallet.id,\n meta: {\n ...PhantomWallet.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDgiIGhlaWdodD0iMTA4IiB2aWV3Qm94PSIwIDAgMTA4IDEwOCIgZmlsbD0ibm9uZSI+CjxyZWN0IHdpZHRoPSIxMDgiIGhlaWdodD0iMTA4IiByeD0iMjYiIGZpbGw9IiNBQjlGRjIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00Ni41MjY3IDY5LjkyMjlDNDIuMDA1NCA3Ni44NTA5IDM0LjQyOTIgODUuNjE4MiAyNC4zNDggODUuNjE4MkMxOS41ODI0IDg1LjYxODIgMTUgODMuNjU2MyAxNSA3NS4xMzQyQzE1IDUzLjQzMDUgNDQuNjMyNiAxOS44MzI3IDcyLjEyNjggMTkuODMyN0M4Ny43NjggMTkuODMyNyA5NCAzMC42ODQ2IDk0IDQzLjAwNzlDOTQgNTguODI1OCA4My43MzU1IDc2LjkxMjIgNzMuNTMyMSA3Ni45MTIyQzcwLjI5MzkgNzYuOTEyMiA2OC43MDUzIDc1LjEzNDIgNjguNzA1MyA3Mi4zMTRDNjguNzA1MyA3MS41NzgzIDY4LjgyNzUgNzAuNzgxMiA2OS4wNzE5IDY5LjkyMjlDNjUuNTg5MyA3NS44Njk5IDU4Ljg2ODUgODEuMzg3OCA1Mi41NzU0IDgxLjM4NzhDNDcuOTkzIDgxLjM4NzggNDUuNjcxMyA3OC41MDYzIDQ1LjY3MTMgNzQuNDU5OEM0NS42NzEzIDcyLjk4ODQgNDUuOTc2OCA3MS40NTU2IDQ2LjUyNjcgNjkuOTIyOVpNODMuNjc2MSA0Mi41Nzk0QzgzLjY3NjEgNDYuMTcwNCA4MS41NTc1IDQ3Ljk2NTggNzkuMTg3NSA0Ny45NjU4Qzc2Ljc4MTYgNDcuOTY1OCA3NC42OTg5IDQ2LjE3MDQgNzQuNjk4OSA0Mi41Nzk0Qzc0LjY5ODkgMzguOTg4NSA3Ni43ODE2IDM3LjE5MzEgNzkuMTg3NSAzNy4xOTMxQzgxLjU1NzUgMzcuMTkzMSA4My42NzYxIDM4Ljk4ODUgODMuNjc2MSA0Mi41Nzk0Wk03MC4yMTAzIDQyLjU3OTVDNzAuMjEwMyA0Ni4xNzA0IDY4LjA5MTYgNDcuOTY1OCA2NS43MjE2IDQ3Ljk2NThDNjMuMzE1NyA0Ny45NjU4IDYxLjIzMyA0Ni4xNzA0IDYxLjIzMyA0Mi41Nzk1QzYxLjIzMyAzOC45ODg1IDYzLjMxNTcgMzcuMTkzMSA2NS43MjE2IDM3LjE5MzFDNjguMDkxNiAzNy4xOTMxIDcwLjIxMDMgMzguOTg4NSA3MC4yMTAzIDQyLjU3OTVaIiBmaWxsPSIjRkZGREY4Ii8+Cjwvc3ZnPgo=\"\n },\n create: walletOptions => new PhantomWallet(walletOptions),\n connectUI: PhantomConnectUI,\n isInstalled() {\n return !!getInjectedPhantomProvider();\n }\n };\n};\n\n/**\n * The default wallets that are used by the `ThirdwebProvider` if no `supportedWallets` prop is provided.\n *\n * The defaults wallets are:\n * - Metamask\n * - Coinbase\n * - WalletConnect\n * - TrustWallet\n * - RainbowWallet\n * - ZerionWallet\n * - PhantomWallet\n */\nconst defaultWallets = /* @__PURE__ */(() => [metamaskWallet(), coinbaseWallet(), walletConnect(), trustWallet(), rainbowWallet(), zerionWallet(), phantomWallet()])();\n\nconst FormFieldWithIconButton = props => {\n const errorEl = /*#__PURE__*/jsxs(\"div\", {\n style: {\n opacity: props.error ? 1 : 0,\n transition: \"opacity 0.2s ease\"\n },\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Text, {\n color: \"danger\",\n size: \"sm\",\n children: [props.error, \" \\xA0\"]\n })]\n });\n return /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(Label, {\n htmlFor: props.id,\n children: props.label\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(InputContainer, {\n \"data-error\": !!props.error,\n children: [/*#__PURE__*/jsx(Input, {\n variant: \"transparent\",\n required: props.required,\n name: props.name,\n autoComplete: props.autocomplete,\n id: props.id,\n onChange: e => props.onChange(e.target.value),\n value: props.value,\n type: props.noSave ? \"text\" : props.type,\n style: props.type === \"password\" && props.noSave ? {\n WebkitTextSecurity: \"disc\"\n } : undefined,\n \"data-test\": props.dataTest,\n placeholder: props.placeholder\n }), /*#__PURE__*/jsx(InputButton, {\n type: \"button\",\n onClick: props.right.onClick,\n children: props.right.icon\n })]\n }), props.error && !props.noErrorShift && errorEl, props.noErrorShift && errorEl]\n });\n};\nconst FormField = props => {\n return /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(Label, {\n htmlFor: props.id,\n children: props.label\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsx(Input, {\n variant: \"outline\",\n required: props.required,\n name: props.name,\n autoComplete: props.autocomplete,\n id: props.id,\n onChange: e => props.onChange(e.target.value),\n value: props.value,\n type: props.type,\n \"data-error\": !!props.errorMessage,\n placeholder: props.placeholder,\n disabled: props.disabled\n }), props.errorMessage && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xs\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: props.errorMessage\n })]\n })]\n });\n};\n\nconst safeSlugToChainId = {\n eth: 1,\n matic: 137,\n avax: 43114,\n bnb: 56,\n oeth: 10,\n gor: 5,\n \"base-gor\": 84531\n};\nconst safeChainIdToSlug = {\n 1: \"eth\",\n 137: \"matic\",\n 43114: \"avax\",\n 56: \"bnb\",\n 10: \"oeth\",\n 5: \"gor\",\n 84531: \"base-gor\"\n};\n\nexport { ButtonLink as B, ConnectingScreen as C, FormFieldWithIconButton as F, GetStartedScreen as G, HeadlessConnectUI as H, QRCode as Q, RainbowWallet as R, ScanScreen as S, TrustWallet as T, WCOpenURI as W, walletConnect as a, WalletLogoSpinner as b, coinbaseWallet as c, defaultWallets as d, FormField as e, safeSlugToChainId as f, coinbaseWallet$1 as g, metamaskWallet$1 as h, walletConnect$1 as i, metamaskWallet as m, openWindow as o, phantomWallet as p, rainbowWallet as r, safeChainIdToSlug as s, trustWallet as t, wait as w, zerionWallet as z };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedCoinbaseProvider() {\n function getReady(ethereum) {\n const isCoinbaseWallet = !!ethereum?.isCoinbaseWallet;\n if (isCoinbaseWallet) {\n return ethereum;\n }\n if (ethereum && \"overrideIsMetaMask\" in ethereum) {\n if (\"providerMap\" in ethereum) {\n if (ethereum.providerMap instanceof Map) {\n if (ethereum.providerMap.has(\"CoinbaseWallet\")) {\n return ethereum;\n }\n }\n }\n }\n }\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum?.providers) {\n return globalThis.window.ethereum.providers.find(getReady);\n }\n return getReady(globalThis.window.ethereum);\n }\n}\n\nexport { getInjectedCoinbaseProvider as g };\n","import { walletIds, SafeSupportedChainsSet, SafeWallet } from '@thirdweb-dev/wallets';\nimport { useWallet, useConnect, useChain, useChainId, useConnectionStatus, useSupportedChains, useSwitchChain, useDisconnect } from '@thirdweb-dev/react-core';\nimport { e as FormField, f as safeSlugToChainId, d as defaultWallets, H as HeadlessConnectUI } from './safeChainSlug-12460a7c.browser.esm.js';\nimport { useRef, useEffect, useState, useContext } from 'react';\nimport { c as useTWLocale, C as Container, M as ModalHeader, L as Line, S as Spacer, T as Text, N as Link, Z as WalletSelection, A as ScreenBottomContainer, B as Button, f as ModalConfigCtx, d as ModalDescription, g as Label, a as iconSize, s as spacing, e as Spinner, _ as StyledSelect, u as useCustomTheme, h as fontSize } from './formElements-8021f017.browser.esm.js';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport styled from '@emotion/styled';\nimport { ExclamationTriangleIcon, ChevronDownIcon } from '@radix-ui/react-icons';\nimport { utils } from 'ethers';\nimport '@emotion/react';\nimport 'qrcode';\nimport 'detect-browser';\nimport '@radix-ui/colors';\n\nconst SelectpersonalWallet = props => {\n const twLocale = useTWLocale();\n const locale = twLocale.wallets.safeWallet;\n const guestWallet = props.personalWallets.find(w => w.id === walletIds.localWallet);\n const personalWallets = props.personalWallets.filter(w => w.id !== walletIds.localWallet);\n\n // auto select guest wallet if no other wallets\n const {\n selectWallet\n } = props;\n const selected = useRef(false);\n useEffect(() => {\n if (selected.current) {\n return;\n }\n if (guestWallet && personalWallets.length === 0) {\n selected.current = true;\n selectWallet(guestWallet);\n }\n }, [guestWallet, personalWallets.length, selectWallet]);\n if (guestWallet && personalWallets.length === 0) {\n return /*#__PURE__*/jsx(\"div\", {\n style: {\n height: \"250px\"\n }\n });\n }\n return /*#__PURE__*/jsxs(Container, {\n flex: \"column\",\n scrollY: true,\n animate: \"fadein\",\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: props.safeWallet.meta.name,\n onBack: props.renderBackButton ? props.onBack : undefined,\n imgSrc: props.safeWallet.meta.iconURL\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Container, {\n px: \"lg\",\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"md\"\n }), /*#__PURE__*/jsx(Text, {\n size: \"lg\",\n color: \"primaryText\",\n weight: 500,\n children: locale.connectWalletScreen.title\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(Text, {\n multiline: true,\n children: [locale.connectWalletScreen.subtitle, \" \", /*#__PURE__*/jsx(Link, {\n inline: true,\n target: \"_blank\",\n href: \"https://docs.safe.global/getting-started/readme\",\n style: {\n whiteSpace: \"nowrap\"\n },\n children: locale.connectWalletScreen.learnMoreLink\n }), \" \"]\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Container, {\n expand: true,\n px: \"md\",\n scrollY: true,\n children: /*#__PURE__*/jsx(WalletSelection, {\n maxHeight: \"300px\",\n walletConfigs: personalWallets,\n selectWallet: props.selectWallet\n })\n }), guestWallet && /*#__PURE__*/jsx(ScreenBottomContainer, {\n children: /*#__PURE__*/jsx(Button, {\n variant: \"link\",\n fullWidth: true,\n onClick: () => {\n props.selectWallet(guestWallet);\n },\n \"data-test\": \"continue-as-guest-button\",\n children: twLocale.connectWallet.continueAsGuest\n })\n })]\n });\n};\n\nconst SelectAccount = props => {\n const locale = useTWLocale().wallets.safeWallet.accountDetailsScreen;\n const activeWallet = useWallet();\n const connect = useConnect();\n const activeChain = useChain();\n const connectedChainId = useChainId();\n const [safeAddress, setSafeAddress] = useState(\"\");\n const [safeChainId, setSafeChainId] = useState(-1);\n const [safeConnectError, setSafeConnectError] = useState(false);\n const [switchError, setSwitchError] = useState(false);\n const [switchingNetwork, setSwitchingNetwork] = useState(false);\n const connectionStatus = useConnectionStatus();\n const chains = useSupportedChains();\n\n // put supported chains first\n const supportedChains = chains.filter(c => SafeSupportedChainsSet.has(c.chainId));\n const selectedSafeChain = supportedChains.find(c => c.chainId === safeChainId);\n const testnets = supportedChains.filter(c => c.testnet);\n const mainnets = supportedChains.filter(c => !c.testnet);\n\n // if there are more than one mainnet and testnet, group them\n const useOptGroup = mainnets.length > 0 && testnets.length > 0;\n const handleSubmit = async () => {\n if (!selectedSafeChain || !activeWallet || !activeChain) {\n return;\n }\n setSafeConnectError(false);\n try {\n await connect(props.safeWalletConfig, {\n chain: selectedSafeChain,\n personalWallet: activeWallet,\n safeAddress\n });\n props.onConnect();\n } catch (e) {\n console.error(e);\n setSafeConnectError(true);\n }\n };\n const mismatch = safeChainId !== -1 && connectedChainId !== safeChainId;\n const isValidAddress = utils.isAddress(safeAddress);\n const disableNetworkSelection = supportedChains.length === 1;\n const switchChain = useSwitchChain();\n const modalConfig = useContext(ModalConfigCtx);\n return /*#__PURE__*/jsx(Container, {\n fullHeight: true,\n flex: \"column\",\n scrollY: true,\n children: /*#__PURE__*/jsxs(\"form\", {\n style: {\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n onSubmit: e => {\n e.preventDefault();\n handleSubmit();\n },\n children: [/*#__PURE__*/jsx(Container, {\n p: \"lg\",\n children: /*#__PURE__*/jsx(ModalHeader, {\n title: props.safeWalletConfig.meta.name,\n onBack: props.renderBackButton ? props.onBack : undefined,\n imgSrc: props.safeWalletConfig.meta.iconURL\n })\n }), /*#__PURE__*/jsx(Line, {}), /*#__PURE__*/jsxs(Container, {\n expand: true,\n flex: \"column\",\n p: \"lg\",\n scrollY: true,\n style: {\n paddingTop: 0\n },\n children: [/*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(Text, {\n color: \"primaryText\",\n size: \"lg\",\n weight: 500,\n children: locale.title\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(ModalDescription, {\n children: [locale.findSafeAddressIn, \" \", /*#__PURE__*/jsx(Link, {\n inline: true,\n target: \"_blank\",\n href: \"https://app.safe.global/home\",\n style: {\n display: \"inline\",\n whiteSpace: \"nowrap\"\n },\n children: locale.dashboardLink\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"xl\"\n }), /*#__PURE__*/jsx(FormField, {\n name: \"safeAddress\",\n id: \"safeAddress\",\n errorMessage: safeAddress && !isValidAddress ? \"Invalid Safe Address\" : undefined,\n autocomplete: \"on\",\n onChange: value => {\n setSafeConnectError(false);\n if (value.length > 4) {\n const prefix = value.split(\":\")[0];\n if (prefix && prefix in safeSlugToChainId) {\n setSafeChainId(safeSlugToChainId[prefix]);\n setSafeAddress(value.slice(prefix.length + 1));\n } else {\n setSafeAddress(value);\n }\n } else {\n setSafeAddress(value);\n }\n },\n label: locale.safeAddress,\n type: \"text\",\n value: safeAddress,\n required: true,\n placeholder: \"0x123...\"\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"lg\"\n }), /*#__PURE__*/jsx(Label, {\n htmlFor: \"safeNetwork\",\n children: locale.network\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: \"relative\"\n },\n children: [/*#__PURE__*/jsxs(NetworkSelect, {\n \"data-error\": supportedChains.length === 0 || safeConnectError,\n required: true,\n name: \"safeNetwork\",\n id: \"safeNetwork\",\n value: safeChainId,\n disabled: disableNetworkSelection,\n placeholder: locale.selectNetworkPlaceholder,\n onChange: e => {\n setSafeConnectError(false);\n setSwitchError(false);\n setSafeChainId(Number(e.target.value));\n },\n children: [!disableNetworkSelection && /*#__PURE__*/jsx(\"option\", {\n value: \"\",\n hidden: true,\n children: locale.selectNetworkPlaceholder\n }), useOptGroup ? /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(\"optgroup\", {\n label: locale.mainnets,\n children: mainnets.map(chain => {\n return /*#__PURE__*/jsx(\"option\", {\n value: chain.chainId,\n children: chain.name\n }, chain.chainId);\n })\n }), /*#__PURE__*/jsx(\"optgroup\", {\n label: locale.testnets,\n children: testnets.map(chain => {\n return /*#__PURE__*/jsx(\"option\", {\n value: chain.chainId,\n children: chain.name\n }, chain.chainId);\n })\n })]\n }) : supportedChains.map(chain => {\n return /*#__PURE__*/jsx(\"option\", {\n value: chain.chainId,\n children: chain.name\n }, chain.chainId);\n })]\n }), !disableNetworkSelection && /*#__PURE__*/jsx(StyledChevronDownIcon, {\n width: iconSize.sm,\n height: iconSize.sm,\n style: {\n position: \"absolute\",\n top: \"50%\",\n right: spacing.sm,\n transform: \"translateY(-50%)\",\n pointerEvents: \"none\"\n }\n })]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n }), supportedChains.length === 0 && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsxs(Text, {\n color: \"danger\",\n multiline: true,\n size: \"xs\",\n children: [\" \", locale.invalidChainConfig]\n }), /*#__PURE__*/jsx(Spacer, {\n y: \"sm\"\n })]\n }), safeConnectError && /*#__PURE__*/jsxs(Text, {\n size: \"xs\",\n multiline: true,\n color: \"danger\",\n style: {\n display: \"flex\",\n gap: spacing.sm,\n alignItems: \"center\"\n },\n children: [/*#__PURE__*/jsx(ExclamationTriangleIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), /*#__PURE__*/jsx(\"span\", {\n children: locale.failedToConnect\n })]\n }), switchError && /*#__PURE__*/jsx(Text, {\n color: \"danger\",\n size: \"sm\",\n children: /*#__PURE__*/jsxs(Container, {\n flex: \"row\",\n gap: \"sm\",\n center: \"y\",\n children: [/*#__PURE__*/jsx(ExclamationTriangleIcon, {\n width: iconSize.sm,\n height: iconSize.sm\n }), locale.failedToSwitch]\n })\n })]\n }), /*#__PURE__*/jsx(Container, {\n p: \"lg\",\n flex: \"row\",\n style: {\n paddingTop: 0,\n justifyContent: \"flex-end\"\n },\n children: mismatch ? /*#__PURE__*/jsxs(Button, {\n type: \"button\",\n variant: \"primary\",\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.sm,\n width: modalConfig.modalSize === \"compact\" ? \"100%\" : undefined\n },\n onClick: async () => {\n if (!activeWallet) {\n throw new Error(\"No active wallet\");\n }\n setSafeConnectError(false);\n setSwitchError(false);\n setSwitchingNetwork(true);\n try {\n await switchChain(safeChainId);\n } catch (e) {\n setSwitchError(true);\n } finally {\n setSwitchingNetwork(false);\n }\n },\n children: [\" \", switchingNetwork ? locale.switchingNetwork : locale.switchNetwork, switchingNetwork && /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"primaryButtonText\"\n })]\n }) : /*#__PURE__*/jsxs(Button, {\n variant: \"accent\",\n type: \"submit\",\n disabled: connectionStatus === \"connecting\",\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.sm,\n width: modalConfig.modalSize === \"compact\" ? \"100%\" : undefined\n },\n children: [connectionStatus === \"connecting\" ? locale.connecting : locale.connectToSafe, connectionStatus === \"connecting\" && /*#__PURE__*/jsx(Spinner, {\n size: \"sm\",\n color: \"accentButtonText\"\n })]\n })\n })]\n })\n });\n};\nconst NetworkSelect = /* @__PURE__ */StyledSelect(() => {\n const theme = useCustomTheme();\n return {\n width: \"100%\",\n padding: spacing.sm,\n boxSizing: \"border-box\",\n outline: \"none\",\n border: \"none\",\n borderRadius: \"6px\",\n color: theme.colors.primaryText,\n background: \"none\",\n fontSize: fontSize.md,\n boxShadow: `0 0 0 1.5px ${theme.colors.secondaryButtonBg}`,\n appearance: \"none\",\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.accentText}`\n },\n \"&:invalid\": {\n color: theme.colors.secondaryText\n },\n \"&[data-error='true']\": {\n boxShadow: `0 0 0 1.5px ${theme.colors.danger}`\n },\n \"&[disabled]\": {\n opacity: 1,\n cursor: \"not-allowed\"\n }\n };\n});\nconst StyledChevronDownIcon = /* @__PURE__ */styled(ChevronDownIcon)(() => {\n const theme = useCustomTheme();\n return {\n color: theme.colors.secondaryText\n };\n});\n\n/**\n * A wallet configurator for [Safe](https://safe.global/) which allows integrating the wallet with React.\n *\n * It returns a `WalletConfig` object which can be used to connect the wallet to app via `ConnectWallet` component or `useConnect` hook.\n *\n * @example\n *\n * ### Usage with ConnectWallet\n *\n * To allow users to connect to this wallet using the `ConnectWallet` component, you can add it to `ThirdwebProvider`'s supportedWallets prop.\n *\n * ```tsx\n * \n * \n * \n * ```\n *\n * ### Usage with useConnect\n *\n * you can use the `useConnect` hook to programmatically connect to the wallet without using the `ConnectWallet` component.\n *\n * The wallet also needs to be added in `ThirdwebProvider`'s supportedWallets if you want the wallet to auto-connect on next page load.\n *\n * ```tsx\n * const safeWalletConfig = safeWallet();\n *\n * function App() {\n * const connect = useConnect();\n *\n * async function handleConnect() {\n * const wallet = await connect(safeWalletConfig, options);\n * console.log('connected to', wallet);\n * }\n *\n * return ;\n * }\n * ```\n */\nconst safeWallet = config => {\n const personalWallets = config?.personalWallets || defaultWallets;\n return {\n id: SafeWallet.id,\n recommended: config?.recommended,\n meta: {\n ...SafeWallet.meta,\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiMxMkZGODAiLz4KPG1hc2sgaWQ9Im1hc2swXzFfNDgiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIxMiIgeT0iMTIiIHdpZHRoPSI1NiIgaGVpZ2h0PSI1NiI+CjxwYXRoIGQ9Ik00MCA2OEM1NS40NjQgNjggNjggNTUuNDY0IDY4IDQwQzY4IDI0LjUzNiA1NS40NjQgMTIgNDAgMTJDMjQuNTM2IDEyIDEyIDI0LjUzNiAxMiA0MEMxMiA1NS40NjQgMjQuNTM2IDY4IDQwIDY4WiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzFfNDgpIj4KPHBhdGggZD0iTTY4LjEzNzUgNy40MjY3Nkg5LjMzNzUyVjcxLjk5NDhINjguMTM3NVY3LjQyNjc2WiIgZmlsbD0iIzEyRkY4MCIvPgo8L2c+CjxwYXRoIGQ9Ik01NS42NjgzIDQwLjAwNDZINTEuODQyOUM1MC43MDA1IDQwLjAwNDYgNDkuNzc0OCA0MC45MzA5IDQ5Ljc3NDggNDIuMDcyN1Y0Ny42MjQ2QzQ5Ljc3NDggNDguNzY3IDQ4Ljg0ODYgNDkuNjkyNyA0Ny43MDY4IDQ5LjY5MjdIMzIuNDg3NkMzMS4zNDUyIDQ5LjY5MjcgMzAuNDE5NiA1MC42MTg5IDMwLjQxOTYgNTEuNzYwN1Y1NS41ODYxQzMwLjQxOTYgNTYuNzI4NSAzMS4zNDU4IDU3LjY1NDIgMzIuNDg3NiA1Ny42NTQySDQ4LjU4NzZDNDkuNzMgNTcuNjU0MiA1MC42NDM0IDU2LjcyNzkgNTAuNjQzNCA1NS41ODYxVjUyLjUxNzNDNTAuNjQzNCA1MS4zNzQ5IDUxLjU2OTYgNTAuNTY0IDUyLjcxMTUgNTAuNTY0SDU1LjY2ODNDNTYuODEwNyA1MC41NjQgNTcuNzM2NCA0OS42Mzc4IDU3LjczNjQgNDguNDk1OVY0Mi4wNDgxQzU3LjczNjQgNDAuOTA1NyA1Ni44MTAxIDQwLjAwNDEgNTUuNjY4MyA0MC4wMDQxVjQwLjAwNDZaIiBmaWxsPSIjMTIxMzEyIi8+CjxwYXRoIGQ9Ik0zMC40MjQgMzIuMzk5N0MzMC40MjQgMzEuMjU3MyAzMS4zNTAzIDMwLjMzMTYgMzIuNDkyMSAzMC4zMzE2SDQ3LjcwMTdDNDguODQ0MSAzMC4zMzE2IDQ5Ljc2OTggMjkuNDA1NCA0OS43Njk4IDI4LjI2MzZWMjQuNDM4MkM0OS43Njk4IDIzLjI5NTggNDguODQzNiAyMi4zNzAxIDQ3LjcwMTcgMjIuMzcwMUgzMS42MTA3QzMwLjQ2ODMgMjIuMzcwMSAyOS41NDI2IDIzLjI5NjQgMjkuNTQyNiAyNC40MzgyVjI3LjM4NTVDMjkuNTQyNiAyOC41Mjc5IDI4LjYxNjQgMjkuNDUzNiAyNy40NzQ1IDI5LjQ1MzZIMjQuNTMwNkMyMy4zODgyIDI5LjQ1MzYgMjIuNDYyNSAzMC4zNzk4IDIyLjQ2MjUgMzEuNTIxNlYzNy45NzYyQzIyLjQ2MjUgMzkuMTE4NiAyMy4zOTIxIDM5Ljk5NzggMjQuNTM0NSAzOS45OTc4SDI4LjM1OTlDMjkuNTAyMyAzOS45OTc4IDMwLjQyOCAzOS4wNzE2IDMwLjQyOCAzNy45Mjk3TDMwLjQyNDYgMzIuNDAwM0wzMC40MjQgMzIuMzk5N1oiIGZpbGw9IiMxMjEzMTIiLz4KPHBhdGggZD0iTTM4LjI5MjkgMzUuOTc1SDQxLjk2NzZDNDMuMTY0OSAzNS45NzUgNDQuMTM3MSAzNi45NDcxIDQ0LjEzNzEgMzguMTQ0NFY0MS44MTkxQzQ0LjEzNzEgNDMuMDE2NCA0My4xNjQ5IDQzLjk4ODYgNDEuOTY3NiA0My45ODg2SDM4LjI5MjlDMzcuMDk1NiA0My45ODg2IDM2LjEyMzUgNDMuMDE2NCAzNi4xMjM1IDQxLjgxOTFWMzguMTQ0NEMzNi4xMjM1IDM2Ljk0NzEgMzcuMDk1NiAzNS45NzUgMzguMjkyOSAzNS45NzVaIiBmaWxsPSIjMTIxMzEyIi8+Cjwvc3ZnPgo=\"\n },\n create: options => new SafeWallet({\n ...options\n }),\n connectUI(props) {\n return /*#__PURE__*/jsx(SafeConnectUI, {\n ...props,\n personalWallets: personalWallets\n });\n },\n isInstalled() {\n return false;\n },\n personalWallets: personalWallets\n };\n};\nconst SafeConnectUI = props => {\n const activeWallet = useWallet();\n const [personalWalletConfig, setPersonalWalletConfig] = useState();\n const disconnect = useDisconnect();\n if (personalWalletConfig) {\n const _props = {\n goBack: () => {\n setPersonalWalletConfig(undefined);\n },\n connected() {\n setPersonalWalletConfig(undefined);\n },\n isOpen: props.isOpen,\n hide: props.hide,\n show: props.show,\n theme: props.theme,\n walletConfig: personalWalletConfig,\n supportedWallets: props.personalWallets,\n selectionData: props.selectionData,\n setSelectionData: props.setSelectionData,\n modalSize: props.modalSize\n };\n if (personalWalletConfig.connectUI) {\n return /*#__PURE__*/jsx(personalWalletConfig.connectUI, {\n ..._props\n });\n }\n return /*#__PURE__*/jsx(HeadlessConnectUI, {\n ..._props\n });\n }\n if (!activeWallet) {\n return /*#__PURE__*/jsx(SelectpersonalWallet, {\n personalWallets: props.personalWallets,\n onBack: props.goBack,\n safeWallet: props.walletConfig,\n selectWallet: setPersonalWalletConfig,\n renderBackButton: props.supportedWallets.length > 1\n });\n }\n return /*#__PURE__*/jsx(SelectAccount, {\n renderBackButton: props.supportedWallets.length > 1,\n onBack: () => {\n disconnect();\n props.goBack();\n },\n onConnect: props.connected,\n safeWalletConfig: props.walletConfig\n });\n};\n\nexport { SafeConnectUI, safeWallet };\n","import { a as walletConnect } from './safeChainSlug-12460a7c.browser.esm.js';\nimport '@thirdweb-dev/wallets';\nimport '@thirdweb-dev/react-core';\nimport './formElements-8021f017.browser.esm.js';\nimport '@emotion/react';\nimport 'react/jsx-runtime';\nimport 'react';\nimport '@radix-ui/react-icons';\nimport 'detect-browser';\nimport '@radix-ui/colors';\nimport '@emotion/styled';\nimport 'qrcode';\n\n/**\n * @deprecated Use `walletConnect` instead\n *\n * The WalletConnect v1.0 protocol has been shut down and no longer works.\n * To avoid breaking change, `walletConnectV1` is still available but is an alias of `walletConnect`.\n */\nconst walletConnectV1 = walletConnect;\n\nexport { walletConnectV1 };\n","import { dx as caches, aB as getCreate2FactoryAddress, aN as fetchAndCacheDeployMetadata, aM as fetchPublishedContractFromPolygon, aI as computeDeploymentInfo, aw as GAS_LIMIT_FOR_DEPLOYER, az as isContractDeployed, ay as DEPLOYER_ABI, ax as DEPLOYER_BYTECODE } from './index-924d29a2.browser.esm.js';\nimport { utils, BigNumber, ContractFactory } from 'ethers';\nimport invariant from 'tiny-invariant';\n\nfunction getFunctionSignature(fnInputs) {\n return \"(\" + fnInputs.map(i => {\n return i.type === \"tuple\" ? getFunctionSignature(i.components) : i.type === \"tuple[]\" ? getFunctionSignature(i.components) + `[]` : i.type;\n }).join(\",\") + \")\";\n}\nfunction generatePluginFunctions(pluginAddress, pluginAbi) {\n const pluginInterface = new utils.Interface(pluginAbi);\n const pluginFunctions = [];\n // TODO - filter out common functions like _msgSender(), contractType(), etc.\n for (const fnFragment of Object.values(pluginInterface.functions)) {\n const fn = pluginInterface.getFunction(pluginInterface.getSighash(fnFragment));\n if (fn.name.includes(\"_\")) {\n continue;\n }\n pluginFunctions.push({\n functionSelector: pluginInterface.getSighash(fn),\n functionSignature: fn.name + getFunctionSignature(fn.inputs),\n pluginAddress: pluginAddress\n });\n }\n return pluginFunctions;\n}\nfunction generateExtensionFunctions(extensionAbi) {\n const extensionInterface = new utils.Interface(extensionAbi);\n const extensionFunctions = [];\n // TODO - filter out common functions like _msgSender(), contractType(), etc.\n\n for (const fnFragment of Object.values(extensionInterface.functions)) {\n const fn = extensionInterface.getFunction(extensionInterface.getSighash(fnFragment));\n if (fn.name.startsWith(\"_\")) {\n continue;\n }\n extensionFunctions.push({\n functionSelector: extensionInterface.getSighash(fn),\n functionSignature: fn.name + getFunctionSignature(fn.inputs)\n });\n }\n return extensionFunctions;\n}\n\n/**\n *\n * Returns txn data for keyless deploys as well as signer deploys.\n * Also provides a list of infra contracts to deploy.\n *\n * @internal\n *\n * @param metadataUri - The metadata uri to use\n * @param storage - The storage to use\n * @param provider - The provider to use\n * @param create2Factory - The create2 factory to use\n */\nasync function getDeploymentInfo(metadataUri, storage, provider, create2Factory, clientId, secretKey) {\n caches.deploymentPresets = {};\n const [create2FactoryAddress, {\n compilerMetadata,\n extendedMetadata\n }] = await Promise.all([create2Factory ? create2Factory : getCreate2FactoryAddress(provider), fetchAndCacheDeployMetadata(metadataUri, storage)]);\n const customParams = {};\n const finalDeploymentInfo = [];\n const defaultExtensions = extendedMetadata?.defaultExtensions;\n if (extendedMetadata?.routerType === \"plugin\" && defaultExtensions) {\n invariant(clientId || secretKey, \"Require Client Id / Secret Key\");\n const publishedExtensions = await Promise.all(defaultExtensions.map(e => {\n return fetchPublishedContractFromPolygon(e.publisherAddress, e.extensionName, e.extensionVersion, storage, clientId, secretKey);\n }));\n const pluginMetadata = (await Promise.all(publishedExtensions.map(c => fetchAndCacheDeployMetadata(c.metadataUri, storage)))).map(fetchedMetadata => fetchedMetadata.compilerMetadata);\n\n // get deployment info for all plugins\n const pluginDeploymentInfo = await Promise.all(pluginMetadata.map(metadata => computeDeploymentInfo(\"plugin\", provider, storage, create2FactoryAddress, {\n metadata: metadata\n }, clientId, secretKey)));\n\n // create constructor param input for PluginMap\n const mapInput = [];\n pluginMetadata.forEach((metadata, index) => {\n const input = generatePluginFunctions(pluginDeploymentInfo[index].transaction.predictedAddress, metadata.abi);\n mapInput.push(...input);\n });\n\n // get PluginMap deployment transaction\n const pluginMapTransaction = await computeDeploymentInfo(\"plugin\", provider, storage, create2FactoryAddress, {\n contractName: \"PluginMap\",\n constructorParams: {\n _pluginsToAdd: {\n value: mapInput\n }\n }\n }, clientId, secretKey);\n\n // address of PluginMap is input for MarketplaceV3's constructor\n customParams[\"_pluginMap\"] = {\n value: pluginMapTransaction.transaction.predictedAddress\n };\n finalDeploymentInfo.push(...pluginDeploymentInfo, pluginMapTransaction);\n } else if (extendedMetadata?.routerType === \"dynamic\" && defaultExtensions) {\n invariant(clientId || secretKey, \"Require Client Id / Secret Key\");\n const publishedExtensions = await Promise.all(defaultExtensions.map(e => {\n return fetchPublishedContractFromPolygon(e.publisherAddress, e.extensionName, e.extensionVersion, storage, clientId, secretKey);\n }));\n const extensionMetadata = (await Promise.all(publishedExtensions.map(async c => {\n return fetchAndCacheDeployMetadata(c.metadataUri, storage);\n }))).map(fetchedMetadata => fetchedMetadata.compilerMetadata);\n\n // get deployment info for all extensions\n const extensionDeploymentInfo = await Promise.all(extensionMetadata.map(metadata => computeDeploymentInfo(\"extension\", provider, storage, create2FactoryAddress, {\n metadata: metadata\n }, clientId, secretKey)));\n\n // create constructor param input for BaseRouter\n const routerInput = [];\n extensionMetadata.forEach((metadata, index) => {\n const extensionFunctions = generateExtensionFunctions(metadata.abi);\n routerInput.push({\n metadata: {\n name: metadata.name,\n metadataURI: \"\",\n implementation: extensionDeploymentInfo[index].transaction.predictedAddress\n },\n functions: extensionFunctions\n });\n });\n\n // routerInput as constructor param for BaseRouter\n customParams[\"_extensions\"] = {\n value: routerInput\n };\n finalDeploymentInfo.push(...extensionDeploymentInfo);\n }\n const [implementationDeployInfo, factoryInfo] = await Promise.all([computeDeploymentInfo(\"implementation\", provider, storage, create2FactoryAddress, {\n metadata: compilerMetadata,\n constructorParams: customParams\n }, clientId, secretKey),\n // get clone factory\n computeDeploymentInfo(\"infra\", provider, storage, create2FactoryAddress, {\n contractName: \"TWCloneFactory\"\n }, clientId, secretKey)]);\n finalDeploymentInfo.push(factoryInfo);\n finalDeploymentInfo.push(...Object.values(caches.deploymentPresets));\n finalDeploymentInfo.push(implementationDeployInfo);\n return finalDeploymentInfo;\n}\n\nfunction estimateGasForDeploy(initCode) {\n let gasLimit = utils.arrayify(initCode).map(x => x === 0 ? 4 : 16).reduce((sum, x) => sum + x) + 200 * initCode.length / 2 + 6 * Math.ceil(initCode.length / 64) + 32000 + 21000;\n gasLimit = Math.floor(gasLimit * 64 / 63);\n return gasLimit;\n}\n\nfunction createTransactionBatches(transactions) {\n let upperGasLimit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GAS_LIMIT_FOR_DEPLOYER;\n transactions = transactions.filter(tx => {\n return tx.data.length > 0;\n });\n if (transactions.length === 0) {\n return [];\n }\n const transactionBatches = [];\n let sum = 0;\n let batch = [];\n transactions.forEach(tx => {\n const gas = estimateGasForDeploy(tx.data);\n if (sum + gas > upperGasLimit) {\n if (batch.length === 0) {\n transactionBatches.push([tx]);\n } else {\n transactionBatches.push(batch);\n sum = gas;\n batch = [tx];\n }\n } else {\n sum += gas;\n batch.push(tx);\n }\n });\n if (batch.length > 0) {\n transactionBatches.push(batch);\n }\n return transactionBatches;\n}\n\n/**\n * Deploy a contract at a deterministic address, using Create2 method\n * Address depends on the Create2 factory address.\n *\n * @public\n *\n * @param signer - The signer to use\n * @param bytecode - The bytecode to deploy\n * @param encodedArgs - The encoded constructor args to use\n * @param create2FactoryAddress - The create2 factory address to use\n */\nasync function deployContractDeterministic(signer, transaction, options) {\n let gasLimit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 7000000;\n // Check if the implementation contract is already deployed\n invariant(signer.provider, \"Provider required\");\n const contractDeployed = await isContractDeployed(transaction.predictedAddress, signer.provider);\n if (!contractDeployed) {\n console.debug(`deploying contract via create2 factory at: ${transaction.predictedAddress}`);\n const tx = {\n to: transaction.to,\n data: transaction.data\n };\n try {\n await signer.estimateGas(tx);\n } catch (e) {\n console.debug(\"error estimating gas while deploying prebuilt: \", e);\n tx.gasLimit = BigNumber.from(gasLimit);\n }\n options?.notifier?.(\"deploying\", \"preset\");\n await (await signer.sendTransaction(tx)).wait();\n options?.notifier?.(\"deployed\", \"preset\");\n }\n}\n\nasync function deployWithThrowawayDeployer(signer, transactions, options) {\n const transactionBatches = createTransactionBatches(transactions);\n if (transactionBatches.length === 0) {\n return;\n }\n options?.notifier?.(\"deploying\", \"infra\");\n const deployTxns = await Promise.all(transactionBatches.map(txBatch => {\n // Using the deployer contract, send the deploy transactions to common factory with a signer\n const deployer = new ContractFactory(DEPLOYER_ABI, DEPLOYER_BYTECODE).connect(signer).deploy(txBatch);\n return deployer;\n }));\n await Promise.all(deployTxns.map(tx => {\n return tx.deployed();\n }));\n options?.notifier?.(\"deployed\", \"infra\");\n}\n\nexport { deployWithThrowawayDeployer as a, generateExtensionFunctions as b, createTransactionBatches as c, deployContractDeterministic as d, estimateGasForDeploy as e, getDeploymentInfo as g };\n","import { constants, Contract, BigNumber, utils } from 'ethers';\nimport { aZ as NATIVE_TOKEN_ADDRESS, a$ as getNativeTokenByChainId } from './index-924d29a2.browser.esm.js';\n\n/**\n * Encodes and decodes Contract functions\n * @public\n */\nclass ContractEncoder {\n constructor(contractWrapper) {\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Encodes the given contract function with argument\n * @returns the encoded data\n */\n encode(fn, args) {\n return this.contractWrapper.readContract.interface.encodeFunctionData(fn, args);\n }\n\n /**\n * Decode encoded call data for a given function\n * @param fn - the function to decode\n * @param encodedArgs - the encoded arguments\n */\n decode(fn, encodedArgs) {\n return this.contractWrapper.readContract.interface.decodeFunctionData(fn, encodedArgs);\n }\n decodeResult(fn, encodedArgs) {\n return this.contractWrapper.readContract.interface.decodeFunctionResult(fn, encodedArgs);\n }\n}\n\nfunction isNativeToken(tokenAddress) {\n return tokenAddress.toLowerCase() === NATIVE_TOKEN_ADDRESS || tokenAddress.toLowerCase() === constants.AddressZero;\n}\n\n/**\n *\n * @param provider - The provider to use\n * @param asset - The asset to fetch the metadata for\n * @returns\n * @internal\n */\nasync function fetchCurrencyMetadata(provider, asset) {\n if (isNativeToken(asset)) {\n const network = await provider.getNetwork();\n const nativeToken = getNativeTokenByChainId(network.chainId);\n return {\n name: nativeToken.name,\n symbol: nativeToken.symbol,\n decimals: nativeToken.decimals\n };\n } else {\n const ERC20MetadataAbi = (await import('@thirdweb-dev/contracts-js/dist/abis/IERC20Metadata.json')).default;\n const erc20 = new Contract(asset, ERC20MetadataAbi, provider);\n const [name, symbol, decimals] = await Promise.all([erc20.name(), erc20.symbol(), erc20.decimals()]);\n return {\n name,\n symbol,\n decimals\n };\n }\n}\n\n/**\n *\n * @param providerOrSigner - The provider or signer to use\n * @param asset - The asset to fetch the value for\n * @param price - The price to fetch the value for\n * @returns\n * @internal\n */\nasync function fetchCurrencyValue(providerOrSigner, asset, price) {\n const metadata = await fetchCurrencyMetadata(providerOrSigner, asset);\n return {\n ...metadata,\n value: BigNumber.from(price),\n displayValue: utils.formatUnits(price, metadata.decimals)\n };\n}\n\nexport { ContractEncoder as C, fetchCurrencyValue as a, fetchCurrencyMetadata as f, isNativeToken as i };\n","import { providers, utils, BigNumber, constants, Contract } from 'ethers';\nimport { z } from 'zod';\nimport { defaultChains, getValidChainRPCs, Polygon, Mumbai } from '@thirdweb-dev/chains';\nimport { isBrowser as isBrowser$1 } from '@thirdweb-dev/storage';\nimport { sha256HexSync } from '@thirdweb-dev/crypto';\nimport invariant from 'tiny-invariant';\nimport BN from 'bn.js';\nimport bs58 from 'bs58';\nimport IBurnableERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC20.json';\nimport IDrop from '@thirdweb-dev/contracts-js/dist/abis/IDrop.json';\nimport DropERC20_V2Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC20_V2.json';\nimport IDropSinglePhase from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase.json';\nimport IDropSinglePhaseV1 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase_V1.json';\nimport ERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC20.json';\nimport IERC20PermitAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC20Permit.json';\nimport IMintableERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC20.json';\nimport MulticallAbi from '@thirdweb-dev/contracts-js/dist/abis/IMulticall.json';\nimport ISignatureMintERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC20.json';\nimport IERC20MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC20Metadata.json';\nimport IBurnableERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC721.json';\nimport IClaimableERC721 from '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC721.json';\nimport DelayedRevealAbi from '@thirdweb-dev/contracts-js/dist/abis/IDelayedReveal.json';\nimport DropERC721_V3Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC721_V3.json';\nimport Erc721Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC721.json';\nimport Erc721EnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Enumerable.json';\nimport Erc721AQueryableAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721AQueryableUpgradeable.json';\nimport Erc721SupplyAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Supply.json';\nimport ILazyMintAbi from '@thirdweb-dev/contracts-js/dist/abis/ILazyMint.json';\nimport IMintableERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC721.json';\nimport SignatureMintERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721.json';\nimport SignatureMintERC721_V1Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721_V1.json';\nimport TieredDropAbi from '@thirdweb-dev/contracts-js/dist/abis/LazyMintWithTier_V1.json';\nimport SharedMetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/SharedMetadata.json';\nimport zora_IDropERC721 from '@thirdweb-dev/contracts-js/dist/abis/zora_IERC721Drop.json';\nimport ILoyaltyCardAbi from '@thirdweb-dev/contracts-js/dist/abis/ILoyaltyCard.json';\nimport INFTMetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/INFTMetadata.json';\nimport IERC721MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Metadata.json';\nimport IBurnableERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC1155.json';\nimport IClaimableERC1155 from '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC1155.json';\nimport IDropMultiPhase1155 from '@thirdweb-dev/contracts-js/dist/abis/IDrop1155.json';\nimport DropERC1155_V2Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC1155_V2.json';\nimport IDropSinglePhase1155 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155.json';\nimport IDropSinglePhase1155_V1 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155_V1.json';\nimport Erc1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155.json';\nimport Erc1155MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155Metadata.json';\nimport Erc1155SupplyAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155Supply.json';\nimport Erc1155EnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155Enumerable.json';\nimport IMintableERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC1155.json';\nimport ISignatureMintERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC1155.json';\nimport IERC2771ContextAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC2771Context.json';\nimport IAppURI from '@thirdweb-dev/contracts-js/dist/abis/IAppURI.json';\nimport IContractMetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IContractMetadata.json';\nimport IDirectListingsAbi from '@thirdweb-dev/contracts-js/dist/abis/IDirectListings.json';\nimport IEnglishAuctionsAbi from '@thirdweb-dev/contracts-js/dist/abis/IEnglishAuctions.json';\nimport IOffersAbi from '@thirdweb-dev/contracts-js/dist/abis/IOffers.json';\nimport IPackVRFAbi from '@thirdweb-dev/contracts-js/dist/abis/IPackVRFDirect.json';\nimport IPermissionsAbi from '@thirdweb-dev/contracts-js/dist/abis/IPermissions.json';\nimport IPermissionsEnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IPermissionsEnumerable.json';\nimport IThirdwebPlatformFeeAbi from '@thirdweb-dev/contracts-js/dist/abis/IPlatformFee.json';\nimport IThirdwebPrimarySaleAbi from '@thirdweb-dev/contracts-js/dist/abis/IPrimarySale.json';\nimport IThirdwebRoyaltyAbi from '@thirdweb-dev/contracts-js/dist/abis/IRoyalty.json';\nimport IOwnableAbi from '@thirdweb-dev/contracts-js/dist/abis/Ownable.json';\nimport IAirdropERC20 from '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC20.json';\nimport IAirdropERC721 from '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC721.json';\nimport IAirdropERC1155 from '@thirdweb-dev/contracts-js/dist/abis/IAirdropERC1155.json';\nimport IAccountFactoryCore from '@thirdweb-dev/contracts-js/dist/abis/IAccountFactoryCore.json';\nimport IAccountPermissions from '@thirdweb-dev/contracts-js/dist/abis/IAccountPermissions.json';\nimport IAccountPermissionsV1 from '@thirdweb-dev/contracts-js/dist/abis/IAccountPermissions_V1.json';\nimport IAccount from '@thirdweb-dev/contracts-js/dist/abis/IAccount.json';\nimport { Interface } from 'ethers/lib/utils';\nimport EventEmitter from 'eventemitter3';\n\nfunction getProcessEnv(key) {\n let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n if (typeof process !== \"undefined\") {\n if (process.env[key]) {\n return process.env[key];\n }\n }\n return defaultValue;\n}\n\nconst ContractPublisher_address = \"0xf5b896Ddb5146D5dA77efF4efBb3Eae36E300808\"; // Polygon only\n\n/**\n * @internal\n */\nfunction getContractPublisherAddress() {\n return getProcessEnv(\"contractPublisherAddress\", ContractPublisher_address);\n}\n\n/**\n * util function to check for signer, ripped out of ethers Signer.isProvider\n *\n * @param value - possible signer\n * @returns boolean if value is a signer\n * @internal\n */\nfunction isSigner(value) {\n return !!(value && value._isSigner);\n}\n\n/**\n * util function to check for provider, ripped out of ethers providers.Provider.isProvider\n *\n * @param value - possible provider\n * @returns boolean if value is a provider\n * @internal\n */\nfunction isProvider(value) {\n return !!(value && value._isProvider);\n}\n\nconst DEFAULT_BATCH_TIME_LIMIT_MS = 50;\nconst DEFAULT_BATCH_SIZE_LIMIT = 250;\nconst DEFAULT_BATCH_OPTIONS = {\n timeLimitMs: DEFAULT_BATCH_TIME_LIMIT_MS,\n sizeLimit: DEFAULT_BATCH_SIZE_LIMIT\n};\n// mostly copied from ethers.js directly but make it a StaticJsonRpcProvider\nclass StaticJsonRpcBatchProvider extends providers.StaticJsonRpcProvider {\n constructor(url, network) {\n let batchOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_BATCH_OPTIONS;\n super(url, network);\n this._timeLimitMs = batchOptions.timeLimitMs || DEFAULT_BATCH_SIZE_LIMIT;\n this._sizeLimit = batchOptions.sizeLimit || DEFAULT_BATCH_TIME_LIMIT_MS;\n this._pendingBatchAggregator = null;\n this._pendingBatch = null;\n }\n sendCurrentBatch(request) {\n // if we still have a timeout clear that first\n if (this._pendingBatchAggregator) {\n clearTimeout(this._pendingBatchAggregator);\n }\n // Get the current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch || [];\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request_ = batch.map(inflight => inflight.request);\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: utils.deepCopy(request),\n provider: this\n });\n return utils.fetchJson(this.connection, JSON.stringify(request_)).then(result => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request_,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest_, index) => {\n const payload = result[index];\n\n // there may *not* be a payload for a given request (typically RPC error level)\n if (payload) {\n // if there is a payload, check for an error\n if (payload.error) {\n const error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest_.reject(error);\n } else {\n // if there's no error resolve the request\n inflightRequest_.resolve(payload.result);\n }\n } else {\n // if there is no payload, reject the request\n inflightRequest_.reject(new Error(\"No response for request\"));\n }\n });\n }, error => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request_,\n provider: this\n });\n\n // If there was an error, reject all the requests\n batch.forEach(inflightRequest_ => {\n inflightRequest_.reject(error);\n });\n });\n }\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: this._nextId++,\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch === null) {\n this._pendingBatch = [];\n }\n const inflightRequest = {\n request,\n resolve: null,\n reject: null\n };\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n\n // if we would go *over* the size limit of the batch with this request, send the batch now\n if (this._pendingBatch.length === this._sizeLimit) {\n this.sendCurrentBatch(request);\n }\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n this.sendCurrentBatch(request);\n }, this._timeLimitMs);\n }\n return promise;\n }\n}\n\nconst ChainInfoInputSchema = /* @__PURE__ */(() => z.object({\n rpc: z.array(z.string().url()),\n chainId: z.number(),\n nativeCurrency: z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.number()\n }),\n slug: z.string()\n}))();\n\n/**\n * @public\n */\nconst SDKOptionsSchema = /* @__PURE__ */(() => z.object({\n // @ts-expect-error - zod doesn't know anything about readonly\n supportedChains: z.array(ChainInfoInputSchema).default(defaultChains),\n clientId: z.string().optional(),\n secretKey: z.string().optional(),\n readonlySettings: z.object({\n rpcUrl: z.string().url(),\n chainId: z.number().optional()\n }).optional(),\n gasSettings: z.object({\n maxPriceInGwei: z.number().min(1, \"gas price cannot be less than 1\").default(300),\n speed: z.enum([\"standard\", \"fast\", \"fastest\"]).default(\"fastest\")\n }).default({\n maxPriceInGwei: 300,\n speed: \"fastest\"\n }),\n gasless: z.union([z.object({\n openzeppelin: z.object({\n relayerUrl: z.string().url(),\n relayerForwarderAddress: z.string().optional(),\n useEOAForwarder: z.boolean().default(false),\n domainName: z.string().default(\"GSNv2 Forwarder\"),\n domainVersion: z.string().default(\"0.0.1\")\n }),\n experimentalChainlessSupport: z.boolean().default(false)\n }), z.object({\n biconomy: z.object({\n apiId: z.string(),\n apiKey: z.string(),\n deadlineSeconds: z.number().min(1, \"deadlineSeconds cannot be les than 1\").default(3600)\n })\n }), z.object({\n engine: z.object({\n relayerUrl: z.string().url().transform(url => url.replace(/\\/$/, \"\"))\n })\n })]).optional(),\n gatewayUrls: z.array(z.string()).optional()\n}).default({\n gasSettings: {\n maxPriceInGwei: 300,\n speed: \"fastest\"\n }\n}))();\n\n/**\n * @public\n * All these configuration options are optional with sane defaults:\n * @example\n * ```javascript\n * {\n * readonlySettings: {\n * rpcUrl, // force read calls to go through your own RPC url\n * chainId, // reduce RPC calls by sepcifying your chain ID\n * },\n * gasSettings: {\n * maxPriceInGwei, // Maximum gas price for transactions (default 300 gwei)\n * speed, // the tx speed setting: 'standard'|'fast|'fastest' (default: 'fastest')\n * },\n * gasless: {\n * // By specifying a gasless configuration - all transactions will get forwarded to enable gasless transactions\n * openzeppelin: {\n * relayerUrl, // your OZ Defender relayer URL\n * relayerForwarderAddress, // the OZ defender relayer address (defaults to the standard one)\n * },\n * biconomy: {\n * apiId, // your Biconomy API Id\n * apiKey, // your Biconomy API Key\n * deadlineSeconds, // your Biconomy timeout preference\n * },\n * },\n * }\n * ```\n */\n\n/**\n * @internal\n */\n\n/**\n * @public\n */\n\nvar pkg = {\n\tname: \"@thirdweb-dev/sdk\",\n\tversion: \"4.0.21\",\n\tdescription: \"The main thirdweb SDK.\",\n\trepository: \"https://github.com/thirdweb-dev/js/tree/main/packages/sdk\",\n\tlicense: \"Apache-2.0\",\n\tmain: \"dist/thirdweb-dev-sdk.cjs.js\",\n\tmodule: \"dist/thirdweb-dev-sdk.esm.js\",\n\tbrowser: {\n\t\t\"./dist/thirdweb-dev-sdk.esm.js\": \"./dist/thirdweb-dev-sdk.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tbrowser: \"./dist/thirdweb-dev-sdk.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/thirdweb-dev-sdk.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/thirdweb-dev-sdk.cjs.js\"\n\t\t},\n\t\t\"./evm\": {\n\t\t\tmodule: {\n\t\t\t\tbrowser: \"./evm/dist/thirdweb-dev-sdk-evm.browser.esm.js\",\n\t\t\t\t\"default\": \"./evm/dist/thirdweb-dev-sdk-evm.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./evm/dist/thirdweb-dev-sdk-evm.cjs.js\"\n\t\t},\n\t\t\"./evm/zksync\": {\n\t\t\tmodule: {\n\t\t\t\tbrowser: \"./evm/zksync/dist/thirdweb-dev-sdk-evm-zksync.browser.esm.js\",\n\t\t\t\t\"default\": \"./evm/zksync/dist/thirdweb-dev-sdk-evm-zksync.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./evm/zksync/dist/thirdweb-dev-sdk-evm-zksync.cjs.js\"\n\t\t},\n\t\t\"./evm/functions\": {\n\t\t\tmodule: {\n\t\t\t\tbrowser: \"./evm/functions/dist/thirdweb-dev-sdk-evm-functions.browser.esm.js\",\n\t\t\t\t\"default\": \"./evm/functions/dist/thirdweb-dev-sdk-evm-functions.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./evm/functions/dist/thirdweb-dev-sdk-evm-functions.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\"\n\t},\n\tfiles: [\n\t\t\"dist/\",\n\t\t\"evm/\",\n\t\t\"server/\"\n\t],\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"index.ts\",\n\t\t\t\"evm/index.ts\",\n\t\t\t\"evm/functions/index.ts\",\n\t\t\t\"evm/zksync/index.ts\"\n\t\t],\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\"\n\t\t\t]\n\t\t}\n\t},\n\tsideEffects: false,\n\tscripts: {\n\t\tformat: \"prettier --write 'src/**/*'\",\n\t\tlint: \"eslint src/\",\n\t\tfix: \"eslint src/ --fix\",\n\t\tclean: \"rm -rf dist/\",\n\t\t\"generate-docs\": \"pnpm generate-docs:evm && pnpm generate-snippets\",\n\t\t\"generate-docs:evm\": \"api-extractor run --local --config ./config/api-extractor-evm.json && api-documenter markdown -i ./temp -o ./docs/evm && rm -rf ./temp-evm && mv ./temp ./temp-evm\",\n\t\t\"generate-snippets\": \"node ./scripts/generate-snippets.mjs && node ./scripts/generate-feature-snippets-evm.mjs\",\n\t\tbuild: \"tsc && preconstruct build\",\n\t\t\"test:all\": \"SWC_NODE_PROJECT=./tsconfig.test.json nyc --reporter lcovonly --report-dir ./coverage/evm mocha --config './test/evm/.mocharc.json' --timeout 90000 --parallel './test/evm/**/*.test.ts'\",\n\t\ttest: \"make test-evm\",\n\t\t\"test:single\": \"SWC_NODE_PROJECT=./tsconfig.test.json mocha --config './test/evm/.mocharc.json' --timeout 90000\",\n\t\tpush: \"yalc push\",\n\t\ttypedoc: \"node scripts/typedoc.mjs\"\n\t},\n\tdevDependencies: {\n\t\t\"@aws-sdk/client-secrets-manager\": \"^3.378.0\",\n\t\t\"@ethersproject/abstract-provider\": \"^5.7.0\",\n\t\t\"@microsoft/api-documenter\": \"^7.22.30\",\n\t\t\"@microsoft/api-extractor\": \"^7.36.3\",\n\t\t\"@microsoft/tsdoc\": \"^0.14.1\",\n\t\t\"@nomiclabs/hardhat-ethers\": \"^2.2.3\",\n\t\t\"@preconstruct/cli\": \"2.7.0\",\n\t\t\"@project-serum/anchor\": \"^0.25.0\",\n\t\t\"@swc-node/register\": \"^1.6.6\",\n\t\t\"@swc/core\": \"^1.3.71\",\n\t\t\"@thirdweb-dev/tsconfig\": \"workspace:*\",\n\t\t\"@types/bn.js\": \"^5.1.1\",\n\t\t\"@types/chai\": \"^4.3.5\",\n\t\t\"@types/deep-equal-in-any-order\": \"^1.0.1\",\n\t\t\"@types/mocha\": \"^10.0.0\",\n\t\t\"@types/node\": \"^18.17.1\",\n\t\t\"@types/uuid\": \"^9.0.5\",\n\t\t\"@typescript-eslint/eslint-plugin\": \"^6.2.0\",\n\t\t\"@typescript-eslint/parser\": \"^6.2.0\",\n\t\tchai: \"^4.3.6\",\n\t\t\"deep-equal-in-any-order\": \"^1.1.18\",\n\t\t\"dotenv-mono\": \"^1.3.10\",\n\t\teslint: \"^8.45.0\",\n\t\t\"eslint-config-prettier\": \"^8.9.0\",\n\t\t\"eslint-config-thirdweb\": \"workspace:*\",\n\t\t\"eslint-plugin-better-tree-shaking\": \"0.0.4\",\n\t\t\"eslint-plugin-import\": \"^2.26.0\",\n\t\t\"eslint-plugin-inclusive-language\": \"^2.2.0\",\n\t\t\"eslint-plugin-prettier\": \"^5.0.0\",\n\t\t\"eslint-plugin-tsdoc\": \"^0.2.16\",\n\t\tethers: \"^5.7.2\",\n\t\t\"ethers-aws-kms-signer\": \"^1.3.2\",\n\t\thardhat: \"^2.17.0\",\n\t\tmocha: \"^10.2.0\",\n\t\tnyc: \"^15.1.0\",\n\t\tprettier: \"^3.0.0\",\n\t\trimraf: \"^3.0.2\",\n\t\ttypescript: \"^5.1.6\",\n\t\t\"zksync-web3\": \"^0.14.3\",\n\t\t\"typedoc-gen\": \"workspace:*\"\n\t},\n\tpeerDependencies: {\n\t\t\"@aws-sdk/client-secrets-manager\": \"^3.215.0\",\n\t\tethers: \"^5\",\n\t\t\"ethers-aws-kms-signer\": \"^1.3.2\",\n\t\t\"zksync-web3\": \"^0.14.3\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@aws-sdk/client-secrets-manager\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"ethers-aws-kms-signer\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"zksync-web3\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdependencies: {\n\t\t\"@thirdweb-dev/chains\": \"workspace:*\",\n\t\t\"@thirdweb-dev/contracts-js\": \"workspace:*\",\n\t\t\"@thirdweb-dev/generated-abis\": \"workspace:*\",\n\t\t\"@thirdweb-dev/storage\": \"workspace:*\",\n\t\t\"@thirdweb-dev/merkletree\": \"workspace:*\",\n\t\t\"@thirdweb-dev/crypto\": \"workspace:*\",\n\t\tabitype: \"^0.2.5\",\n\t\t\"bn.js\": \"^5.2.1\",\n\t\tbs58: \"^5.0.0\",\n\t\tbuffer: \"^6.0.3\",\n\t\teventemitter3: \"^5.0.1\",\n\t\t\"fast-deep-equal\": \"^3.1.3\",\n\t\t\"tiny-invariant\": \"^1.2.0\",\n\t\ttweetnacl: \"^1.0.3\",\n\t\tuuid: \"^9.0.1\",\n\t\tyaml: \"^2.3.1\",\n\t\tzod: \"^3.22.3\"\n\t},\n\tbugs: {\n\t\turl: \"https://github.com/thirdweb-dev/js/issues\"\n\t},\n\tauthor: \"thirdweb eng \",\n\tengines: {\n\t\tnode: \">=18\"\n\t}\n};\n\n/**\n * @internal\n */\nfunction buildDefaultMap(options) {\n return options.supportedChains.reduce((previousValue, currentValue) => {\n previousValue[currentValue.chainId] = currentValue;\n return previousValue;\n }, {});\n}\n\n/**\n * Get an ethers provider for the specified network\n *\n * @internal\n */\nfunction getChainProvider(network, sdkOptions) {\n // If we have an RPC URL, use that for the provider\n if (typeof network === \"string\" && isRpcUrl(network)) {\n return getProviderFromRpcUrl(network, sdkOptions);\n }\n\n // Add the chain to the supportedChains\n const options = SDKOptionsSchema.parse(sdkOptions);\n if (isChainConfig(network)) {\n options.supportedChains = [\n // @ts-expect-error - we know this is a chain and it will work to build the map\n network, ...options.supportedChains.filter(c => c.chainId === network.chainId)];\n }\n\n // Build a map of chainId -> ChainInfo based on the supportedChains\n const rpcMap = buildDefaultMap(options);\n let rpcUrl = \"\";\n let chainId;\n try {\n // Resolve the chain id from the network, which could be a chain, chain name, or chain id\n chainId = getChainIdFromNetwork(network, options);\n // Attempt to get the RPC url from the map based on the chainId\n rpcUrl = getValidChainRPCs(rpcMap[chainId], options.clientId)[0];\n } catch (e) {\n // no-op\n }\n\n // if we still don't have an url fall back to just using the chainId or slug in the rpc and try that\n if (!rpcUrl) {\n rpcUrl = `https://${chainId || network}.rpc.thirdweb.com/${options.clientId || \"\"}`;\n }\n if (!rpcUrl) {\n throw new Error(`No rpc url found for chain ${network}. Please provide a valid rpc url via the 'supportedChains' property of the sdk options.`);\n }\n return getProviderFromRpcUrl(rpcUrl, sdkOptions, chainId);\n}\nfunction getChainIdFromNetwork(network, options) {\n if (isChainConfig(network)) {\n // If it's a chain just return the chain id\n return network.chainId;\n } else if (typeof network === \"number\") {\n // If it's a number (chainId) return it directly\n return network;\n } else {\n // If it's a string (chain name) return the chain id from the map\n const chainNameToId = options.supportedChains.reduce((acc, curr) => {\n acc[curr.slug] = curr.chainId;\n return acc;\n }, {});\n if (network in chainNameToId) {\n return chainNameToId[network];\n }\n }\n throw new Error(`Cannot resolve chainId from: ${network} - please pass the chainId instead and specify it in the 'supportedChains' property of the SDK options.`);\n}\nasync function getChainIdOrName(network) {\n if (isChainConfig(network)) {\n // If it's a chain just return the chain id\n return network.chainId;\n } else if (typeof network === \"number\") {\n // If it's a number (chainId) return it directly\n return network;\n } else if (typeof network === \"number\") {\n // If it's a string (chain name) return the chain id from the map\n return network;\n } else if (isProvider(network)) {\n return network.getNetwork().then(n => n.chainId);\n } else if (isSigner(network)) {\n if (!network.provider) {\n throw new Error(\"Signer does not have a provider\");\n }\n return network.provider.getNetwork().then(n => n.chainId);\n }\n throw new Error(`Cannot resolve chainId from: ${network}.`);\n}\n\n/**\n * Check whether a NetworkInput value is a Chain config (naively, without parsing)\n */\nfunction isChainConfig(network) {\n return typeof network !== \"string\" && typeof network !== \"number\" && !isSigner(network) && !isProvider(network);\n}\n\n/**\n * Returns whether the specified url is a valid RPC url, as implemented by ethers.getDefaultProvier():\n * - https://github.com/ethers-io/ethers.js/blob/ec1b9583039a14a0e0fa15d0a2a6082a2f41cf5b/packages/providers/src.ts/index.ts#L55\n *\n * @param url - The url to check\n *\n * @internal\n */\nfunction isRpcUrl(url) {\n const match = url.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\":\n case \"https\":\n case \"ws\":\n case \"wss\":\n return true;\n }\n }\n return false;\n}\nconst RPC_PROVIDER_MAP = new Map();\n\n/**\n * Get an ethers provider based on the specified RPC URL\n *\n * @param rpcUrl - The RPC URL\n * @param chainId - The optional chain ID\n * @returns The provider for the specified RPC URL\n *\n * @internal\n */\nfunction getProviderFromRpcUrl(rpcUrl, sdkOptions, chainId) {\n try {\n const headers = {};\n // will be used to make sure we don't cache providers with different auth strategies\n let authStrategy = \"none\";\n if (isTwUrl(rpcUrl)) {\n // if we have a secret key passed in the SDK options we want to always use that\n if (sdkOptions?.secretKey) {\n // compute the clientId from the secret key\n // should only be used on Node.js in a backend/script context\n if (\"object\" !== \"undefined\") {\n throw new Error(\"Cannot use secretKey in browser context\");\n }\n const hashedSecretKey = sha256HexSync(sdkOptions.secretKey);\n const derivedClientId = hashedSecretKey.slice(0, 32);\n const utilizedRpcUrl = new URL(rpcUrl);\n // always set the clientId on the path to the derived client id\n utilizedRpcUrl.pathname = derivedClientId;\n // set the headers\n headers[\"x-client-id\"] = derivedClientId;\n headers[\"x-secret-key\"] = sdkOptions.secretKey;\n // set the final rpc url\n rpcUrl = utilizedRpcUrl.toString();\n authStrategy = \"secretKey\";\n }\n // if we do NOT have a secret key but we have a client id we want to use that\n else if (sdkOptions?.clientId) {\n const utilizedRpcUrl = new URL(rpcUrl);\n // always set the clientId on the path to the client id\n utilizedRpcUrl.pathname = sdkOptions.clientId;\n // set the headers\n headers[\"x-client-id\"] = sdkOptions.clientId;\n // set the final rpc url\n rpcUrl = utilizedRpcUrl.toString();\n authStrategy = \"clientId\";\n }\n\n // if we *also* have a tw auth token on global context add it to the headers (in addition to anything else)\n if (typeof globalThis !== \"undefined\" && \"TW_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_AUTH_TOKEN === \"string\") {\n headers[\"authorization\"] = `Bearer ${globalThis.TW_AUTH_TOKEN}`;\n authStrategy = \"twAuthToken\";\n }\n if (typeof globalThis !== \"undefined\" && \"TW_CLI_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_CLI_AUTH_TOKEN === \"string\") {\n headers[\"x-authorize-wallet\"] = \"true\";\n }\n const bundleId = typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ? globalThis.APP_BUNDLE_ID : undefined;\n if (!rpcUrl.includes(\"bundleId\")) {\n rpcUrl = rpcUrl + (bundleId ? `?bundleId=${bundleId}` : \"\");\n }\n headers[\"x-sdk-version\"] = pkg.version;\n headers[\"x-sdk-name\"] = pkg.name;\n headers[\"x-sdk-platform\"] = bundleId ? \"react-native\" : isBrowser$1() ? window.bridge !== undefined ? \"webGL\" : \"browser\" : \"node\";\n }\n const match = rpcUrl.match(/^(ws|http)s?:/i);\n // Try the JSON batch provider if available\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\":\n case \"https\":\n // Create a unique cache key for these params\n const seralizedOpts = `${rpcUrl}-${chainId || -1}-${authStrategy}`;\n\n // Check if we have a provider in our cache already\n const existingProvider = RPC_PROVIDER_MAP.get(seralizedOpts);\n if (existingProvider) {\n return existingProvider;\n }\n\n // Otherwise, create a new provider on the specific network\n const newProvider = chainId ?\n // If we know the chainId we should use the StaticJsonRpcBatchProvider\n new StaticJsonRpcBatchProvider({\n url: rpcUrl,\n headers\n }, chainId) :\n // Otherwise fall back to the built in json rpc batch provider\n new providers.JsonRpcBatchProvider({\n url: rpcUrl,\n headers\n });\n\n // Save the provider in our cache\n RPC_PROVIDER_MAP.set(seralizedOpts, newProvider);\n return newProvider;\n case \"ws\":\n case \"wss\":\n // Use the WebSocketProvider for ws:// URLs\n // TODO: handle auth for WS at some point\n return new providers.WebSocketProvider(rpcUrl, chainId);\n }\n }\n } catch (e) {\n // no-op\n }\n\n // Always fallback to the default provider if no other option worked\n return providers.getDefaultProvider(rpcUrl);\n}\n\n// TODO move to utils package\nfunction isTwUrl(url) {\n return new URL(url).hostname.endsWith(\".thirdweb.com\");\n}\n\n/**\n * @internal\n */\nfunction getSignerAndProvider(network, options) {\n let signer;\n let provider;\n if (isSigner(network)) {\n // Here, we have an ethers.Signer\n signer = network;\n if (network.provider) {\n provider = network.provider;\n }\n } else if (isProvider(network)) {\n // Here, we have an ethers.providers.Provider\n provider = network;\n } else {\n // Here, we must have a ChainOrRpcUrl, which is a chain name, chain id, rpc url, or chain config\n // All of which, getChainProvider can handle for us\n provider = getChainProvider(network, options);\n }\n if (options?.readonlySettings) {\n // If readonly settings are specified, then overwrite the provider\n provider = getProviderFromRpcUrl(options.readonlySettings.rpcUrl, options, options.readonlySettings.chainId);\n }\n\n // At this point, if we don't have a provider, don't default to a random chain\n // Instead, just throw an error\n if (!provider) {\n if (signer) {\n throw new Error(\"No provider passed to the SDK! Please make sure that your signer is connected to a provider!\");\n }\n throw new Error(\"No provider found! Make sure to specify which network to connect to, or pass a signer or provider to the SDK!\");\n }\n return [signer, provider];\n}\n\n// TODO: Respect SDK RPC configuration and don't pull straight from ethers\nlet provider;\nconst ENS_CACHE = new Map();\nasync function resolveEns(ens) {\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!provider) {\n // if we don't already have a provider then get one\n provider = getSignerAndProvider(\"ethereum\")[1];\n }\n let ensPromise;\n if (ENS_CACHE.has(ens)) {\n ensPromise = ENS_CACHE.get(ens);\n } else {\n ensPromise = provider.resolveName(ens).then(address => {\n // If they don't have an ENS, only cache for 30s\n if (!address) {\n return {\n address: null,\n expirationTime: new Date(Date.now() + 1000 * 30)\n };\n }\n\n // Cache ENS for 1 hour\n return {\n address,\n expirationTime: new Date(Date.now() + 1000 * 60 * 5)\n };\n });\n }\n const resolvedPromise = await ensPromise;\n if (resolvedPromise.expirationTime < new Date()) {\n // delete the cache if it's expired\n ENS_CACHE.delete(ens);\n // then call ourselves again to refresh the cache, but don't block on the result\n if (depth === 0) {\n resolveEns(ens, depth + 1);\n }\n }\n return resolvedPromise.address;\n}\n\n// Only pass through to provider call if value ends with .eth or .cb.id\nconst EnsSchema = /* @__PURE__ */(() => z.custom(ens => typeof ens === \"string\" && (ens.endsWith(\".eth\") || ens.endsWith(\".cb.id\"))).transform(async ens => resolveEns(ens)).refine(address => !!address && utils.isAddress(address), {\n message: \"Provided value was not a valid ENS name\"\n}))();\n\nconst AddressSchema = /* @__PURE__ */(() => z.custom(address => typeof address === \"string\" && utils.isAddress(address), out => {\n return {\n message: `${out} is not a valid address`\n };\n}))();\n\n// Important for address check to come before ENS so network request is only made when necessary\nconst AddressOrEnsSchema = /* @__PURE__ */(() => z.union([AddressSchema, EnsSchema], {\n invalid_type_error: \"Provided value was not a valid address or ENS name\"\n}))();\n\n// Use this everywhere even though it's just string so we can optionally switch it out\n// more easily if we want to later\n\nasync function resolveAddress(addressOrEns) {\n return AddressOrEnsSchema.parseAsync(addressOrEns);\n}\n\n/**\n * @internal\n */\nconst FileOrBufferUnionSchema = /* @__PURE__ */(() => z.instanceof(File) )();\n\n/**\n * @internal\n */\nconst FileOrBufferSchema = /* @__PURE__ */(() => z.union([FileOrBufferUnionSchema, z.object({\n data: z.union([FileOrBufferUnionSchema, z.string()]),\n name: z.string()\n})]))();\n\n/**\n * @internal\n */\nconst FileOrBufferOrStringSchema = /* @__PURE__ */(() => z.union([FileOrBufferSchema, z.string()]))();\nconst MAX_BPS = 10000;\nconst BytesLikeSchema = /* @__PURE__ */(() => z.union([z.array(z.number()), z.string()]))();\nconst BigNumberTransformSchema$1 = /* @__PURE__ */(() => z.union([z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n}), z.custom(data => {\n return BN.isBN(data);\n})]).transform(arg => {\n if (BN.isBN(arg)) {\n return new BN(arg).toString();\n }\n return BigNumber.from(arg).toString();\n}))();\nconst BasisPointsSchema = /* @__PURE__ */(() => z.number().max(MAX_BPS, \"Cannot exceed 100%\").min(0, \"Cannot be below 0%\"))();\nconst PercentSchema = /* @__PURE__ */(() => z.number().max(100, \"Cannot exceed 100%\").min(0, \"Cannot be below 0%\"))();\nconst HexColor = /* @__PURE__ */(() => z.union([z.string().regex(/^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, \"Invalid hex color\"), z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, \"Invalid hex color\").transform(val => val.replace(\"#\", \"\")), z.string().length(0)]))();\nconst AmountSchema = /* @__PURE__ */(() => z.union([z.string().regex(/^([0-9]+\\.?[0-9]*|\\.[0-9]+)$/, \"Invalid amount\"), z.number().min(0, \"Amount cannot be negative\")]).transform(arg => typeof arg === \"number\" ? arg.toString() : arg))();\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst QuantitySchema = /* @__PURE__ */(() => z.union([AmountSchema, z.literal(\"unlimited\")]).default(\"unlimited\"))();\n\nconst MAX_LENGTH = 256;\nconst NUMERIC_IDENTIFIER = \"0|[1-9]\\\\d*\";\nconst MAIN_VERSION_IDENTIFIER = `(${NUMERIC_IDENTIFIER})\\\\.(${NUMERIC_IDENTIFIER})\\\\.(${NUMERIC_IDENTIFIER})`;\nconst REGEX_MAIN_VERSION = new RegExp(MAIN_VERSION_IDENTIFIER);\n\n/**\n * @internal\n */\n\n/**\n * @internal\n * @param version - The version to convert to a Semver\n */\nfunction toSemver(version) {\n if (version.length > MAX_LENGTH) {\n throw new Error(`version is longer than ${MAX_LENGTH} characters`);\n }\n const matches = version.trim().match(REGEX_MAIN_VERSION);\n if (!matches || matches?.length !== 4) {\n throw new Error(`${version} is not a valid semantic version. Should be in the format of major.minor.patch. Ex: 0.4.1`);\n }\n const major = Number(matches[1]);\n const minor = Number(matches[2]);\n const patch = Number(matches[3]);\n const versionString = [major, minor, patch].join(\".\");\n return {\n major,\n minor,\n patch,\n versionString\n };\n}\n\n/**\n * @internal\n * @param current - The current version\n * @param next - The next version\n */\nfunction isIncrementalVersion(current, next) {\n const currentSemver = toSemver(current);\n const nextSemver = toSemver(next);\n if (nextSemver.major > currentSemver.major) {\n return true;\n }\n const eqMajor = nextSemver.major === currentSemver.major;\n if (eqMajor && nextSemver.minor > currentSemver.minor) {\n return true;\n }\n const eqMinor = nextSemver.minor === currentSemver.minor;\n return eqMajor && eqMinor && nextSemver.patch > currentSemver.patch;\n}\nfunction isDowngradeVersion(current, next) {\n const currentSemver = toSemver(current);\n const nextSemver = toSemver(next);\n if (nextSemver.major < currentSemver.major) {\n return true;\n }\n const eqMajor = nextSemver.major === currentSemver.major;\n if (eqMajor && nextSemver.minor < currentSemver.minor) {\n return true;\n }\n const eqMinor = nextSemver.minor === currentSemver.minor;\n return eqMajor && eqMinor && nextSemver.patch < currentSemver.patch;\n}\n\nconst BigNumberSchema = /* @__PURE__ */(() => z.union([z.string(), z.number(), z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n})]).transform(arg => BigNumber.from(arg)))();\nconst BigNumberishSchema = /* @__PURE__ */(() => BigNumberSchema.transform(arg => arg.toString()))();\nconst BigNumberTransformSchema = /* @__PURE__ */(() => z.union([z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n})]).transform(arg => {\n return BigNumber.from(arg).toString();\n}))();\n\n/**\n * @internal\n */\nconst CommonContractSchema = /* @__PURE__ */(() => z.object({\n name: z.string(),\n description: z.string().optional(),\n image: FileOrBufferOrStringSchema.optional(),\n external_link: z.string().optional(),\n app_uri: z.string().optional(),\n social_urls: z.record(z.string()).optional()\n}).catchall(z.unknown()))();\n/**\n * @internal\n */\nconst CommonContractOutputSchema = /* @__PURE__ */(() => CommonContractSchema.extend({\n image: z.string().optional()\n}).catchall(z.unknown()))();\n\n/**\n * @internal\n */\nconst CommonRoyaltySchema = /* @__PURE__ */(() => z.object({\n /**\n * The amount of royalty collected on all royalties represented as basis points.\n * The default is 0 (no royalties).\n *\n * 1 basis point = 0.01%\n *\n * For example: if this value is 100, then the royalty is 1% of the total sales.\n *\n * @internalremarks used by OpenSea \"seller_fee_basis_points\"\n */\n seller_fee_basis_points: BasisPointsSchema.default(0),\n /**\n * The address of the royalty recipient. All royalties will be sent\n * to this address.\n * @internalremarks used by OpenSea \"fee_recipient\"\n */\n fee_recipient: AddressOrEnsSchema.default(constants.AddressZero)\n}))();\n\n/**\n * @internal\n */\nconst CommonPrimarySaleSchema = /* @__PURE__ */(() => z.object({\n /**\n * primary sale recipient address\n */\n primary_sale_recipient: AddressOrEnsSchema\n}))();\n\n/**\n * @internal\n */\nconst CommonPlatformFeeSchema = /* @__PURE__ */(() => z.object({\n /**\n * platform fee basis points\n */\n platform_fee_basis_points: BasisPointsSchema.default(0),\n /**\n * platform fee recipient address\n */\n platform_fee_recipient: AddressOrEnsSchema.default(constants.AddressZero)\n}))();\n\n/**\n * @internal\n */\nconst CommonTrustedForwarderSchema = /* @__PURE__ */(() => z.object({\n trusted_forwarders: z.array(AddressOrEnsSchema).default([])\n}))();\n\n/**\n * @internal\n */\nconst CommonSymbolSchema = /* @__PURE__ */(() => z.object({\n symbol: z.string().default(\"\")\n}))();\n\n/**\n * @internal\n */\nconst MerkleSchema = /* @__PURE__ */(() => z.object({\n merkle: z.record(z.string()).default({})\n}))();\nconst SnapshotEntryInput = /* @__PURE__ */(() => z.object({\n address: AddressOrEnsSchema,\n maxClaimable: QuantitySchema.default(0),\n // defaults to 0\n price: QuantitySchema.optional(),\n // defaults to unlimited, but can be undefined in old snapshots\n currencyAddress: AddressOrEnsSchema.default(constants.AddressZero).optional() // defaults to AddressZero, but can be undefined for old snapshots\n}))();\n\n/**\n * @internal\n */\nconst SnapshotInputSchema = /* @__PURE__ */(() => z.union([z.array(z.string()).transform(async strings => await Promise.all(strings.map(address => SnapshotEntryInput.parseAsync({\n address\n})))), z.array(SnapshotEntryInput)]))();\nconst SnapshotEntryWithProofSchema = /* @__PURE__ */(() => SnapshotEntryInput.extend({\n proof: z.array(z.string())\n}))();\n\n/**\n * @internal\n */\nconst SnapshotSchema = /* @__PURE__ */(() => z.object({\n /**\n * The merkle root\n */\n merkleRoot: z.string(),\n claims: z.array(SnapshotEntryWithProofSchema)\n}))();\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst SnapshotInfoSchema = /* @__PURE__ */(() => z.object({\n merkleRoot: z.string(),\n snapshotUri: z.string()\n}))();\n\n/**\n * @internal\n */\nconst BYOCContractMetadataSchema = /* @__PURE__ */(() => CommonContractSchema.catchall(z.union([BigNumberTransformSchema, z.unknown()])))();\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst CustomContractInput = /* @__PURE__ */(() => BYOCContractMetadataSchema.merge(CommonRoyaltySchema.merge(MerkleSchema).merge(CommonSymbolSchema).partial()).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst CustomContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema.merge(MerkleSchema).merge(CommonSymbolSchema).partial()).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst CustomContractDeploy = /* @__PURE__ */(() => CustomContractInput.merge(CommonPlatformFeeSchema.merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema).partial()))();\n\n/**\n * @internal\n */\nconst CustomContractSchema = {\n deploy: CustomContractDeploy,\n output: CustomContractOutput,\n input: CustomContractInput\n};\n\n/**\n * @internal\n */\nconst AbiTypeBaseSchema = /* @__PURE__ */(() => z.object({\n type: z.string(),\n name: z.string().default(\"\")\n}).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst AbiTypeSchema = /* @__PURE__ */(() => AbiTypeBaseSchema.extend({\n stateMutability: z.string().optional(),\n components: z.array(AbiTypeBaseSchema).optional()\n}).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst AbiObjectSchema = /* @__PURE__ */(() => z.object({\n type: z.string(),\n name: z.string().default(\"\"),\n inputs: z.array(AbiTypeSchema).default([]),\n outputs: z.array(AbiTypeSchema).default([])\n}).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst AbiSchema = /* @__PURE__ */(() => z.array(AbiObjectSchema))();\n// if we want to statically type this for external usage it has to *awlways* be the output type\n\n// input type is only used internally\n/**\n * @internal\n */\n/**\n * @internal\n */\nconst PreDeployMetadata = /* @__PURE__ */(() => z.object({\n name: z.string(),\n metadataUri: z.string(),\n bytecodeUri: z.string(),\n analytics: z.any().optional()\n}).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst ChainIdToAddressSchema = /* @__PURE__ */(() => z.record(z.string(), z.string()))();\n\n/**\n * @internal\n */\nconst CustomFactoryInput = /* @__PURE__ */(() => z.object({\n factoryFunction: z.string(),\n params: z.array(z.object({\n name: z.string(),\n type: z.string()\n })).default([]),\n customFactoryAddresses: ChainIdToAddressSchema\n}))();\n\n/**\n * @internal\n */\nconst FactoryDeploymentSchema = /* @__PURE__ */(() => z.object({\n implementationAddresses: ChainIdToAddressSchema,\n implementationInitializerFunction: z.string().default(\"initialize\"),\n customFactoryInput: CustomFactoryInput.optional(),\n factoryAddresses: ChainIdToAddressSchema.optional()\n}))();\n\n/**\n * @internal\n */\nconst DeployTypeInput = /* @__PURE__ */(() => z.union([z.literal(\"standard\"), z.literal(\"autoFactory\"), z.literal(\"customFactory\")]))();\n\n/**\n * @internal\n */\nconst RouterTypeInput = /* @__PURE__ */(() => z.union([z.literal(\"none\"), z.literal(\"plugin\"), z.literal(\"dynamic\")]))();\n\n/**\n * @internal\n */\nconst DeploymentNetworkInput = /* @__PURE__ */(() => z.object({\n allNetworks: z.boolean().optional(),\n networksEnabled: z.array(z.number()).default([])\n}))();\n\n/**\n * @internal\n */\nconst ExtraPublishMetadataSchemaInput = /* @__PURE__ */(() => z.object({\n version: z.string().refine(v => {\n try {\n toSemver(v);\n return true;\n } catch (e) {\n return false;\n }\n }, out => {\n return {\n message: `'${out}' is not a valid semantic version. Should be in the format of major.minor.patch. Ex: 0.4.1`\n };\n }),\n displayName: z.string().optional(),\n description: z.string().optional(),\n readme: z.string().optional(),\n license: z.string().optional(),\n changelog: z.string().optional(),\n tags: z.array(z.string()).optional(),\n audit: FileOrBufferOrStringSchema.nullable().optional(),\n logo: FileOrBufferOrStringSchema.nullable().optional(),\n isDeployableViaFactory: z.boolean().optional(),\n isDeployableViaProxy: z.boolean().optional(),\n factoryDeploymentData: FactoryDeploymentSchema.optional(),\n deployType: DeployTypeInput.optional(),\n routerType: RouterTypeInput.optional(),\n defaultExtensions: z.array(z.object({\n extensionName: z.string(),\n extensionVersion: z.string().default(\"latest\"),\n publisherAddress: AddressOrEnsSchema\n })).optional(),\n networksForDeployment: DeploymentNetworkInput.optional(),\n constructorParams: z.record(z.string(), z.object({\n displayName: z.string().optional(),\n description: z.string().optional(),\n defaultValue: z.string().optional(),\n hidden: z.boolean().optional()\n }).catchall(z.any())).optional(),\n compositeAbi: AbiSchema.optional()\n}).catchall(z.any()))();\n\n/**\n * @internal\n */\nconst ExtraPublishMetadataSchemaOutput = /* @__PURE__ */(() => ExtraPublishMetadataSchemaInput.extend({\n audit: z.string().nullable().optional(),\n logo: z.string().nullable().optional()\n}))();\n/**\n * @internal\n */\nconst FullPublishMetadataSchemaInput = /* @__PURE__ */(() => PreDeployMetadata.merge(ExtraPublishMetadataSchemaInput).extend({\n publisher: AddressOrEnsSchema.optional()\n}))();\n\n/**\n * @internal\n */\nconst FullPublishMetadataSchemaOutput = /* @__PURE__ */(() => PreDeployMetadata.merge(ExtraPublishMetadataSchemaOutput).extend({\n publisher: AddressOrEnsSchema.optional()\n}))();\n/**\n * @internal\n */\nconst ProfileSchemaInput = /* @__PURE__ */(() => z.object({\n name: z.string().optional(),\n bio: z.string().optional(),\n avatar: FileOrBufferOrStringSchema.nullable().optional(),\n website: z.string().optional(),\n twitter: z.string().optional(),\n telegram: z.string().optional(),\n facebook: z.string().optional(),\n github: z.string().optional(),\n medium: z.string().optional(),\n linkedin: z.string().optional(),\n reddit: z.string().optional(),\n discord: z.string().optional()\n}))();\nconst ProfileSchemaOutput = /* @__PURE__ */(() => ProfileSchemaInput.extend({\n avatar: z.string().nullable().optional()\n}))();\n/**\n * @internal\n */\nconst PublishedContractSchema = /* @__PURE__ */(() => z.object({\n id: z.string(),\n timestamp: BigNumberishSchema,\n metadataUri: z.string()\n}))();\n\n/**\n * @internal\n * Follows https://docs.soliditylang.org/en/v0.8.15/natspec-format.html\n */\nconst ContractInfoSchema = /* @__PURE__ */(() => z.object({\n title: z.string().optional(),\n author: z.string().optional(),\n details: z.string().optional(),\n notice: z.string().optional()\n}))();\n\n/**\n * @internal\n */\nconst CompilerMetadataFetchedSchema = /* @__PURE__ */(() => z.object({\n name: z.string(),\n abi: AbiSchema,\n metadata: z.record(z.string(), z.any()),\n info: ContractInfoSchema,\n licenses: z.array(z.string().optional()).default([]).transform(v => {\n return v.filter(license => license !== undefined);\n }),\n isPartialAbi: z.boolean().optional()\n}))();\n\n/**\n * @internal\n */\nconst PreDeployMetadataFetchedSchema = /* @__PURE__ */(() => PreDeployMetadata.merge(CompilerMetadataFetchedSchema).extend({\n bytecode: z.string()\n}))();\n\n/**\n * Fetch and parse the full metadata AFTER publishing a contract, with all the extra information (version, readme, etc)\n * @internal\n * @param publishMetadataUri - The publish metadata URI to fetch\n * @param storage - The storage to use\n */\nasync function fetchExtendedReleaseMetadata(publishMetadataUri, storage) {\n const meta = await (await storage.download(publishMetadataUri)).text();\n return FullPublishMetadataSchemaOutput.parse(JSON.parse(meta));\n}\n\nconst CONTRACT_METADATA_TIMEOUT_SEC = 2;\n\n/**\n * @internal\n * @param compilerMetadataUri - The compiler metadata URI to fetch\n * @param storage - The storage to use\n */\nasync function fetchContractMetadata(compilerMetadataUri, storage) {\n // short timeout to avoid hanging on unpinned contract metadata CIDs\n const metadata = await storage.downloadJSON(compilerMetadataUri, {\n timeoutInSeconds: CONTRACT_METADATA_TIMEOUT_SEC\n });\n if (!metadata || !metadata.output) {\n throw new Error(`Could not resolve metadata for contract at ${compilerMetadataUri}`);\n }\n return formatCompilerMetadata(metadata);\n}\nfunction formatCompilerMetadata(metadata) {\n const abi = AbiSchema.parse(metadata.output.abi);\n const compilationTarget = metadata.settings.compilationTarget;\n const targets = Object.keys(compilationTarget);\n const name = compilationTarget[targets[0]];\n const info = ContractInfoSchema.parse({\n title: metadata.output.devdoc.title,\n author: metadata.output.devdoc.author,\n details: metadata.output.devdoc.detail,\n notice: metadata.output.userdoc.notice\n });\n const licenses = [...new Set(Object.entries(metadata.sources).map(_ref => {\n let [, src] = _ref;\n return src.license;\n }))];\n return {\n name,\n abi,\n metadata,\n info,\n licenses,\n isPartialAbi: metadata.isPartialAbi\n };\n}\n\n/**\n * @internal\n * @param publishMetadataUri - The publish metadata URI to fetch\n * @param storage - The storage to use\n */\nasync function fetchRawPredeployMetadata(publishMetadataUri, storage) {\n return PreDeployMetadata.parse(JSON.parse(await (await storage.download(publishMetadataUri)).text()));\n}\n\n/**\n * Fetch the metadata coming from CLI, this is before deploying or releasing the contract.\n * @internal\n * @param publishMetadataUri - The publish metadata URI to fetch\n * @param storage - The storage to use\n */\nasync function fetchPreDeployMetadata(publishMetadataUri, storage) {\n const rawMeta = await fetchRawPredeployMetadata(publishMetadataUri, storage);\n const deployBytecode = await (await storage.download(rawMeta.bytecodeUri)).text();\n const parsedMeta = await fetchContractMetadata(rawMeta.metadataUri, storage);\n return PreDeployMetadataFetchedSchema.parse({\n ...rawMeta,\n ...parsedMeta,\n bytecode: deployBytecode\n });\n}\n\nconst deployMetadataCache = {};\nasync function fetchAndCacheDeployMetadata(publishMetadataUri, storage) {\n if (deployMetadataCache[publishMetadataUri]) {\n return deployMetadataCache[publishMetadataUri];\n }\n const compilerMetadata = await fetchPreDeployMetadata(publishMetadataUri, storage);\n let extendedMetadata;\n try {\n extendedMetadata = await fetchExtendedReleaseMetadata(publishMetadataUri, storage);\n } catch (e) {\n // not a factory deployment, ignore\n }\n const data = {\n compilerMetadata,\n extendedMetadata\n };\n deployMetadataCache[publishMetadataUri] = data;\n return data;\n}\n\n// @ts-expect-error - readonly vs not\nlet supportedChains = defaultChains;\n\n/**\n * @internal\n */\nfunction setSupportedChains(chains) {\n if (chains && chains.length > 0) {\n supportedChains = chains;\n } else {\n // @ts-expect-error - readonly vs not\n supportedChains = defaultChains;\n }\n}\n\n/**\n * @internal\n */\nfunction getSupportedChains() {\n return supportedChains;\n}\n\nconst THIRDWEB_DEPLOYER = \"0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024\";\nasync function fetchPublishedContractFromPolygon(publisherAddress, contractName) {\n let version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n let storage = arguments.length > 3 ? arguments[3] : undefined;\n let clientId = arguments.length > 4 ? arguments[4] : undefined;\n let secretKey = arguments.length > 5 ? arguments[5] : undefined;\n const polygonChain = getSupportedChains().find(c => c.chainId === 137);\n const chain = polygonChain || Polygon;\n const publisher = await resolveAddress(publisherAddress);\n const ContractPublisherAbi = (await import('@thirdweb-dev/contracts-js/dist/abis/ContractPublisher.json')).default;\n const contract = new Contract(getContractPublisherAddress(), ContractPublisherAbi, getChainProvider(chain, {\n clientId,\n secretKey\n }));\n let publishedContract;\n if (!version || version === \"latest\") {\n const model = await contract.getPublishedContract(publisher, contractName);\n publishedContract = PublishedContractSchema.parse({\n id: model.contractId,\n timestamp: model.publishTimestamp,\n metadataUri: model.publishMetadataUri\n });\n } else {\n const allVersions = (await contract.getPublishedContractVersions(publisher, contractName)).map(c => {\n return PublishedContractSchema.parse({\n id: c.contractId,\n timestamp: c.publishTimestamp,\n metadataUri: c.publishMetadataUri\n });\n });\n\n // get the metadata for each version\n const versionMetadata = (await Promise.all(allVersions.map(c => fetchAndCacheDeployMetadata(c.metadataUri, storage)))).map((item, index) => ({\n name: allVersions[index].id,\n publishedTimestamp: allVersions[index].timestamp,\n publishedMetadata: item\n }));\n\n // find the version that matches the version string\n const versionMatch = versionMetadata.find(metadata => metadata.publishedMetadata.extendedMetadata?.version === version);\n invariant(versionMatch, \"Contract version not found\");\n // match the version back to the contract based on the published timestamp\n publishedContract = allVersions.find(c => c.timestamp === versionMatch.publishedTimestamp);\n }\n if (!publishedContract) {\n throw new Error(`No published contract found for ${contractName} at version by '${THIRDWEB_DEPLOYER}'`);\n }\n return publishedContract;\n}\n\nasync function getPrebuiltInfo(address, provider) {\n try {\n const IThirdwebContractABI = (await import('@thirdweb-dev/contracts-js/dist/abis/IThirdwebContract.json')).default;\n const contract = new Contract(address, IThirdwebContractABI, provider);\n const [_type, version] = await Promise.all([contract.contractType(), contract.contractVersion()]);\n const type = utils.toUtf8String(_type) // eslint-disable-next-line no-control-regex\n .replace(/\\x00/g, \"\");\n return {\n type,\n version\n };\n } catch (e) {\n return undefined;\n }\n}\n\n/* eslint-disable eqeqeq */\n/* eslint-disable better-tree-shaking/no-top-level-side-effects */\nlet decoder;\ntry {\n decoder = new TextDecoder();\n} catch (error) {}\nlet src;\nlet srcEnd;\nlet position = 0;\nconst LEGACY_RECORD_INLINE_ID = 105;\nconst RECORD_DEFINITIONS_ID = 0xdffe;\nconst RECORD_INLINE_ID = 0xdfff; // temporary first-come first-serve tag // proposed tag: 0x7265 // 're'\nconst BUNDLED_STRINGS_ID = 0xdff9;\nconst PACKED_REFERENCE_TAG_ID = 6;\nconst STOP_CODE = {};\nlet currentDecoder = {};\nlet currentStructures;\nlet srcString;\nlet srcStringStart = 0;\nlet srcStringEnd = 0;\nlet bundledStrings;\nlet referenceMap;\nlet currentExtensions = [];\nlet currentExtensionRanges = [];\nlet packedValues;\nlet dataView;\nlet restoreMapsAsObject;\nlet defaultOptions = {\n useRecords: false,\n mapsAsObjects: true\n};\nlet sequentialMode = false;\nclass Decoder {\n constructor(options) {\n if (options) {\n if ((options.keyMap || options._keyMap) && !options.useRecords) {\n options.useRecords = false;\n options.mapsAsObjects = true;\n }\n if (options.useRecords === false && options.mapsAsObjects === undefined) {\n options.mapsAsObjects = true;\n }\n if (options.getStructures) {\n options.getShared = options.getStructures;\n }\n if (options.getShared && !options.structures) {\n (options.structures = []).uninitialized = true;\n } // this is what we use to denote an uninitialized structures\n if (options.keyMap) {\n this.mapKey = new Map();\n for (let [k, v] of Object.entries(options.keyMap)) {\n this.mapKey.set(v, k);\n }\n }\n }\n Object.assign(this, options);\n }\n decodeKey(key) {\n return this.keyMap ? this.mapKey.get(key) || key : key;\n }\n decode(source, end) {\n if (src) {\n // re-entrant execution, save the state and restore it after we do this decode\n return saveState(() => {\n clearSource();\n return this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end);\n });\n }\n srcEnd = end > -1 ? end : source.length;\n position = 0;\n srcStringEnd = 0;\n srcString = null;\n bundledStrings = null;\n src = source;\n // this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n // technique for getting data from a database where it can be copied into an existing buffer instead of creating\n // new ones\n try {\n dataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength));\n } catch (error) {\n // if it doesn't have a buffer, maybe it is the wrong type of object\n src = null;\n if (source instanceof Uint8Array) {\n throw error;\n }\n throw new Error(\"Source must be a Uint8Array or Buffer but was a \" + (source && typeof source === \"object\" ? source.constructor.name : typeof source));\n }\n if (this instanceof Decoder) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n currentDecoder = this;\n packedValues = this.sharedValues && (this.pack ? new Array(this.maxPrivatePackedValues || 16).concat(this.sharedValues) : this.sharedValues);\n if (this.structures) {\n currentStructures = this.structures;\n return checkedRead();\n } else if (!currentStructures || currentStructures.length > 0) {\n currentStructures = [];\n }\n } else {\n currentDecoder = defaultOptions;\n if (!currentStructures || currentStructures.length > 0) {\n currentStructures = [];\n }\n packedValues = null;\n }\n return checkedRead();\n }\n}\nfunction checkedRead() {\n try {\n let result = read();\n if (bundledStrings) {\n if (position >= bundledStrings.postBundlePosition) {\n let error = new Error(\"Unexpected bundle position\");\n error.incomplete = true;\n throw error;\n }\n // bundled strings to skip past\n position = bundledStrings.postBundlePosition;\n bundledStrings = null;\n }\n if (position == srcEnd) {\n // finished reading this source, cleanup references\n currentStructures = null;\n src = null;\n if (referenceMap) {\n referenceMap = null;\n }\n } else if (position > srcEnd) {\n // over read\n let error = new Error(\"Unexpected end of CBOR data\");\n error.incomplete = true;\n throw error;\n } else if (!sequentialMode) {\n throw new Error(\"Data read, but end of buffer not reached\");\n }\n // else more to read, but we are reading sequentially, so don't clear source yet\n return result;\n } catch (error) {\n clearSource();\n if (error instanceof RangeError || error.message.startsWith(\"Unexpected end of buffer\")) {\n error.incomplete = true;\n }\n throw error;\n }\n}\nfunction read() {\n let token = src[position++];\n let majorType = token >> 5;\n token = token & 0x1f;\n if (token > 0x17) {\n switch (token) {\n case 0x18:\n token = src[position++];\n break;\n case 0x19:\n if (majorType == 7) {\n return getFloat16();\n }\n token = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n if (majorType == 7) {\n let value = dataView.getFloat32(position);\n if (currentDecoder.useFloat32 > 2) {\n // this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n let multiplier = mult10[(src[position] & 0x7f) << 1 | src[position + 1] >> 7];\n position += 4;\n return (multiplier * value + (value > 0 ? 0.5 : -0.5) >> 0) / multiplier;\n }\n position += 4;\n return value;\n }\n token = dataView.getUint32(position);\n position += 4;\n break;\n case 0x1b:\n if (majorType == 7) {\n let value = dataView.getFloat64(position);\n position += 8;\n return value;\n }\n if (majorType > 1) {\n if (dataView.getUint32(position) > 0) {\n throw new Error(\"JavaScript does not support arrays, maps, or strings with length over 4294967295\");\n }\n token = dataView.getUint32(position + 4);\n } else if (currentDecoder.int64AsNumber) {\n token = dataView.getUint32(position) * 0x100000000;\n token += dataView.getUint32(position + 4);\n } else {\n token = dataView.getBigUint64(position);\n }\n position += 8;\n break;\n case 0x1f:\n // indefinite length\n switch (majorType) {\n case 2: // byte string\n case 3:\n // text string\n throw new Error(\"Indefinite length not supported for byte or text strings\");\n case 4:\n // array\n let array = [];\n let value,\n i = 0;\n while ((value = read()) != STOP_CODE) {\n array[i++] = value;\n }\n return majorType == 4 ? array : majorType == 3 ? array.join(\"\") : Buffer.concat(array);\n case 5:\n // map\n let key;\n if (currentDecoder.mapsAsObjects) {\n let object = {};\n if (currentDecoder.keyMap) {\n while ((key = read()) != STOP_CODE) {\n object[safeKey(currentDecoder.decodeKey(key))] = read();\n }\n } else {\n while ((key = read()) != STOP_CODE) {\n object[safeKey(key)] = read();\n }\n }\n return object;\n } else {\n if (restoreMapsAsObject) {\n currentDecoder.mapsAsObjects = true;\n restoreMapsAsObject = false;\n }\n let map = new Map();\n if (currentDecoder.keyMap) {\n while ((key = read()) != STOP_CODE) {\n map.set(currentDecoder.decodeKey(key), read());\n }\n } else {\n while ((key = read()) != STOP_CODE) {\n map.set(key, read());\n }\n }\n return map;\n }\n case 7:\n return STOP_CODE;\n default:\n throw new Error(\"Invalid major type for indefinite length \" + majorType);\n }\n default:\n throw new Error(\"Unknown token \" + token);\n }\n }\n switch (majorType) {\n case 0:\n // positive int\n return token;\n case 1:\n // negative int\n return ~token;\n case 2:\n // buffer\n return readBin(token);\n case 3:\n // string\n if (srcStringEnd >= position) {\n return srcString.slice(position - srcStringStart, (position += token) - srcStringStart);\n }\n if (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\n // for small blocks, avoiding the overhead of the extract call is helpful\n let string = token < 16 ? shortStringInJS(token) : longStringInJS(token);\n if (string != null) {\n return string;\n }\n }\n return readFixedString(token);\n case 4:\n // array\n let array = new Array(token);\n //if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())\n //else\n for (let i = 0; i < token; i++) {\n array[i] = read();\n }\n return array;\n case 5:\n // map\n if (currentDecoder.mapsAsObjects) {\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 0; i < token; i++) {\n object[safeKey(currentDecoder.decodeKey(read()))] = read();\n }\n } else {\n for (let i = 0; i < token; i++) {\n object[safeKey(read())] = read();\n }\n }\n return object;\n } else {\n if (restoreMapsAsObject) {\n currentDecoder.mapsAsObjects = true;\n restoreMapsAsObject = false;\n }\n let map = new Map();\n if (currentDecoder.keyMap) {\n for (let i = 0; i < token; i++) {\n map.set(currentDecoder.decodeKey(read()), read());\n }\n } else {\n for (let i = 0; i < token; i++) {\n map.set(read(), read());\n }\n }\n return map;\n }\n case 6:\n // extension\n if (token >= BUNDLED_STRINGS_ID) {\n let structure = currentStructures[token & 0x1fff]; // check record structures first\n // At some point we may provide an option for dynamic tag assignment with a range like token >= 8 && (token < 16 || (token > 0x80 && token < 0xc0) || (token > 0x130 && token < 0x4000))\n if (structure) {\n if (!structure.read) {\n structure.read = createStructureReader(structure);\n }\n return structure.read();\n }\n if (token < 0x10000) {\n if (token == RECORD_INLINE_ID) {\n // we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n return recordDefinition(read());\n } else if (token == RECORD_DEFINITIONS_ID) {\n let length = readJustLength();\n let id = read();\n for (let i = 2; i < length; i++) {\n recordDefinition([id++, read()]);\n }\n return read();\n } else if (token == BUNDLED_STRINGS_ID) {\n return readBundleExt();\n }\n if (currentDecoder.getShared) {\n loadShared();\n structure = currentStructures[token & 0x1fff];\n if (structure) {\n if (!structure.read) {\n structure.read = createStructureReader(structure);\n }\n return structure.read();\n }\n }\n }\n }\n let extension = currentExtensions[token];\n if (extension) {\n if (extension.handlesRead) {\n return extension(read);\n } else {\n return extension(read());\n }\n } else {\n let input = read();\n for (let i = 0; i < currentExtensionRanges.length; i++) {\n let value = currentExtensionRanges[i](token, input);\n if (value !== undefined) {\n return value;\n }\n }\n return new Tag(input, token);\n }\n case 7:\n // fixed value\n switch (token) {\n case 0x14:\n return false;\n case 0x15:\n return true;\n case 0x16:\n return null;\n case 0x17:\n return;\n // undefined\n case 0x1f:\n default:\n let packedValue = (packedValues || getPackedValues())[token];\n if (packedValue !== undefined) {\n return packedValue;\n }\n throw new Error(\"Unknown token \" + token);\n }\n default:\n // negative int\n if (isNaN(token)) {\n let error = new Error(\"Unexpected end of CBOR data\");\n error.incomplete = true;\n throw error;\n }\n throw new Error(\"Unknown CBOR token \" + token);\n }\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/;\nfunction createStructureReader(structure) {\n function readObject() {\n // get the array size from the header\n let length = src[position++];\n //let majorType = token >> 5\n length = length & 0x1f;\n if (length > 0x17) {\n switch (length) {\n case 0x18:\n length = src[position++];\n break;\n case 0x19:\n length = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n length = dataView.getUint32(position);\n position += 4;\n break;\n default:\n throw new Error(\"Expected array header, but got \" + src[position - 1]);\n }\n }\n // This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n let compiledReader = this.compiledReader; // first look to see if we have the fast compiled function\n while (compiledReader) {\n // we have a fast compiled object literal reader\n if (compiledReader.propertyCount === length) {\n return compiledReader(read);\n } // with the right length, so we use it\n compiledReader = compiledReader.next; // see if there is another reader with the right length\n }\n\n if (this.slowReads++ >= 3) {\n // create a fast compiled reader\n let array = this.length == length ? this : this.slice(0, length);\n compiledReader = currentDecoder.keyMap ? new Function(\"r\", \"return {\" + array.map(k => currentDecoder.decodeKey(k)).map(k => validName.test(k) ? safeKey(k) + \":r()\" : \"[\" + JSON.stringify(k) + \"]:r()\").join(\",\") + \"}\") : new Function(\"r\", \"return {\" + array.map(key => validName.test(key) ? safeKey(key) + \":r()\" : \"[\" + JSON.stringify(key) + \"]:r()\").join(\",\") + \"}\");\n if (this.compiledReader) {\n compiledReader.next = this.compiledReader;\n } // if there is an existing one, we store multiple readers as a linked list because it is usually pretty rare to have multiple readers (of different length) for the same structure\n compiledReader.propertyCount = length;\n this.compiledReader = compiledReader;\n return compiledReader(read);\n }\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 0; i < length; i++) {\n object[safeKey(currentDecoder.decodeKey(this[i]))] = read();\n }\n } else {\n for (let i = 0; i < length; i++) {\n object[safeKey(this[i])] = read();\n }\n }\n return object;\n }\n structure.slowReads = 0;\n return readObject;\n}\nfunction safeKey(key) {\n return key === \"__proto__\" ? \"__proto_\" : key;\n}\nlet readFixedString = readStringJS;\nfunction readStringJS(length) {\n let result;\n if (length < 16) {\n if (result = shortStringInJS(length)) {\n return result;\n }\n }\n if (length > 64 && decoder) {\n return decoder.decode(src.subarray(position, position += length));\n }\n const end = position + length;\n const units = [];\n result = \"\";\n while (position < end) {\n const byte1 = src[position++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n } else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n const byte2 = src[position++] & 0x3f;\n units.push((byte1 & 0x1f) << 6 | byte2);\n } else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n const byte2 = src[position++] & 0x3f;\n const byte3 = src[position++] & 0x3f;\n units.push((byte1 & 0x1f) << 12 | byte2 << 6 | byte3);\n } else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n const byte2 = src[position++] & 0x3f;\n const byte3 = src[position++] & 0x3f;\n const byte4 = src[position++] & 0x3f;\n let unit = (byte1 & 0x07) << 0x12 | byte2 << 0x0c | byte3 << 0x06 | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(unit >>> 10 & 0x3ff | 0xd800);\n unit = 0xdc00 | unit & 0x3ff;\n }\n units.push(unit);\n } else {\n units.push(byte1);\n }\n if (units.length >= 0x1000) {\n result += fromCharCode.apply(String, units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += fromCharCode.apply(String, units);\n }\n return result;\n}\nlet fromCharCode = String.fromCharCode;\nfunction longStringInJS(length) {\n let start = position;\n let bytes = new Array(length);\n for (let i = 0; i < length; i++) {\n const byte = src[position++];\n if ((byte & 0x80) > 0) {\n position = start;\n return;\n }\n bytes[i] = byte;\n }\n return fromCharCode.apply(String, bytes);\n}\nfunction shortStringInJS(length) {\n if (length < 4) {\n if (length < 2) {\n if (length === 0) {\n return \"\";\n } else {\n let a = src[position++];\n if ((a & 0x80) > 1) {\n position -= 1;\n return;\n }\n return fromCharCode(a);\n }\n } else {\n let a = src[position++];\n let b = src[position++];\n if ((a & 0x80) > 0 || (b & 0x80) > 0) {\n position -= 2;\n return;\n }\n if (length < 3) {\n return fromCharCode(a, b);\n }\n let c = src[position++];\n if ((c & 0x80) > 0) {\n position -= 3;\n return;\n }\n return fromCharCode(a, b, c);\n }\n } else {\n let a = src[position++];\n let b = src[position++];\n let c = src[position++];\n let d = src[position++];\n if ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n position -= 4;\n return;\n }\n if (length < 6) {\n if (length === 4) {\n return fromCharCode(a, b, c, d);\n } else {\n let e = src[position++];\n if ((e & 0x80) > 0) {\n position -= 5;\n return;\n }\n return fromCharCode(a, b, c, d, e);\n }\n } else if (length < 8) {\n let e = src[position++];\n let f = src[position++];\n if ((e & 0x80) > 0 || (f & 0x80) > 0) {\n position -= 6;\n return;\n }\n if (length < 7) {\n return fromCharCode(a, b, c, d, e, f);\n }\n let g = src[position++];\n if ((g & 0x80) > 0) {\n position -= 7;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g);\n } else {\n let e = src[position++];\n let f = src[position++];\n let g = src[position++];\n let h = src[position++];\n if ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n position -= 8;\n return;\n }\n if (length < 10) {\n if (length === 8) {\n return fromCharCode(a, b, c, d, e, f, g, h);\n } else {\n let i = src[position++];\n if ((i & 0x80) > 0) {\n position -= 9;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i);\n }\n } else if (length < 12) {\n let i = src[position++];\n let j = src[position++];\n if ((i & 0x80) > 0 || (j & 0x80) > 0) {\n position -= 10;\n return;\n }\n if (length < 11) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j);\n }\n let k = src[position++];\n if ((k & 0x80) > 0) {\n position -= 11;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k);\n } else {\n let i = src[position++];\n let j = src[position++];\n let k = src[position++];\n let l = src[position++];\n if ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n position -= 12;\n return;\n }\n if (length < 14) {\n if (length === 12) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);\n } else {\n let m = src[position++];\n if ((m & 0x80) > 0) {\n position -= 13;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m);\n }\n } else {\n let m = src[position++];\n let n = src[position++];\n if ((m & 0x80) > 0 || (n & 0x80) > 0) {\n position -= 14;\n return;\n }\n if (length < 15) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);\n }\n let o = src[position++];\n if ((o & 0x80) > 0) {\n position -= 15;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);\n }\n }\n }\n }\n}\nfunction readBin(length) {\n return currentDecoder.copyBuffers ?\n // specifically use the copying slice (not the node one)\n Uint8Array.prototype.slice.call(src, position, position += length) : src.subarray(position, position += length);\n}\nlet f32Array = new Float32Array(1);\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4);\nfunction getFloat16() {\n let byte0 = src[position++];\n let byte1 = src[position++];\n let exponent = (byte0 & 0x7f) >> 2;\n if (exponent === 0x1f) {\n // specials\n if (byte1 || byte0 & 3) {\n return NaN;\n }\n return byte0 & 0x80 ? -Infinity : Infinity;\n }\n if (exponent === 0) {\n // sub-normals\n // significand with 10 fractional bits and divided by 2^14\n let abs = ((byte0 & 3) << 8 | byte1) / (1 << 24);\n return byte0 & 0x80 ? -abs : abs;\n }\n u8Array[3] = byte0 & 0x80 |\n // sign bit\n (exponent >> 1) + 56; // 4 of 5 of the exponent bits, re-offset-ed\n u8Array[2] = (byte0 & 7) << 5 |\n // last exponent bit and first two mantissa bits\n byte1 >> 3; // next 5 bits of mantissa\n u8Array[1] = byte1 << 5; // last three bits of mantissa\n u8Array[0] = 0;\n return f32Array[0];\n}\nclass Tag {\n constructor(value, tag) {\n this.value = value;\n this.tag = tag;\n }\n}\ncurrentExtensions[0] = dateString => {\n // string date extension\n return new Date(dateString);\n};\ncurrentExtensions[1] = epochSec => {\n // numeric date extension\n return new Date(Math.round(epochSec * 1000));\n};\ncurrentExtensions[2] = buffer => {\n // bigint extension\n let value = BigInt(0);\n for (let i = 0, l = buffer.byteLength; i < l; i++) {\n value = BigInt(buffer[i]) + value << BigInt(8);\n }\n return value;\n};\ncurrentExtensions[3] = buffer => {\n // negative bigint extension\n return BigInt(-1) - currentExtensions[2](buffer);\n};\ncurrentExtensions[4] = fraction => {\n // best to reparse to maintain accuracy\n return Number(fraction[1] + \"e\" + fraction[0]);\n};\ncurrentExtensions[5] = fraction => {\n // probably not sufficiently accurate\n return fraction[1] * Math.exp(fraction[0] * Math.log(2));\n};\n\n// the registration of the record definition extension\nconst recordDefinition = definition => {\n let id = definition[0] - 0xe000;\n let structure = definition[1];\n let existingStructure = currentStructures[id];\n if (existingStructure && existingStructure.isShared) {\n (currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure;\n }\n currentStructures[id] = structure;\n structure.read = createStructureReader(structure);\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 2, l = definition.length; i < l; i++) {\n let key = currentDecoder.decodeKey(structure[i - 2]);\n object[safeKey(key)] = definition[i];\n }\n } else {\n for (let i = 2, l = definition.length; i < l; i++) {\n let key = structure[i - 2];\n object[safeKey(key)] = definition[i];\n }\n }\n return object;\n};\ncurrentExtensions[LEGACY_RECORD_INLINE_ID] = recordDefinition;\ncurrentExtensions[14] = value => {\n if (bundledStrings) {\n return bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 += value);\n }\n return new Tag(value, 14);\n};\ncurrentExtensions[15] = value => {\n if (bundledStrings) {\n return bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value);\n }\n return new Tag(value, 15);\n};\nlet glbl = {\n Error,\n RegExp\n};\ncurrentExtensions[27] = data => {\n // http://cbor.schmorp.de/generic-object\n return (glbl[data[0]] || Error)(data[1], data[2]);\n};\nconst packedTable = _read => {\n if (src[position++] != 0x84) {\n throw new Error(\"Packed values structure must be followed by a 4 element array\");\n }\n let newPackedValues = _read(); // packed values\n packedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues;\n packedValues.prefixes = _read();\n packedValues.suffixes = _read();\n return _read(); // read the rump\n};\n\npackedTable.handlesRead = true;\ncurrentExtensions[51] = packedTable;\ncurrentExtensions[PACKED_REFERENCE_TAG_ID] = data => {\n // packed reference\n if (!packedValues) {\n if (currentDecoder.getShared) {\n loadShared();\n } else {\n return new Tag(data, PACKED_REFERENCE_TAG_ID);\n }\n }\n if (typeof data === \"number\") {\n return packedValues[16 + (data >= 0 ? 2 * data : -2 * data - 1)];\n }\n throw new Error(\"No support for non-integer packed references yet\");\n};\ncurrentExtensions[25] = id => {\n return stringRefs[id];\n};\ncurrentExtensions[256] = _read => {\n stringRefs = [];\n try {\n return _read();\n } finally {\n stringRefs = null;\n }\n};\ncurrentExtensions[256].handlesRead = true;\ncurrentExtensions[28] = _read => {\n // shareable http://cbor.schmorp.de/value-sharing (for structured clones)\n if (!referenceMap) {\n referenceMap = new Map();\n referenceMap.id = 0;\n }\n let id = referenceMap.id++;\n let token = src[position];\n let target;\n // TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n // ahead past references to record structure definitions\n if (token >> 5 == 4) {\n target = [];\n } else {\n target = {};\n }\n let refEntry = {\n target\n }; // a placeholder object\n referenceMap.set(id, refEntry);\n let targetProperties = _read(); // read the next value as the target object to id\n if (refEntry.used) {\n // there is a cycle, so we have to assign properties to original target\n return Object.assign(target, targetProperties);\n }\n refEntry.target = targetProperties; // the placeholder wasn't used, replace with the deserialized one\n return targetProperties; // no cycle, can just use the returned read object\n};\n\ncurrentExtensions[28].handlesRead = true;\ncurrentExtensions[29] = id => {\n // sharedref http://cbor.schmorp.de/value-sharing (for structured clones)\n let refEntry = referenceMap.get(id);\n refEntry.used = true;\n return refEntry.target;\n};\ncurrentExtensions[258] = array => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n(currentExtensions[259] = _read => {\n // https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\n // for decoding as a standard Map\n if (currentDecoder.mapsAsObjects) {\n currentDecoder.mapsAsObjects = false;\n restoreMapsAsObject = true;\n }\n return _read();\n}).handlesRead = true;\nfunction combine(a, b) {\n if (typeof a === \"string\") {\n return a + b;\n }\n if (a instanceof Array) {\n return a.concat(b);\n }\n return Object.assign({}, a, b);\n}\nfunction getPackedValues() {\n if (!packedValues) {\n if (currentDecoder.getShared) {\n loadShared();\n } else {\n throw new Error(\"No packed values available\");\n }\n }\n return packedValues;\n}\nconst SHARED_DATA_TAG_ID = 0x53687264; // ascii 'Shrd'\ncurrentExtensionRanges.push((tag, input) => {\n if (tag >= 225 && tag <= 255) {\n return combine(getPackedValues().prefixes[tag - 224], input);\n }\n if (tag >= 28704 && tag <= 32767) {\n return combine(getPackedValues().prefixes[tag - 28672], input);\n }\n if (tag >= 1879052288 && tag <= 2147483647) {\n return combine(getPackedValues().prefixes[tag - 1879048192], input);\n }\n if (tag >= 216 && tag <= 223) {\n return combine(input, getPackedValues().suffixes[tag - 216]);\n }\n if (tag >= 27647 && tag <= 28671) {\n return combine(input, getPackedValues().suffixes[tag - 27639]);\n }\n if (tag >= 1811940352 && tag <= 1879048191) {\n return combine(input, getPackedValues().suffixes[tag - 1811939328]);\n }\n if (tag == SHARED_DATA_TAG_ID) {\n // we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n return {\n packedValues: packedValues,\n structures: currentStructures.slice(0),\n version: input\n };\n }\n if (tag == 55799) {\n // self-descriptive CBOR tag, just return input value\n return input;\n }\n});\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;\nconst typedArrays = [Uint8Array];\nconst typedArrayTags = [64];\nfor (let i = 0; i < typedArrays.length; i++) {\n registerTypedArray(typedArrays[i], typedArrayTags[i]);\n}\nfunction registerTypedArray(TypedArray, tag) {\n let dvMethod = \"get\" + TypedArray.name.slice(0, -5);\n if (typeof TypedArray !== \"function\") {\n TypedArray = null;\n }\n let bytesPerElement = TypedArray.BYTES_PER_ELEMENT;\n for (let littleEndian = 0; littleEndian < 2; littleEndian++) {\n if (!littleEndian && bytesPerElement == 1) {\n continue;\n }\n let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3;\n currentExtensions[littleEndian ? tag : tag - 4] = bytesPerElement == 1 || littleEndian == isLittleEndianMachine ? buffer => {\n if (!TypedArray) {\n throw new Error(\"Could not find typed array for code \" + tag);\n }\n // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\n return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer);\n } : buffer => {\n if (!TypedArray) {\n throw new Error(\"Could not find typed array for code \" + tag);\n }\n let dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let elements = buffer.length >> sizeShift;\n let ta = new TypedArray(elements);\n let method = dv[dvMethod];\n for (let i = 0; i < elements; i++) {\n ta[i] = method.call(dv, i << sizeShift, littleEndian);\n }\n return ta;\n };\n }\n}\nfunction readBundleExt() {\n let length = readJustLength();\n let bundlePosition = position + read();\n for (let i = 2; i < length; i++) {\n // skip past bundles that were already read\n let bundleLength = readJustLength(); // this will increment position, so must add to position afterwards\n position += bundleLength;\n }\n let dataPosition = position;\n position = bundlePosition;\n bundledStrings = [readStringJS(readJustLength()), readStringJS(readJustLength())];\n bundledStrings.position0 = 0;\n bundledStrings.position1 = 0;\n bundledStrings.postBundlePosition = position;\n position = dataPosition;\n return read();\n}\nfunction readJustLength() {\n let token = src[position++] & 0x1f;\n if (token > 0x17) {\n switch (token) {\n case 0x18:\n token = src[position++];\n break;\n case 0x19:\n token = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n token = dataView.getUint32(position);\n position += 4;\n break;\n }\n }\n return token;\n}\nfunction loadShared() {\n if (currentDecoder.getShared) {\n let sharedData = saveState(() => {\n // save the state in case getShared modifies our buffer\n src = null;\n return currentDecoder.getShared();\n }) || {};\n let updatedStructures = sharedData.structures || [];\n currentDecoder.sharedVersion = sharedData.version;\n packedValues = currentDecoder.sharedValues = sharedData.packedValues;\n if (currentStructures === true) {\n currentDecoder.structures = currentStructures = updatedStructures;\n } else {\n currentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures));\n }\n }\n}\nfunction saveState(callback) {\n let savedSrcEnd = srcEnd;\n let savedPosition = position;\n let savedSrcStringStart = srcStringStart;\n let savedSrcStringEnd = srcStringEnd;\n let savedSrcString = srcString;\n let savedReferenceMap = referenceMap;\n let savedBundledStrings = bundledStrings;\n\n // TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n let savedSrc = new Uint8Array(src.slice(0, srcEnd)); // we copy the data in case it changes while external data is processed\n let savedStructures = currentStructures;\n let savedDecoder = currentDecoder;\n let savedSequentialMode = sequentialMode;\n let value = callback();\n srcEnd = savedSrcEnd;\n position = savedPosition;\n srcStringStart = savedSrcStringStart;\n srcStringEnd = savedSrcStringEnd;\n srcString = savedSrcString;\n referenceMap = savedReferenceMap;\n bundledStrings = savedBundledStrings;\n src = savedSrc;\n sequentialMode = savedSequentialMode;\n currentStructures = savedStructures;\n currentDecoder = savedDecoder;\n dataView = new DataView(src.buffer, src.byteOffset, src.byteLength);\n return value;\n}\nfunction clearSource() {\n src = null;\n referenceMap = null;\n currentStructures = null;\n}\nconst mult10 = new Array(147); // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n mult10[i] = Number(\"1e\" + Math.floor(45.15 - i * 0.30103));\n}\nconst defaultDecoder = new Decoder({\n useRecords: false\n});\nconst decode = defaultDecoder.decode;\n\n/**\n * @internal\n * @param hex - The hex string to convert to bytes\n */\nfunction hexToBytes(hex) {\n hex = hex.toString(16);\n if (!hex.startsWith(\"0x\")) {\n hex = `0x${hex}`;\n }\n if (!isHexStrict(hex)) {\n throw new Error(`Given value \"${hex}\" is not a valid hex string.`);\n }\n hex = hex.replace(/^0x/i, \"\");\n const bytes = [];\n for (let c = 0; c < hex.length; c += 2) {\n bytes.push(parseInt(hex.slice(c, c + 2), 16));\n }\n return bytes;\n}\n\n/**\n * @internal\n * @param hex - The hex string to check\n */\nfunction isHexStrict(hex) {\n return (typeof hex === \"string\" || typeof hex === \"number\") && /^(-)?0x[0-9a-f]*$/i.test(hex.toString());\n}\n\n/**\n * @internal\n * @param bytecode - The bytecode to extract the IPFS hash from\n */\nfunction extractIPFSHashFromBytecode(bytecode) {\n const numericBytecode = hexToBytes(bytecode);\n const cborLength = numericBytecode[numericBytecode.length - 2] * 0x100 + numericBytecode[numericBytecode.length - 1];\n const bytecodeBuffer = Uint8Array.from(numericBytecode.slice(numericBytecode.length - 2 - cborLength, -2));\n const cborData = decode(bytecodeBuffer);\n if (\"ipfs\" in cborData && cborData[\"ipfs\"]) {\n try {\n return `ipfs://${bs58.encode(cborData[\"ipfs\"])}`;\n } catch (e) {\n console.warn(\"feature-detection ipfs cbor failed\", e);\n }\n }\n return undefined;\n}\n\n/**\n * @internal\n * @param bytecode - The bytecode to check\n */\nfunction extractMinimalProxyImplementationAddress(bytecode) {\n // EIP-1167 clone minimal proxy - https://eips.ethereum.org/EIPS/eip-1167\n if (bytecode.startsWith(\"0x363d3d373d3d3d363d73\")) {\n const implementationAddress = bytecode.slice(22, 62);\n return `0x${implementationAddress}`;\n }\n\n // Minimal Proxy with receive() from 0xSplits - https://github.com/0xSplits/splits-contracts/blob/c7b741926ec9746182d0d1e2c4c2046102e5d337/contracts/libraries/Clones.sol\n if (bytecode.startsWith(\"0x36603057343d5230\")) {\n // +40 = size of addr\n const implementationAddress = bytecode.slice(122, 122 + 40);\n return `0x${implementationAddress}`;\n }\n\n // 0age's minimal proxy - https://medium.com/coinmonks/the-more-minimal-proxy-5756ae08ee48\n if (bytecode.startsWith(\"0x3d3d3d3d363d3d37363d73\")) {\n // +40 = size of addr\n const implementationAddress = bytecode.slice(24, 24 + 40);\n return `0x${implementationAddress}`;\n }\n\n // vyper's minimal proxy (uniswap v1) - https://etherscan.io/address/0x09cabec1ead1c0ba254b09efb3ee13841712be14#code\n if (bytecode.startsWith(\"0x366000600037611000600036600073\")) {\n const implementationAddress = bytecode.slice(32, 32 + 40);\n return `0x${implementationAddress}`;\n }\n return undefined;\n}\n\n/**\n * @internal\n * @param address - the contract address\n * @param provider - RPC provider\n */\nasync function resolveContractUriFromAddress(address, provider) {\n const {\n bytecode\n } = await resolveImplementation(address, provider);\n return extractIPFSHashFromBytecode(bytecode);\n}\nasync function resolveContractUriAndBytecode(address, provider) {\n const {\n bytecode\n } = await resolveImplementation(address, provider);\n return {\n uri: extractIPFSHashFromBytecode(bytecode),\n bytecode\n };\n}\n\n/**\n * Resolve the implementation address of a proxy contract and its bytecode\n * @param address - the contract address\n * @param provider - RPC provider\n * @returns the implementation address and its bytecode\n */\nasync function resolveImplementation(address, provider) {\n const bytecode = await fetchBytecode(address, provider);\n\n // check minimal proxy first synchronously\n const minimalProxyImplementationAddress = extractMinimalProxyImplementationAddress(bytecode);\n if (minimalProxyImplementationAddress) {\n return {\n address: minimalProxyImplementationAddress,\n bytecode: await fetchBytecode(minimalProxyImplementationAddress, provider)\n };\n }\n\n // check other proxy types\n const impl = await Promise.all([getImplementationFromStorageSlot(address, provider), getImplementationFromContractCall(address, provider)]);\n for (const implementationAddress of impl) {\n if (implementationAddress && utils.isAddress(implementationAddress) && implementationAddress !== constants.AddressZero) {\n return {\n address: implementationAddress,\n bytecode: await fetchBytecode(implementationAddress, provider)\n };\n }\n }\n return {\n address,\n bytecode\n };\n}\nasync function fetchBytecode(address, provider) {\n try {\n const bytecode = await provider.getCode(address);\n if (bytecode === \"0x\") {\n const chain = await provider.getNetwork();\n throw new Error(`Contract at ${address} does not exist on chain '${chain.name}' (chainId: ${chain.chainId})`);\n }\n return bytecode;\n } catch (e) {\n throw new Error(`Failed to get bytecode for address ${address}: ${e}`);\n }\n}\nasync function getImplementationFromStorageSlot(address, provider) {\n try {\n const proxyStorage = await provider.getStorageAt(address, BigNumber.from(\"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\"));\n return `0x${proxyStorage.slice(-40)}`;\n } catch (e) {\n return undefined;\n }\n}\nasync function getImplementationFromContractCall(address, provider) {\n try {\n const proxy = new Contract(address, UPGRADEABLE_PROXY_ABI, provider);\n return await proxy.implementation();\n } catch (e) {\n return undefined;\n }\n}\nconst UPGRADEABLE_PROXY_ABI = [{\n type: \"function\",\n name: \"implementation\",\n inputs: [],\n outputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }],\n stateMutability: \"view\"\n}];\n\nconst MultichainRegistry_address = \"0xcdAD8FA86e18538aC207872E8ff3536501431B73\"; // Polygon only\n\n/**\n * @internal\n */\nfunction getMultichainRegistryAddress() {\n return getProcessEnv(\"multiChainRegistryAddress\", MultichainRegistry_address);\n}\n\n/**\n * @internal\n */\nconst isBrowser = () => \"object\" !== \"undefined\";\n\n/**\n * @internal\n */\nconst isNode = () => !isBrowser();\n\n/**\n * @internal\n */\nfunction unique(a, fn) {\n if (a.length === 0 || a.length === 1) {\n return a;\n }\n if (!fn) {\n return a;\n }\n for (let i = 0; i < a.length; i++) {\n for (let j = i + 1; j < a.length; j++) {\n if (fn(a[i], a[j])) {\n a.splice(j, 1);\n }\n }\n }\n return a;\n}\n\n/**\n * @internal\n */\nfunction joinABIs(abis) {\n const parsedABIs = abis.map(abi => AbiSchema.parse(abi)).flat();\n const filteredABIs = unique(parsedABIs, (a, b) => {\n return a.name === b.name && a.type === b.type && a.inputs.length === b.inputs.length;\n });\n const finalABIs = filteredABIs.filter(item => item.type !== \"constructor\");\n return AbiSchema.parse(finalABIs);\n}\n\nconst FEATURE_TOKEN_CLAIM_CONDITIONS_V1 = {\n name: \"ERC20ClaimConditionsV1\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"erc20claimconditions\"\n },\n abis: [ERC20Abi, IDropSinglePhaseV1],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_CONDITIONS_V2 = {\n name: \"ERC20ClaimConditionsV2\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"erc20claimconditions\"\n },\n abis: [ERC20Abi, IDropSinglePhase],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_PHASES_V2 = {\n name: \"ERC20ClaimPhasesV2\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"erc20claimphases\"\n },\n abis: [ERC20Abi, IDrop],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_PHASES_V1 = {\n name: \"ERC20ClaimPhasesV1\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"erc20claimphases\"\n },\n abis: [DropERC20_V2Abi],\n features: {}\n};\nconst FEATURE_TOKEN_BURNABLE = {\n name: \"ERC20Burnable\",\n namespace: \"token.burn\",\n docLinks: {\n sdk: \"sdk.erc20burnable\",\n contracts: \"erc20burnable\"\n },\n abis: [ERC20Abi, IBurnableERC20Abi],\n features: {}\n};\nconst FEATURE_TOKEN_SIGNATURE_MINTABLE = {\n name: \"ERC20SignatureMintable\",\n namespace: \"token.signature\",\n docLinks: {\n sdk: \"sdk.erc20signaturemintable\",\n contracts: \"erc20signaturemint\"\n },\n abis: [ERC20Abi, ISignatureMintERC20Abi],\n features: {}\n};\nconst FEATURE_TOKEN_BATCH_MINTABLE = {\n name: \"ERC20BatchMintable\",\n namespace: \"token.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc20batchmintable\",\n contracts: \"erc20batchmintable\"\n },\n abis: [ERC20Abi, IMintableERC20Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_TOKEN_MINTABLE = {\n name: \"ERC20Mintable\",\n namespace: \"token.mint\",\n docLinks: {\n sdk: \"sdk.erc20mintable\",\n contracts: \"erc20mintable\"\n },\n abis: [ERC20Abi, IMintableERC20Abi],\n features: {\n [FEATURE_TOKEN_BATCH_MINTABLE.name]: FEATURE_TOKEN_BATCH_MINTABLE\n }\n};\nconst FEATURE_TOKEN_PERMIT = {\n name: \"ERC20Permit\",\n namespace: \"token.permit\",\n docLinks: {\n sdk: \"sdk.erc20permit\",\n contracts: \"erc20permit\"\n },\n abis: [ERC20Abi, IERC20PermitAbi],\n features: {}\n};\nconst FEATURE_TOKEN = {\n name: \"ERC20\",\n namespace: \"token\",\n docLinks: {\n sdk: \"sdk.erc20\",\n contracts: \"erc20\"\n },\n abis: [ERC20Abi, IERC20MetadataAbi],\n features: {\n [FEATURE_TOKEN_BURNABLE.name]: FEATURE_TOKEN_BURNABLE,\n [FEATURE_TOKEN_MINTABLE.name]: FEATURE_TOKEN_MINTABLE,\n [FEATURE_TOKEN_CLAIM_CONDITIONS_V1.name]: FEATURE_TOKEN_CLAIM_CONDITIONS_V1,\n [FEATURE_TOKEN_CLAIM_CONDITIONS_V2.name]: FEATURE_TOKEN_CLAIM_CONDITIONS_V2,\n [FEATURE_TOKEN_CLAIM_PHASES_V1.name]: FEATURE_TOKEN_CLAIM_PHASES_V1,\n [FEATURE_TOKEN_CLAIM_PHASES_V2.name]: FEATURE_TOKEN_CLAIM_PHASES_V2,\n [FEATURE_TOKEN_SIGNATURE_MINTABLE.name]: FEATURE_TOKEN_SIGNATURE_MINTABLE,\n [FEATURE_TOKEN_PERMIT.name]: FEATURE_TOKEN_PERMIT\n }\n};\n\nconst FEATURE_NFT_BURNABLE = {\n name: \"ERC721Burnable\",\n namespace: \"nft.burn\",\n docLinks: {\n sdk: \"sdk.erc721burnable\",\n contracts: \"erc721burnable\"\n },\n abis: [Erc721Abi, IBurnableERC721Abi],\n features: {}\n};\nconst FEATURE_NFT_REVEALABLE = {\n name: \"ERC721Revealable\",\n namespace: \"nft.drop.revealer\",\n docLinks: {\n sdk: \"sdk.delayedreveal\",\n contracts: \"erc721revealable\"\n },\n abis: [Erc721Abi, ILazyMintAbi, DelayedRevealAbi],\n features: {}\n};\nconst FEATURE_NFT_TIERED_DROP = {\n name: \"ERC721TieredDrop\",\n namespace: \"nft.tieredDrop\",\n docLinks: {\n sdk: \"sdk.erc721tiereddrop\",\n //TODO\n contracts: \"\"\n },\n abis: [Erc721Abi, TieredDropAbi],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CONDITIONS_V1 = {\n name: \"ERC721ClaimConditionsV1\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimconditions\"\n },\n abis: [Erc721Abi, IDropSinglePhaseV1],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CONDITIONS_V2 = {\n name: \"ERC721ClaimConditionsV2\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimconditions\"\n },\n abis: [Erc721Abi, IDropSinglePhase],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_PHASES_V1 = {\n name: \"ERC721ClaimPhasesV1\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimphases\"\n },\n abis: [DropERC721_V3Abi],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_PHASES_V2 = {\n name: \"ERC721ClaimPhasesV2\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimphases\"\n },\n abis: [Erc721Abi, IDrop],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CUSTOM = {\n name: \"ERC721ClaimCustom\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimcustom\"\n },\n abis: [Erc721Abi, IClaimableERC721],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_ZORA = {\n name: \"ERC721ClaimZora\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"erc721claimzora\"\n },\n abis: [Erc721Abi, zora_IDropERC721],\n features: {}\n};\nconst FEATURE_NFT_LAZY_MINTABLE = {\n name: \"ERC721LazyMintable\",\n namespace: \"nft.drop\",\n docLinks: {\n sdk: \"sdk.erc721lazymintable\",\n contracts: \"lazymint\"\n },\n abis: [Erc721Abi, ILazyMintAbi],\n features: {\n [FEATURE_NFT_REVEALABLE.name]: FEATURE_NFT_REVEALABLE\n }\n};\nconst FEATURE_NFT_BATCH_MINTABLE = {\n name: \"ERC721BatchMintable\",\n namespace: \"nft.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc721batchmintable\",\n contracts: \"erc721batchmintable\"\n },\n abis: [Erc721Abi, IMintableERC721Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_NFT_MINTABLE = {\n name: \"ERC721Mintable\",\n namespace: \"nft.mint\",\n docLinks: {\n sdk: \"sdk.erc721mintable\",\n contracts: \"erc721mintable\"\n },\n abis: [Erc721Abi, IMintableERC721Abi],\n features: {\n [FEATURE_NFT_BATCH_MINTABLE.name]: FEATURE_NFT_BATCH_MINTABLE\n }\n};\nconst FEATURE_NFT_SIGNATURE_MINTABLE_V2 = {\n name: \"ERC721SignatureMintV2\",\n namespace: \"nft.signature\",\n docLinks: {\n sdk: \"sdk.erc721signaturemint\",\n contracts: \"erc721signaturemint\"\n },\n abis: [Erc721Abi, SignatureMintERC721Abi],\n features: {}\n};\nconst FEATURE_NFT_SIGNATURE_MINTABLE_V1 = {\n name: \"ERC721SignatureMintV1\",\n namespace: \"nft.signature\",\n docLinks: {\n sdk: \"sdk.erc721signaturemint\",\n contracts: \"erc721signaturemint\"\n },\n abis: [SignatureMintERC721_V1Abi],\n features: {}\n};\nconst FEATURE_NFT_ENUMERABLE = {\n name: \"ERC721Enumerable\",\n namespace: \"nft.query.owned\",\n docLinks: {\n sdk: \"sdk.erc721enumerable\",\n contracts: \"erc721enumerable\"\n },\n abis: [Erc721Abi, Erc721EnumerableAbi],\n features: {}\n};\nconst FEATURE_NFT_QUERYABLE = {\n name: \"ERC721AQueryable\",\n namespace: \"nft.query.owned\",\n docLinks: {\n sdk: \"\",\n contracts: \"\"\n },\n abis: [Erc721AQueryableAbi],\n features: {}\n};\nconst FEATURE_NFT_SUPPLY = {\n name: \"ERC721Supply\",\n namespace: \"nft.query\",\n docLinks: {\n sdk: \"sdk.erc721supply\",\n contracts: \"erc721supply\"\n },\n abis: [Erc721Abi, Erc721SupplyAbi],\n features: {\n [FEATURE_NFT_ENUMERABLE.name]: FEATURE_NFT_ENUMERABLE,\n [FEATURE_NFT_QUERYABLE.name]: FEATURE_NFT_QUERYABLE\n }\n};\nconst FEATURE_NFT_SHARED_METADATA = {\n name: \"ERC721SharedMetadata\",\n namespace: \"nft.sharedmetadata\",\n docLinks: {\n sdk: \"sdk.sharedmetadata\",\n contracts: \"SharedMetadata\"\n },\n abis: [Erc721Abi, SharedMetadataAbi],\n features: {}\n};\nconst FEATURE_NFT_LOYALTY_CARD = {\n name: \"ERC721LoyaltyCard\",\n namespace: \"nft.loyaltyCard\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [ILoyaltyCardAbi],\n features: {}\n};\nconst FEATURE_NFT_UPDATABLE_METADATA = {\n name: \"ERC721UpdatableMetadata\",\n namespace: \"nft.metadata\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [Erc721Abi, INFTMetadataAbi],\n features: {}\n};\nconst FEATURE_NFT = {\n name: \"ERC721\",\n namespace: \"nft\",\n docLinks: {\n sdk: \"sdk.erc721\",\n contracts: \"erc721\"\n },\n abis: [Erc721Abi, IERC721MetadataAbi],\n features: {\n [FEATURE_NFT_BURNABLE.name]: FEATURE_NFT_BURNABLE,\n [FEATURE_NFT_SUPPLY.name]: FEATURE_NFT_SUPPLY,\n [FEATURE_NFT_MINTABLE.name]: FEATURE_NFT_MINTABLE,\n [FEATURE_NFT_LAZY_MINTABLE.name]: FEATURE_NFT_LAZY_MINTABLE,\n [FEATURE_NFT_SIGNATURE_MINTABLE_V1.name]: FEATURE_NFT_SIGNATURE_MINTABLE_V1,\n [FEATURE_NFT_SIGNATURE_MINTABLE_V2.name]: FEATURE_NFT_SIGNATURE_MINTABLE_V2,\n [FEATURE_NFT_TIERED_DROP.name]: FEATURE_NFT_TIERED_DROP,\n [FEATURE_NFT_CLAIM_CUSTOM.name]: FEATURE_NFT_CLAIM_CUSTOM,\n [FEATURE_NFT_CLAIM_ZORA.name]: FEATURE_NFT_CLAIM_ZORA,\n [FEATURE_NFT_CLAIM_CONDITIONS_V1.name]: FEATURE_NFT_CLAIM_CONDITIONS_V1,\n [FEATURE_NFT_CLAIM_CONDITIONS_V2.name]: FEATURE_NFT_CLAIM_CONDITIONS_V2,\n [FEATURE_NFT_CLAIM_PHASES_V1.name]: FEATURE_NFT_CLAIM_PHASES_V1,\n [FEATURE_NFT_CLAIM_PHASES_V2.name]: FEATURE_NFT_CLAIM_PHASES_V2,\n [FEATURE_NFT_SHARED_METADATA.name]: FEATURE_NFT_SHARED_METADATA,\n [FEATURE_NFT_LOYALTY_CARD.name]: FEATURE_NFT_LOYALTY_CARD,\n [FEATURE_NFT_UPDATABLE_METADATA.name]: FEATURE_NFT_UPDATABLE_METADATA\n }\n};\n\n// TODO could be part of IERC1155Metadata even though its not in the spec\nconst NAME_SYMBOL_ABI = [{\n inputs: [],\n name: \"name\",\n outputs: [{\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [],\n name: \"symbol\",\n outputs: [{\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst FEATURE_EDITION_BURNABLE = {\n name: \"ERC1155Burnable\",\n namespace: \"edition.burn\",\n docLinks: {\n sdk: \"sdk.erc1155burnable\",\n contracts: \"erc1155burnable\"\n },\n abis: [Erc1155Abi, IBurnableERC1155Abi],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CONDITIONS_V1 = {\n name: \"ERC1155ClaimConditionsV1\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"erc1155dropsinglephase\"\n },\n abis: [Erc1155Abi, IDropSinglePhase1155_V1],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CONDITIONS_V2 = {\n name: \"ERC1155ClaimConditionsV2\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"erc1155claimconditions\"\n },\n abis: [Erc1155Abi, IDropSinglePhase1155],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_PHASES_V2 = {\n name: \"ERC1155ClaimPhasesV2\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"erc1155claimphases\"\n },\n abis: [Erc1155Abi, IDropMultiPhase1155],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_PHASES_V1 = {\n name: \"ERC1155ClaimPhasesV1\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"erc1155claimphases\"\n },\n abis: [DropERC1155_V2Abi],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CUSTOM = {\n name: \"ERC1155ClaimCustom\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"erc1155claimcustom\"\n },\n abis: [Erc1155Abi, IClaimableERC1155],\n features: {}\n};\nconst FEATURE_EDITION_REVEALABLE = {\n name: \"ERC1155Revealable\",\n namespace: \"edition.drop.revealer\",\n docLinks: {\n sdk: \"sdk.drop.delayedreveal\",\n contracts: \"erc1155revealable\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, DelayedRevealAbi],\n features: {}\n};\nconst FEATURE_EDITION_LAZY_MINTABLE_V2 = {\n name: \"ERC1155LazyMintableV2\",\n namespace: \"edition.drop\",\n docLinks: {\n sdk: \"sdk.erc1155droppable\",\n contracts: \"lazymint\"\n },\n abis: [Erc1155Abi, ILazyMintAbi],\n features: {\n [FEATURE_EDITION_REVEALABLE.name]: FEATURE_EDITION_REVEALABLE\n }\n};\nconst FEATURE_EDITION_LAZY_MINTABLE_V1 = {\n name: \"ERC1155LazyMintableV1\",\n namespace: \"edition.drop\",\n docLinks: {\n sdk: \"sdk.erc1155droppable\",\n contracts: \"lazymint\"\n },\n abis: [DropERC1155_V2Abi],\n features: {\n [FEATURE_EDITION_CLAIM_PHASES_V1.name]: FEATURE_EDITION_CLAIM_PHASES_V1\n }\n};\nconst FEATURE_EDITION_SIGNATURE_MINTABLE = {\n name: \"ERC1155SignatureMintable\",\n namespace: \"edition.signature\",\n docLinks: {\n sdk: \"sdk.erc1155signaturemintable\",\n contracts: \"erc1155signaturemint\"\n },\n abis: [Erc1155Abi, ISignatureMintERC1155Abi],\n features: {}\n};\nconst FEATURE_EDITION_BATCH_MINTABLE = {\n name: \"ERC1155BatchMintable\",\n namespace: \"edition.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc1155batchmintable\",\n contracts: \"erc1155batchmintable\"\n },\n abis: [Erc1155Abi, IMintableERC1155Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_EDITION_MINTABLE = {\n name: \"ERC1155Mintable\",\n namespace: \"edition.mint\",\n docLinks: {\n sdk: \"sdk.erc1155mintable\",\n contracts: \"erc1155mintable\"\n },\n abis: [Erc1155Abi, IMintableERC1155Abi],\n features: {\n [FEATURE_EDITION_BATCH_MINTABLE.name]: FEATURE_EDITION_BATCH_MINTABLE\n }\n};\nconst FEATURE_EDITION_ENUMERABLE = {\n name: \"ERC1155Enumerable\",\n namespace: \"edition.query\",\n docLinks: {\n sdk: \"sdk.erc1155\",\n contracts: \"erc1155enumerable\"\n },\n abis: [Erc1155Abi, Erc1155EnumerableAbi],\n features: {}\n};\nconst FEATURE_EDITION_UPDATABLE_METADATA = {\n name: \"ERC1155UpdatableMetadata\",\n namespace: \"edition.metadata\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [Erc1155Abi, INFTMetadataAbi],\n features: {}\n};\nconst FEATURE_EDITION_SUPPLY = {\n name: \"ERC1155Supply\",\n namespace: \"edition.supply\",\n docLinks: {\n sdk: \"\",\n contracts: \"\"\n },\n abis: [Erc1155Abi, Erc1155SupplyAbi],\n features: {}\n};\nconst FEATURE_EDITION = {\n name: \"ERC1155\",\n namespace: \"edition\",\n docLinks: {\n sdk: \"sdk.erc1155enumerable\",\n contracts: \"erc1155\"\n },\n abis: [Erc1155Abi, Erc1155MetadataAbi, NAME_SYMBOL_ABI],\n features: {\n [FEATURE_EDITION_SUPPLY.name]: FEATURE_EDITION_SUPPLY,\n [FEATURE_EDITION_BURNABLE.name]: FEATURE_EDITION_BURNABLE,\n [FEATURE_EDITION_ENUMERABLE.name]: FEATURE_EDITION_ENUMERABLE,\n [FEATURE_EDITION_MINTABLE.name]: FEATURE_EDITION_MINTABLE,\n [FEATURE_EDITION_LAZY_MINTABLE_V1.name]: FEATURE_EDITION_LAZY_MINTABLE_V1,\n [FEATURE_EDITION_LAZY_MINTABLE_V2.name]: FEATURE_EDITION_LAZY_MINTABLE_V2,\n [FEATURE_EDITION_REVEALABLE.name]: FEATURE_EDITION_REVEALABLE,\n [FEATURE_EDITION_SIGNATURE_MINTABLE.name]: FEATURE_EDITION_SIGNATURE_MINTABLE,\n [FEATURE_EDITION_CLAIM_CUSTOM.name]: FEATURE_EDITION_CLAIM_CUSTOM,\n [FEATURE_EDITION_CLAIM_CONDITIONS_V1.name]: FEATURE_EDITION_CLAIM_CONDITIONS_V1,\n [FEATURE_EDITION_CLAIM_CONDITIONS_V2.name]: FEATURE_EDITION_CLAIM_CONDITIONS_V2,\n [FEATURE_EDITION_CLAIM_PHASES_V2.name]: FEATURE_EDITION_CLAIM_PHASES_V2,\n [FEATURE_EDITION_UPDATABLE_METADATA.name]: FEATURE_EDITION_UPDATABLE_METADATA\n }\n};\n\nconst fallbackAbi = [{\n stateMutability: \"payable\",\n type: \"fallback\"\n}];\nconst getAllPluginsAbi = [{\n inputs: [],\n name: \"getAllPlugins\",\n outputs: [{\n components: [{\n internalType: \"bytes4\",\n name: \"functionSelector\",\n type: \"bytes4\"\n }, {\n internalType: \"string\",\n name: \"functionSignature\",\n type: \"string\"\n }, {\n internalType: \"address\",\n name: \"pluginAddress\",\n type: \"address\"\n }],\n internalType: \"struct IPluginMap.Plugin[]\",\n name: \"registered\",\n type: \"tuple[]\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst getAllExtensionsAbi = [{\n inputs: [],\n name: \"getAllExtensions\",\n outputs: [{\n components: [{\n components: [{\n internalType: \"string\",\n name: \"name\",\n type: \"string\"\n }, {\n internalType: \"string\",\n name: \"metadataURI\",\n type: \"string\"\n }, {\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\"\n }],\n internalType: \"struct IExtension.ExtensionMetadata\",\n name: \"metadata\",\n type: \"tuple\"\n }, {\n components: [{\n internalType: \"bytes4\",\n name: \"functionSelector\",\n type: \"bytes4\"\n }, {\n internalType: \"string\",\n name: \"functionSignature\",\n type: \"string\"\n }],\n internalType: \"struct IExtension.ExtensionFunction[]\",\n name: \"functions\",\n type: \"tuple[]\"\n }],\n internalType: \"struct IExtension.Extension[]\",\n name: \"allExtensions\",\n type: \"tuple[]\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst FEATURE_ROYALTY = {\n name: \"Royalty\",\n namespace: \"royalty\",\n docLinks: {\n sdk: \"sdk.contractroyalty\",\n contracts: \"royalty\"\n },\n abis: [IThirdwebRoyaltyAbi],\n features: {}\n};\nconst FEATURE_PRIMARY_SALE = {\n name: \"PrimarySale\",\n namespace: \"sales\",\n docLinks: {\n sdk: \"sdk.contractprimarysale\",\n contracts: \"primarysale\"\n },\n abis: [IThirdwebPrimarySaleAbi],\n features: {}\n};\nconst FEATURE_PLATFORM_FEE = {\n name: \"PlatformFee\",\n namespace: \"platformFees\",\n docLinks: {\n sdk: \"sdk.platformfee\",\n contracts: \"platformfee\"\n },\n abis: [IThirdwebPlatformFeeAbi],\n features: {}\n};\nconst FEATURE_PERMISSIONS_ENUMERABLE = {\n name: \"PermissionsEnumerable\",\n namespace: \"roles\",\n docLinks: {\n sdk: \"sdk.contractroles\",\n contracts: \"permissionsenumerable\"\n },\n abis: [IPermissionsEnumerableAbi],\n features: {}\n};\nconst FEATURE_PERMISSIONS = {\n name: \"Permissions\",\n namespace: \"roles\",\n docLinks: {\n sdk: \"sdk.contractroles\",\n contracts: \"permissions\"\n },\n abis: [IPermissionsAbi],\n features: {\n [FEATURE_PERMISSIONS_ENUMERABLE.name]: FEATURE_PERMISSIONS_ENUMERABLE\n }\n};\nconst FEATURE_METADATA = {\n name: \"ContractMetadata\",\n namespace: \"metadata\",\n docLinks: {\n sdk: \"sdk.contractmetadata\",\n contracts: \"contractmetadata\"\n },\n abis: [IContractMetadataAbi],\n features: {}\n};\nconst FEATURE_APPURI = {\n name: \"AppURI\",\n namespace: \"appURI\",\n docLinks: {\n sdk: \"sdk.appURI\",\n //TODO\n contracts: \"\"\n },\n abis: [IAppURI],\n features: {}\n};\nconst FEATURE_OWNER = {\n name: \"Ownable\",\n namespace: \"owner\",\n docLinks: {\n sdk: \"sdk.owner\",\n contracts: \"ownable\"\n },\n abis: [IOwnableAbi],\n features: {}\n};\nconst FEATURE_GASLESS = {\n name: \"Gasless\",\n namespace: \"gasless\",\n docLinks: {\n sdk: \"sdk.gaslesstransaction\",\n // TODO add the correct name for this once it's added to portal\n contracts: \"IERC2771Context\"\n },\n abis: [IERC2771ContextAbi],\n features: {}\n};\nconst FEATURE_PACK_VRF = {\n name: \"PackVRF\",\n namespace: \"pack.vrf\",\n docLinks: {\n sdk: \"sdk.packvrf\",\n //TODO\n contracts: \"IPackVRF\"\n },\n abis: [IPackVRFAbi],\n features: {}\n};\nconst FEATURE_PLUGIN_ROUTER = {\n name: \"PluginRouter\",\n namespace: \"plugin.router\",\n docLinks: {\n sdk: \"sdk.pluginrouter\",\n //TODO\n contracts: \"PluginRouter\"\n },\n abis: [getAllPluginsAbi],\n features: {}\n};\nconst FEATURE_DYNAMIC_CONTRACT = {\n name: \"DynamicContract\",\n namespace: \"dynamic.contract\",\n docLinks: {\n sdk: \"\",\n //TODO\n contracts: \"IExtensionsManager\"\n },\n abis: [getAllExtensionsAbi],\n features: {}\n};\nconst FEATURE_DIRECT_LISTINGS = {\n name: \"DirectListings\",\n namespace: \"direct.listings\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IDirectListings\"\n },\n abis: [IDirectListingsAbi],\n features: {}\n};\nconst FEATURE_ENGLISH_AUCTIONS = {\n name: \"EnglishAuctions\",\n namespace: \"english.auctions\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IEnglishAuctions\"\n },\n abis: [IEnglishAuctionsAbi],\n features: {}\n};\nconst FEATURE_OFFERS = {\n name: \"Offers\",\n namespace: \"offers\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IOffers\"\n },\n abis: [IOffersAbi],\n features: {}\n};\nconst FEATURE_ACCOUNT_FACTORY = {\n name: \"AccountFactory\",\n namespace: \"accountFactory\",\n docLinks: {\n // TODO\n sdk: \"sdk.accountFactory\",\n contracts: \"IAccountFactory\"\n },\n abis: [IAccountFactoryCore],\n features: {}\n};\nconst FEATURE_ACCOUNT_PERMISSIONS_V1 = {\n name: \"AccountPermissionsV1\",\n namespace: \"accountPermissions\",\n docLinks: {\n // TODO\n sdk: \"sdk.account\",\n contracts: \"IAccountPermissions\"\n },\n abis: [IAccountPermissionsV1],\n features: {}\n};\nconst FEATURE_ACCOUNT_PERMISSIONS = {\n name: \"AccountPermissions\",\n namespace: \"accountPermissions\",\n docLinks: {\n // TODO\n sdk: \"sdk.account\",\n contracts: \"IAccountPermissions\"\n },\n abis: [IAccountPermissions],\n features: {}\n};\nconst FEATURE_ACCOUNT = {\n name: \"Account\",\n namespace: \"account\",\n docLinks: {\n // TODO\n sdk: \"sdk.account\",\n contracts: \"IAccount\"\n },\n abis: [IAccount],\n features: {\n [FEATURE_ACCOUNT_PERMISSIONS.name]: FEATURE_ACCOUNT_PERMISSIONS,\n [FEATURE_ACCOUNT_PERMISSIONS_V1.name]: FEATURE_ACCOUNT_PERMISSIONS_V1\n }\n};\nconst FEATURE_AIRDROP_ERC20 = {\n name: \"AirdropERC20\",\n namespace: \"airdrop20\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IAirdropERC20\"\n },\n abis: [IAirdropERC20],\n features: {}\n};\nconst FEATURE_AIRDROP_ERC721 = {\n name: \"AirdropERC721\",\n namespace: \"airdrop721\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IAirdropERC721\"\n },\n abis: [IAirdropERC721],\n features: {}\n};\nconst FEATURE_AIRDROP_ERC1155 = {\n name: \"AirdropERC1155\",\n namespace: \"airdrop1155\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"IAirdropERC1155\"\n },\n abis: [IAirdropERC1155],\n features: {}\n};\nconst FEATURE_FALLBACK = {\n name: \"Fallback\",\n namespace: \"fallback\",\n docLinks: {\n sdk: \"\",\n contracts: \"\"\n },\n abis: [fallbackAbi],\n features: {}\n};\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst SUPPORTED_FEATURES = {\n [FEATURE_TOKEN.name]: FEATURE_TOKEN,\n [FEATURE_NFT.name]: FEATURE_NFT,\n [FEATURE_EDITION.name]: FEATURE_EDITION,\n [FEATURE_ROYALTY.name]: FEATURE_ROYALTY,\n [FEATURE_PLATFORM_FEE.name]: FEATURE_PLATFORM_FEE,\n [FEATURE_PRIMARY_SALE.name]: FEATURE_PRIMARY_SALE,\n [FEATURE_PERMISSIONS.name]: FEATURE_PERMISSIONS,\n [FEATURE_METADATA.name]: FEATURE_METADATA,\n [FEATURE_APPURI.name]: FEATURE_APPURI,\n [FEATURE_OWNER.name]: FEATURE_OWNER,\n [FEATURE_GASLESS.name]: FEATURE_GASLESS,\n [FEATURE_PACK_VRF.name]: FEATURE_PACK_VRF,\n [FEATURE_PLUGIN_ROUTER.name]: FEATURE_PLUGIN_ROUTER,\n [FEATURE_DYNAMIC_CONTRACT.name]: FEATURE_DYNAMIC_CONTRACT,\n [FEATURE_DIRECT_LISTINGS.name]: FEATURE_DIRECT_LISTINGS,\n [FEATURE_ENGLISH_AUCTIONS.name]: FEATURE_ENGLISH_AUCTIONS,\n [FEATURE_OFFERS.name]: FEATURE_OFFERS,\n [FEATURE_AIRDROP_ERC20.name]: FEATURE_AIRDROP_ERC20,\n [FEATURE_AIRDROP_ERC721.name]: FEATURE_AIRDROP_ERC721,\n [FEATURE_AIRDROP_ERC1155.name]: FEATURE_AIRDROP_ERC1155,\n [FEATURE_ACCOUNT_FACTORY.name]: FEATURE_ACCOUNT_FACTORY,\n [FEATURE_ACCOUNT.name]: FEATURE_ACCOUNT,\n [FEATURE_NFT_LOYALTY_CARD.name]: FEATURE_NFT_LOYALTY_CARD,\n [FEATURE_NFT_UPDATABLE_METADATA.name]: FEATURE_NFT_UPDATABLE_METADATA,\n [FEATURE_FALLBACK.name]: FEATURE_FALLBACK\n};\n\nfunction toJSType(contractType) {\n let isReturnType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let withName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let jsType = contractType.type;\n let isArray = false;\n if (jsType.endsWith(\"[]\")) {\n isArray = true;\n jsType = jsType.slice(0, -2);\n }\n if (jsType.startsWith(\"bytes\")) {\n jsType = \"BytesLike\";\n }\n if (jsType.startsWith(\"uint\") || jsType.startsWith(\"int\")) {\n jsType = isReturnType ? \"BigNumber\" : \"BigNumberish\";\n }\n if (jsType.startsWith(\"bool\")) {\n jsType = \"boolean\";\n }\n if (jsType === \"address\") {\n jsType = \"string\";\n }\n if (jsType === \"tuple\") {\n if (contractType.components) {\n jsType = `{ ${contractType.components.map(a => toJSType(a, false, true)).join(\", \")} }`;\n }\n }\n if (isArray) {\n jsType += \"[]\";\n }\n if (withName) {\n jsType = `${contractType.name}: ${jsType}`;\n }\n return jsType;\n}\n\n/**\n * @internal\n * @param name - The name of the function to extract the comment from\n * @param metadata - The metadata to extract the comment from\n * @param type - The type of the function to extract the comment from\n */\nfunction extractCommentFromMetadata(name, metadata, type) {\n return metadata?.output?.userdoc?.[type]?.[Object.keys(metadata?.output?.userdoc[type] || {}).find(fn => fn.includes(name || \"unknown\")) || \"\"]?.notice || metadata?.output?.devdoc?.[type]?.[Object.keys(metadata?.output?.devdoc[type] || {}).find(fn => fn.includes(name || \"unknown\")) || \"\"]?.details;\n}\n\n/**\n * @internal\n * @param abi - The abi to extract functions from\n * @param metadata - The metadata to extract comments from\n */\nfunction extractFunctionsFromAbi(abi, metadata) {\n const functions = (abi || []).filter(el => el.type === \"function\");\n const parsed = [];\n for (const f of functions) {\n const doc = extractCommentFromMetadata(f.name, metadata, \"methods\");\n const args = f.inputs?.map(i => `${i.name || \"key\"}: ${toJSType(i)}`)?.join(\", \") || \"\";\n const fargs = args ? `, [${args}]` : \"\";\n const out = f.outputs?.map(o => toJSType(o, true))?.join(\", \");\n const promise = out ? `: Promise<${out}>` : `: Promise`;\n const signature = `contract.call(\"${f.name}\"${fargs})${promise}`;\n parsed.push({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore we know AbiTypeBaseSchema.name is not going to be undefined since we're doing `.default(\"\")`\n inputs: f.inputs || [],\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore we know the AbiTypeBaseSchema.name is not going to be undefined since we're doing `.default(\"\")`\n outputs: f.outputs || [],\n name: f.name || \"unknown\",\n signature,\n stateMutability: f.stateMutability || \"\",\n comment: doc\n });\n }\n return parsed;\n}\n\n/**\n * @internal\n * @param contractAbi - The abi to check\n * @param featureAbis - The feature abi to check\n * @returns\n */\nfunction hasMatchingAbi(contractAbi, featureAbis) {\n const contractFn = extractFunctionsFromAbi(contractAbi);\n const interfaceFn = featureAbis.flatMap(i => extractFunctionsFromAbi(i));\n // match every function and their arguments\n const intersection = contractFn.filter(fn => {\n const match = interfaceFn.find(iFn => iFn.name === fn.name && iFn.inputs.length === fn.inputs.length && iFn.inputs.every((i, index) => {\n if (i.type === \"tuple\" || i.type === \"tuple[]\") {\n // check that all properties in the tuple are the same type\n return i.type === fn.inputs[index].type && i.components?.every((c, cIndex) => {\n return c.type === fn.inputs[index].components?.[cIndex]?.type;\n });\n }\n return i.type === fn.inputs[index].type;\n }));\n return match !== undefined;\n });\n return intersection.length === interfaceFn.length;\n}\nfunction matchesAbiFromBytecode(contractBytecode, featureAbis) {\n const interfaces = featureAbis.map(abi => new Interface(abi));\n const selectors = interfaces.flatMap(i => {\n return Object.values(i.functions).map(fn => Number(i.getSighash(fn)).toString(16));\n });\n const uniqueSelectors = [...new Set(selectors)];\n // checks that all unique selectors are found in the bytecode\n return uniqueSelectors.every(selector => contractBytecode.includes(selector));\n}\n\n/**\n * Processes ALL supported features and sets whether the passed in abi supports each individual feature\n * @internal\n * @param abi - The abi to detect features in\n * @param features - The features to detect\n * @returns the nested struct of all features and whether they're detected in the abi\n */\nfunction detectFeatures(abi) {\n let features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SUPPORTED_FEATURES;\n const results = {};\n for (const featureKey in features) {\n const feature = features[featureKey];\n const enabled = matchesAbiInterface(abi, feature);\n const childResults = detectFeatures(abi, feature.features);\n results[featureKey] = {\n ...feature,\n features: childResults,\n enabled\n };\n }\n return results;\n}\nfunction detectFeaturesFromBytecode(bytecode) {\n let features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SUPPORTED_FEATURES;\n const results = {};\n for (const featureKey in features) {\n const feature = features[featureKey];\n const enabled = matchesAbiFromBytecode(bytecode, feature.abis);\n const childResults = detectFeaturesFromBytecode(bytecode, feature.features);\n results[featureKey] = {\n ...feature,\n features: childResults,\n enabled\n };\n }\n return results;\n}\n\n/**\n * @internal\n * @param abi - The abi to check\n * @param feature - The feature to check\n */\nfunction matchesAbiInterface(abi, feature) {\n // returns true if all the functions in `interfaceToMatch` are found in `contract` (removing any duplicates)\n return hasMatchingAbi(abi, feature.abis);\n}\n\nfunction extractFeatures(input, enabledExtensions) {\n if (!input) {\n return;\n }\n for (const extensionKey in input) {\n const extension = input[extensionKey];\n // if extension is enabled, then add it to enabledFeatures\n if (extension.enabled) {\n enabledExtensions.push(extension);\n }\n // recurse\n extractFeatures(extension.features, enabledExtensions);\n }\n}\n\n/**\n * Return all the detected features in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected extensions with full information on each feature\n * @internal\n * @deprecated use getAllDetectedExtensions instead\n */\nfunction getAllDetectedFeatures(abi) {\n const features = [];\n extractFeatures(detectFeatures(abi), features);\n return features;\n}\nfunction getAllDetectedExtensionsFromBytecode(bytecode) {\n const features = [];\n extractFeatures(detectFeaturesFromBytecode(bytecode), features);\n return features;\n}\nfunction constructAbiFromBytecode(bytecode) {\n let extensions = getAllDetectedExtensionsFromBytecode(bytecode);\n // special deduping for ERC721 and ERC20\n if (extensions.find(f => f.name === \"ERC721\")) {\n extensions = extensions.filter(f => f.name !== \"ERC20\");\n }\n const abi = joinABIs(extensions.map(f => joinABIs(f.abis)));\n return abi;\n}\n\n/**\n * Return all the detected extensions in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected extensions with full information on each feature\n * @public\n */\nfunction getAllDetectedExtensions(abi) {\n return getAllDetectedFeatures(abi).map(f => ({\n ...f,\n extensions: f.features\n }));\n}\n\nconst CONTRACT_RESOLVER_BASE_URL = \"https://contract.thirdweb.com/metadata\";\n\n// Internal static cache\nconst metadataCache = {};\nlet multichainRegistry = undefined;\nfunction getCacheKey(address, chainId) {\n return `${address}-${chainId}`;\n}\nfunction putInCache(address, chainId, metadata) {\n metadataCache[getCacheKey(address, chainId)] = metadata;\n}\nfunction getContractMetadataFromCache(address, chainId) {\n return metadataCache[getCacheKey(address, chainId)];\n}\n\n/**\n * @internal\n * @param address - The address to fetch the metadata for\n * @param provider - The provider to use\n * @param storage - The storage to use\n */\nasync function fetchContractMetadataFromAddress(address, provider, storage) {\n let sdkOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const chainId = (await provider.getNetwork()).chainId; // TODO resolve from sdk network\n const cached = getContractMetadataFromCache(address, chainId);\n if (cached) {\n return cached;\n }\n let metadata;\n\n // try to resolve from DNS first\n const isLocalChain = chainId === 31337 || chainId === 1337;\n if (!isLocalChain) {\n try {\n const response = await fetch(`${CONTRACT_RESOLVER_BASE_URL}/${chainId}/${address}`);\n if (response.ok) {\n const resolvedData = await response.json();\n metadata = formatCompilerMetadata(resolvedData);\n }\n } catch (e) {\n // fallback to IPFS\n }\n }\n if (!metadata) {\n metadata = await fetchContractMetadataFromBytecode(address, chainId, provider, storage, sdkOptions);\n }\n if (!metadata) {\n throw new Error(`Could not resolve contract. Try importing it by visiting: https://thirdweb.com/${chainId}/${address}`);\n }\n if (!metadata.isPartialAbi) {\n putInCache(address, chainId, metadata);\n }\n return metadata;\n}\nasync function fetchContractMetadataFromBytecode(address, chainId, provider, storage) {\n let sdkOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n let metadata;\n // we can't race here, because the contract URI might resolve first with a non pinned URI\n const [ipfsData, registryData] = await Promise.all([resolveContractUriAndBytecode(address, provider).catch(() => undefined), getMetadataUriFromMultichainRegistry(address, chainId, sdkOptions).then(uri => {\n if (!uri) {\n return undefined;\n }\n return {\n uri,\n bytecode: \"\"\n };\n }).catch(() => undefined)]);\n const bytecode = ipfsData?.bytecode;\n const metadataUri = registryData?.uri || ipfsData?.uri;\n if (!metadataUri && !bytecode) {\n throw new Error(`Could not fetch bytecode for contract at ${address} on chain ${chainId}, double check that the address and chainId are correct.`);\n }\n try {\n metadata = await fetchContractMetadata(metadataUri, storage);\n } catch (e) {\n // Don't warn here, its common to not have IPFS metadata for a contract, fallback to bytecode\n }\n if (!metadata && bytecode) {\n const abi = constructAbiFromBytecode(bytecode);\n if (abi && abi.length > 0) {\n console.warn(`Contract metadata could only be partially resolved, some contract functions might be unavailable. Try importing the contract by visiting: https://thirdweb.com/${chainId}/${address}`);\n // return partial ABI\n metadata = {\n name: \"Unimported Contract\",\n abi: abi,\n metadata: {},\n info: {},\n licenses: [],\n isPartialAbi: true\n };\n // return without caching\n return metadata;\n }\n }\n return metadata;\n}\nasync function getMetadataUriFromMultichainRegistry(address, chainId, sdkOptions) {\n const TWRegistryABI = (await import('@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryLogic.json')).default;\n if (!multichainRegistry) {\n const polygonChain = sdkOptions?.supportedChains?.find(c => c.chainId === 137);\n const chain = polygonChain || Polygon;\n multichainRegistry = new Contract(getMultichainRegistryAddress(), TWRegistryABI, getChainProvider(chain, sdkOptions));\n }\n const importedUri = await multichainRegistry.getMetadataUri(chainId, address);\n return importedUri;\n}\n\n/**\n * @internal\n * @param address - The address to fetch the metadata for\n * @param provider - The provider to use\n * @param storage - The storage to use\n * @returns\n */\nasync function fetchAbiFromAddress(address, provider, storage) {\n try {\n const metadata = await fetchContractMetadataFromAddress(address, provider, storage);\n if (metadata && metadata.abi) {\n return metadata.abi;\n }\n } catch (e) {\n // ignore and return undefined\n // will fallback to embedded ABIs for prebuilts\n }\n return undefined;\n}\n\nasync function getCompositeABIfromRelease(publishMetadataUri, storage) {\n const {\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, storage);\n const compositeAbi = extendedMetadata?.compositeAbi || [];\n return compositeAbi;\n}\n\nconst ERROR_SUBSTRINGS = [\"eip-155\", \"eip155\", \"protected\", \"invalid chain id for signer\", \"chain id none\", \"chain_id mismatch\", \"recovered sender mismatch\", \"transaction hash mismatch\", \"chainid no support\", \"chainid (0)\", \"chainid(0)\"];\nconst ERROR_SUBSTRINGS_COMPOSITE = [[\"account\", \"not found\"], [\"wrong\", \"chainid\"]];\n\n/* eslint-disable no-useless-computed-key */\nconst CUSTOM_GAS_FOR_CHAIN = {\n [5001]: {\n name: \"Mantle Testnet\",\n gasPrice: 1\n },\n [71402]: {\n name: \"Godwoken Mainnet\",\n gasPrice: 40000 * 10 ** 9\n },\n [1351057110]: {\n name: \"Chaos (SKALE Testnet)\",\n gasPrice: 100000\n },\n [361]: {\n name: \"Theta Mainnet\",\n gasPrice: 4000 * 10 ** 9\n },\n [365]: {\n name: \"Theta Testnet\",\n gasPrice: 4000 * 10 ** 9\n },\n [7700]: {\n name: \"Canto\",\n gasPrice: 1000 * 10 ** 9\n },\n [7701]: {\n name: \"Canto Testnet\",\n gasPrice: 1000 * 10 ** 9\n },\n [338]: {\n name: \"Cronos Testnet\",\n gasPrice: 2000 * 10 ** 9\n },\n [199]: {\n name: \"BitTorrent Chain\",\n gasPrice: 300000 * 10 ** 9\n },\n [88882]: {\n name: \"Spicy Chain\",\n gasPrice: 2500 * 10 ** 9,\n gasLimit: 200000\n },\n [88888]: {\n name: \"Chiliz Chain\",\n gasPrice: 2500 * 10 ** 9,\n gasLimit: 200000\n }\n};\n/* eslint-enable no-useless-computed-key */\n\nfunction matchError(error) {\n const errorIndex = ERROR_SUBSTRINGS.findIndex(substring => error.includes(substring));\n const compositeErrorIndex = ERROR_SUBSTRINGS_COMPOSITE.findIndex(arr => {\n let foundError = true;\n arr.forEach(substring => {\n foundError &&= error.includes(substring);\n });\n return foundError;\n });\n return errorIndex !== -1 || compositeErrorIndex !== -1;\n}\n\nconst CREATE2_FACTORY_BYTECODE = \"0x604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3\";\nconst SIGNATURE = {\n v: 27,\n r: \"0x2222222222222222222222222222222222222222222222222222222222222222\",\n s: \"0x2222222222222222222222222222222222222222222222222222222222222222\"\n};\nconst COMMON_FACTORY = \"0x4e59b44847b379578588920cA78FbF26c0B4956C\"; // for pre-eip-155 supporting chains\n\nconst GAS_LIMIT_FOR_DEPLOYER = 5000000;\nconst DEPLOYER_BYTECODE = \"0x60806040526040516107f33803806107f383398101604081905261002291610359565b805160005b818110156100c157828181518110610041576100416104c9565b6020026020010151600001516001600160a01b03163b600014156100af576100ad838281518110610074576100746104c9565b602002602001015160200151848381518110610092576100926104c9565b6020026020010151604001516100c960201b6100091760201c565b505b806100b9816104df565b915050610027565b505050610557565b606061011183836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061011860201b60201c565b9392505050565b6060610127848460008561012f565b949350505050565b6060824710156101955760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b6001600160a01b0385163b6101ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161018c565b600080866001600160a01b031685876040516102089190610508565b60006040518083038185875af1925050503d8060008114610245576040519150601f19603f3d011682016040523d82523d6000602084013e61024a565b606091505b50909250905061025b828286610266565b979650505050505050565b60608315610275575081610111565b8251156102855782518084602001fd5b8160405162461bcd60e51b815260040161018c9190610524565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156102d7576102d761029f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103055761030561029f565b604052919050565b80516001600160a01b038116811461032457600080fd5b919050565b60005b8381101561034457818101518382015260200161032c565b83811115610353576000848401525b50505050565b6000602080838503121561036c57600080fd5b82516001600160401b038082111561038357600080fd5b818501915085601f83011261039757600080fd5b8151818111156103a9576103a961029f565b8060051b6103b88582016102dd565b91825283810185019185810190898411156103d257600080fd5b86860192505b838310156104bc578251858111156103f05760008081fd5b86016060601f19828d0381018213156104095760008081fd5b6104116102b5565b61041c8b850161030d565b8152604061042b81860161030d565b828d01529284015192898411156104425760008081fd5b83850194508e603f86011261045957600093508384fd5b8b85015193508984111561046f5761046f61029f565b61047f8c84601f870116016102dd565b92508383528e818587010111156104965760008081fd5b6104a5848d8501838801610329565b8101919091528452505091860191908601906103d8565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561050157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000825161051a818460208701610329565b9190910192915050565b6020815260008251806020840152610543816040850160208701610329565b601f01601f19169190910160400192915050565b61028d806105666000396000f3fe6080604052600080fd5b606061004b83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610052565b9392505050565b60606100618484600085610069565b949350505050565b6060824710156100cf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b6001600160a01b0385163b6101265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100c6565b600080866001600160a01b031685876040516101429190610208565b60006040518083038185875af1925050503d806000811461017f576040519150601f19603f3d011682016040523d82523d6000602084013e610184565b606091505b509150915061019482828661019f565b979650505050505050565b606083156101ae57508161004b565b8251156101be5782518084602001fd5b8160405162461bcd60e51b81526004016100c69190610224565b60005b838110156101f35781810151838201526020016101db565b83811115610202576000848401525b50505050565b6000825161021a8184602087016101d8565b9190910192915050565b60208152600082518060208401526102438160408501602087016101d8565b601f01601f1916919091016040019291505056fea26469706673582212200b524eb8ceaafe6c603273ee859fddbc2d6f1b7860c3d853dcf6f129f9d9371364736f6c634300080c0033\";\nconst DEPLOYER_ABI = [{\n inputs: [{\n components: [{\n internalType: \"address\",\n name: \"predictedAddress\",\n type: \"address\"\n }, {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }, {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }],\n internalType: \"struct IDeployer.Transaction[]\",\n name: \"transactions\",\n type: \"tuple[]\"\n }],\n stateMutability: \"payable\",\n type: \"constructor\"\n}];\n\n/**\n * Check if a contract exists at the given address\n *\n * @internal\n * @param address - The address to check\n * @param provider - The provider to use\n */\nasync function isContractDeployed(address, provider) {\n const code = await provider.getCode(address);\n return code !== \"0x\" && code !== \"0x0\";\n}\n\n/**\n * Check if a chain enforces EIP-155 transactions\n * Ref: https://eips.ethereum.org/EIPS/eip-155\n *\n * @internal\n * @param provider - The provider to use\n */\nasync function isEIP155Enforced(provider) {\n try {\n // TODO: Find a better way to check this.\n\n // Send a random transaction of legacy type (pre-eip-155).\n // It will fail. Parse the error message to check whether eip-155 is enforced.\n await provider.sendTransaction(\"0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222\");\n } catch (e) {\n const errorMsg = e.toString().toLowerCase();\n const errorJson = JSON.stringify(e).toLowerCase();\n if (matchError(errorMsg) || matchError(errorJson)) {\n return true;\n }\n return false;\n }\n return false;\n}\n\n/**\n * Generate a transaction to be sent with a keyless signer.\n *\n * @public\n * @param transaction - Unsigned transaction object\n * @param signature - Signature bytes\n */\nfunction getKeylessTxn(transaction, signature) {\n // 1. Create serialized txn string\n const digest = utils.arrayify(utils.keccak256(utils.serializeTransaction(transaction)));\n\n // 2. Determine signer address from custom signature + txn\n const signer = utils.recoverAddress(digest, signature);\n\n // 3. Create the signed serialized txn string.\n // To be sent directly to the chain using a provider.\n const signedSerializedTx = utils.serializeTransaction(transaction, signature);\n return {\n signer: signer,\n transaction: signedSerializedTx\n };\n}\n\n/**\n *\n * @public\n * @param transaction - Unsigned transaction object\n * @param signature - Signature bytes\n */\nfunction getCreate2FactoryDeploymentInfo(chainId, gasOptions) {\n const signature = utils.joinSignature(SIGNATURE);\n const deploymentTransaction = getKeylessTxn({\n gasPrice: gasOptions.gasPrice ? gasOptions.gasPrice : 100 * 10 ** 9,\n gasLimit: gasOptions.gasLimit ? gasOptions.gasLimit : 100000,\n nonce: 0,\n data: CREATE2_FACTORY_BYTECODE,\n chainId: chainId\n }, signature);\n const create2FactoryAddress = utils.getContractAddress({\n from: deploymentTransaction.signer,\n nonce: 0\n });\n return {\n ...deploymentTransaction,\n deployment: create2FactoryAddress\n };\n}\n\n/**\n * Get the CREATE2 Factory address for a network\n * Source code of the factory:\n * https://github.com/Arachnid/deterministic-deployment-proxy/blob/master/source/deterministic-deployment-proxy.yul\n *\n * @internal\n * @param provider - The provider to use\n */\nasync function getCreate2FactoryAddress(provider) {\n const commonFactoryExists = await isContractDeployed(COMMON_FACTORY, provider);\n if (commonFactoryExists) {\n return COMMON_FACTORY;\n }\n const enforceEip155 = await isEIP155Enforced(provider);\n const networkId = (await provider.getNetwork()).chainId;\n const chainId = enforceEip155 ? networkId : 0;\n const deploymentInfo = CUSTOM_GAS_FOR_CHAIN[networkId] ? getCreate2FactoryDeploymentInfo(chainId, {\n gasPrice: CUSTOM_GAS_FOR_CHAIN[networkId].gasPrice,\n gasLimit: CUSTOM_GAS_FOR_CHAIN[networkId].gasLimit\n }) : getCreate2FactoryDeploymentInfo(chainId, {});\n return deploymentInfo.deployment;\n}\n\nconst bytecode = \"0x60606040526040805190810160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600481526020017f57455448000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029\";\n\n/**\n * Generate salt for deployment with Create2\n * Note: Salt component is generated by appending `tw` (thirdweb) to the bytecode\n *\n * @internal\n * @param bytecode - Creation bytecode of the contract to deploy\n */\nfunction getSaltHash(bytecode) {\n const bytecodePrefixed = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n const bytecodeHash = utils.id(bytecodePrefixed);\n const salt = `tw.${bytecodeHash}`;\n const saltHash = utils.id(salt);\n return saltHash;\n}\n\n/**\n *\n * Construct init-bytecode, packed with salthash.\n * This hex data is intended to be sent to the CREATE2 factory address\n *\n * @internal\n * @param bytecode - Creation bytecode of the contract to deploy\n * @param encodedArgs - Abi-encoded constructor params\n */\nfunction getInitBytecodeWithSalt(bytecode, encodedArgs, salt) {\n const bytecodePrefixed = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n const saltHash = salt ? utils.id(salt) : getSaltHash(bytecodePrefixed);\n const initBytecodeWithSalt = utils.solidityPack([\"bytes32\", \"bytes\", \"bytes\"], [saltHash, bytecodePrefixed, encodedArgs]);\n return initBytecodeWithSalt;\n}\n\n/**\n * Pre-compute a contract's deployment address for a CREATE2 deployment.\n *\n * @public\n * @param bytecode - Creation bytecode of the contract to deploy\n * @param encodedArgs - Abi-encoded constructor params\n * @param create2FactoryAddress - The create2 factory address to use\n */\nfunction computeDeploymentAddress(bytecode, encodedArgs, create2FactoryAddress, salt) {\n const bytecodePrefixed = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n const saltHash = salt ? utils.id(salt) : getSaltHash(bytecodePrefixed);\n\n // 1. create init bytecode hash with contract's bytecode and encoded args\n const initBytecode = utils.solidityPack([\"bytes\", \"bytes\"], [bytecodePrefixed, encodedArgs]);\n\n // 2. abi-encode pack the deployer address, salt, and bytecode hash\n const deployInfoPacked = utils.solidityPack([\"bytes1\", \"address\", \"bytes32\", \"bytes32\"], [\"0xff\", create2FactoryAddress, saltHash, utils.solidityKeccak256([\"bytes\"], [initBytecode])]);\n\n // 3. hash the packed deploy info\n const hashedDeployInfo = utils.solidityKeccak256([\"bytes\"], [deployInfoPacked]);\n\n // 4. return last 20 bytes (40 characters) of the hash -- this is the predicted address\n return `0x${hashedDeployInfo.slice(26)}`;\n}\n\n/**\n * @public\n */\nlet ChainId = /*#__PURE__*/function (ChainId) {\n ChainId[ChainId[\"Mainnet\"] = 1] = \"Mainnet\";\n ChainId[ChainId[\"Goerli\"] = 5] = \"Goerli\";\n ChainId[ChainId[\"Polygon\"] = 137] = \"Polygon\";\n ChainId[ChainId[\"Mumbai\"] = 80001] = \"Mumbai\";\n ChainId[ChainId[\"Localhost\"] = 1337] = \"Localhost\";\n ChainId[ChainId[\"Hardhat\"] = 31337] = \"Hardhat\";\n ChainId[ChainId[\"Fantom\"] = 250] = \"Fantom\";\n ChainId[ChainId[\"FantomTestnet\"] = 4002] = \"FantomTestnet\";\n ChainId[ChainId[\"Avalanche\"] = 43114] = \"Avalanche\";\n ChainId[ChainId[\"AvalancheFujiTestnet\"] = 43113] = \"AvalancheFujiTestnet\";\n ChainId[ChainId[\"Optimism\"] = 10] = \"Optimism\";\n ChainId[ChainId[\"OptimismGoerli\"] = 420] = \"OptimismGoerli\";\n ChainId[ChainId[\"Arbitrum\"] = 42161] = \"Arbitrum\";\n ChainId[ChainId[\"ArbitrumGoerli\"] = 421613] = \"ArbitrumGoerli\";\n ChainId[ChainId[\"BinanceSmartChainMainnet\"] = 56] = \"BinanceSmartChainMainnet\";\n ChainId[ChainId[\"BinanceSmartChainTestnet\"] = 97] = \"BinanceSmartChainTestnet\";\n return ChainId;\n}({});\n\n/**\n * @public\n */\nconst NATIVE_TOKEN_ADDRESS = \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\";\n\n/**\n * @public\n */\nconst NATIVE_TOKENS = {\n [ChainId.Mainnet]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Goerli]: {\n name: \"Görli Ether\",\n symbol: \"GOR\",\n decimals: 18,\n wrapped: {\n address: \"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n 11155111: {\n name: \"Sepolia Ether\",\n symbol: \"SEP\",\n decimals: 18,\n wrapped: {\n address: \"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Polygon]: {\n name: \"Matic\",\n symbol: \"MATIC\",\n decimals: 18,\n wrapped: {\n address: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\"\n }\n },\n [ChainId.Mumbai]: {\n name: \"Matic\",\n symbol: \"MATIC\",\n decimals: 18,\n wrapped: {\n address: \"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\"\n }\n },\n [ChainId.Avalanche]: {\n name: \"Avalanche\",\n symbol: \"AVAX\",\n decimals: 18,\n wrapped: {\n address: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\"\n }\n },\n [ChainId.AvalancheFujiTestnet]: {\n name: \"Avalanche\",\n symbol: \"AVAX\",\n decimals: 18,\n wrapped: {\n address: \"0xd00ae08403B9bbb9124bB305C09058E32C39A48c\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\"\n }\n },\n [ChainId.Fantom]: {\n name: \"Fantom\",\n symbol: \"FTM\",\n decimals: 18,\n wrapped: {\n address: \"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\"\n }\n },\n [ChainId.FantomTestnet]: {\n name: \"Fantom\",\n symbol: \"FTM\",\n decimals: 18,\n wrapped: {\n address: \"0xf1277d1Ed8AD466beddF92ef448A132661956621\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\"\n }\n },\n [ChainId.Arbitrum]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.ArbitrumGoerli]: {\n name: \"Arbitrum Goerli Ether\",\n symbol: \"AGOR\",\n decimals: 18,\n wrapped: {\n address: \"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Optimism]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.OptimismGoerli]: {\n name: \"Goerli Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.BinanceSmartChainMainnet]: {\n name: \"Binance Chain Native Token\",\n symbol: \"BNB\",\n decimals: 18,\n wrapped: {\n address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n name: \"Wrapped Binance Chain Token\",\n symbol: \"WBNB\"\n }\n },\n [ChainId.BinanceSmartChainTestnet]: {\n name: \"Binance Chain Native Token\",\n symbol: \"TBNB\",\n decimals: 18,\n wrapped: {\n address: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n name: \"Wrapped Binance Chain Testnet Token\",\n symbol: \"WBNB\"\n }\n },\n [ChainId.Hardhat]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x5FbDB2315678afecb367f032d93F642f64180aa3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Localhost]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x5FbDB2315678afecb367f032d93F642f64180aa3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n 84531: {\n name: \"Base Goerli Testnet\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n // eslint-disable-next-line no-useless-computed-key\n [280]: {\n name: \"zkSync Era Testnet\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n }\n};\n\n/**\n * Returns the native token for a given chain\n * @param chainId - the chain id\n * @public\n */\nfunction getNativeTokenByChainId(chainId) {\n const chain = getSupportedChains().find(c => c.chainId === chainId);\n if (chain && chain.nativeCurrency) {\n return {\n name: chain.nativeCurrency.name,\n symbol: chain.nativeCurrency.symbol,\n decimals: 18,\n wrapped: {\n address: constants.AddressZero,\n name: `Wrapped ${chain.nativeCurrency.name}`,\n symbol: `W${chain.nativeCurrency.symbol}`\n }\n };\n }\n return NATIVE_TOKENS[chainId] || {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: constants.AddressZero,\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n };\n}\nconst LINK_TOKEN_ADDRESS = {\n [ChainId.Mainnet]: \"0x514910771AF9Ca656af840dff83E8264EcF986CA\",\n [ChainId.Goerli]: \"0x326C977E6efc84E512bB9C30f76E30c160eD06FB\",\n [ChainId.BinanceSmartChainMainnet]: \"0x404460C6A5EdE2D891e8297795264fDe62ADBB75\",\n [ChainId.Polygon]: \"0xb0897686c545045aFc77CF20eC7A532E3120E0F1\",\n [ChainId.Mumbai]: \"0x326C977E6efc84E512bB9C30f76E30c160eD06FB\",\n [ChainId.Avalanche]: \"0x5947BB275c521040051D82396192181b413227A3\",\n [ChainId.AvalancheFujiTestnet]: \"0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846\",\n [ChainId.Fantom]: \"0x6F43FF82CCA38001B6699a8AC47A2d0E66939407\",\n [ChainId.FantomTestnet]: \"0xfaFedb041c0DD4fA2Dc0d87a6B0979Ee6FA7af5F\"\n};\n\n/**\n *\n * @param abi - The abi to extract constructor params from\n * @returns\n * @internal\n */\nfunction extractConstructorParamsFromAbi(abi) {\n const parsedAbi = AbiSchema.parse(abi || []);\n for (const input of parsedAbi) {\n if (input.type === \"constructor\") {\n return input.inputs || [];\n }\n }\n return [];\n}\n\nconst caches = {\n deploymentPresets: {}\n};\n\n/**\n * Returns the RoyaltyEngineV1 address for a given chain\n * @param chainId - the chain id\n * @public\n */\nfunction getRoyaltyEngineV1ByChainId(chainId) {\n return ROYALTY_ENGINE_V1_ADDRESS[chainId] || constants.AddressZero;\n}\nconst ROYALTY_ENGINE_V1_ADDRESS = {\n [ChainId.Mainnet]: \"0x0385603ab55642cb4dd5de3ae9e306809991804f\",\n [ChainId.Goerli]: \"0xEF770dFb6D5620977213f55f99bfd781D04BBE15\",\n [ChainId.BinanceSmartChainMainnet]: \"0xEF770dFb6D5620977213f55f99bfd781D04BBE15\",\n [ChainId.Polygon]: \"0x28EdFcF0Be7E86b07493466e7631a213bDe8eEF2\",\n [ChainId.Mumbai]: \"0x0a01E11887f727D1b1Cd81251eeEE9BEE4262D07\",\n [ChainId.Avalanche]: \"0xEF770dFb6D5620977213f55f99bfd781D04BBE15\",\n [ChainId.Optimism]: \"0xEF770dFb6D5620977213f55f99bfd781D04BBE15\",\n [ChainId.Arbitrum]: \"0xEF770dFb6D5620977213f55f99bfd781D04BBE15\"\n};\n\nasync function computeDeploymentInfo(contractType, provider, storage, create2Factory, contractOptions, clientId, secretKey) {\n const contractName = contractOptions && contractOptions.contractName;\n const version = contractOptions && contractOptions.version;\n let publisherAddress = contractOptions && contractOptions.publisherAddress;\n let metadata = contractOptions && contractOptions.metadata;\n invariant(contractName || metadata, \"Require contract name or metadata\");\n if (contractName && caches.deploymentPresets[contractName]) {\n return caches.deploymentPresets[contractName];\n }\n\n // Different treatment for WETH contract\n if (contractName === \"WETH9\") {\n const address = computeDeploymentAddress(bytecode, [], create2Factory);\n const contractDeployed = await isContractDeployed(address, provider);\n let initBytecodeWithSalt = \"\";\n if (!contractDeployed) {\n initBytecodeWithSalt = getInitBytecodeWithSalt(bytecode, []);\n }\n return {\n name: contractName,\n type: contractType,\n transaction: {\n predictedAddress: address,\n to: create2Factory,\n data: initBytecodeWithSalt\n }\n };\n }\n if (!metadata) {\n invariant(contractName, \"Require contract name\");\n if (!publisherAddress) {\n publisherAddress = THIRDWEB_DEPLOYER;\n }\n const publishedContract = await fetchPublishedContractFromPolygon(publisherAddress, contractName, version, storage, clientId, secretKey);\n metadata = (await fetchAndCacheDeployMetadata(publishedContract.metadataUri, storage)).compilerMetadata;\n }\n const encodedArgs = await encodeConstructorParamsForImplementation(metadata, provider, storage, create2Factory, contractOptions?.constructorParams, clientId, secretKey);\n const address = computeDeploymentAddress(metadata.bytecode, encodedArgs, create2Factory);\n const contractDeployed = await isContractDeployed(address, provider);\n let initBytecodeWithSalt = \"\";\n if (!contractDeployed) {\n initBytecodeWithSalt = getInitBytecodeWithSalt(metadata.bytecode, encodedArgs);\n }\n return {\n name: contractName,\n type: contractType,\n transaction: {\n predictedAddress: address,\n to: create2Factory,\n data: initBytecodeWithSalt\n },\n encodedArgs\n };\n}\n\n/**\n * @internal\n *\n * Determine constructor params required by an implementation contract.\n * Return abi-encoded params.\n */\nasync function encodeConstructorParamsForImplementation(compilerMetadata, provider, storage, create2Factory, constructorParamMap, clientId, secretKey) {\n const constructorParams = extractConstructorParamsFromAbi(compilerMetadata.abi);\n const constructorParamTypes = constructorParams.map(p => {\n if (p.type === \"tuple[]\" || p.type === \"tuple\") {\n return utils.ParamType.from(p);\n } else {\n return p.type;\n }\n });\n const constructorParamValues = await Promise.all(constructorParams.map(async p => {\n if (constructorParamMap && constructorParamMap[p.name]) {\n if (constructorParamMap[p.name].type) {\n invariant(constructorParamMap[p.name].type === p.type, `Provided type ${constructorParamMap[p.name].type} doesn't match the actual type ${p.type} from Abi`);\n }\n return constructorParamMap[p.name].value;\n }\n if (p.name && p.name.includes(\"nativeTokenWrapper\")) {\n return await nativeTokenInputArg(provider, storage, create2Factory, clientId, secretKey);\n } else if (p.name && p.name.includes(\"trustedForwarder\")) {\n if (compilerMetadata.name === \"Pack\") {\n // EOAForwarder for Pack\n const deploymentInfo = await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"ForwarderEOAOnly\"\n }, clientId, secretKey);\n if (!caches.deploymentPresets[\"ForwarderEOAOnly\"]) {\n caches.deploymentPresets[\"ForwarderEOAOnly\"] = deploymentInfo;\n }\n return deploymentInfo.transaction.predictedAddress;\n }\n const deploymentInfo = await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"Forwarder\"\n }, clientId, secretKey);\n if (!caches.deploymentPresets[\"Forwarder\"]) {\n caches.deploymentPresets[\"Forwarder\"] = deploymentInfo;\n }\n return deploymentInfo.transaction.predictedAddress;\n } else if (p.name && p.name.includes(\"royaltyEngineAddress\")) {\n const chainId = (await provider.getNetwork()).chainId;\n return getRoyaltyEngineV1ByChainId(chainId);\n } else if (p.name && p.name.includes(\"marketplaceV3Params\")) {\n const chainId = (await provider.getNetwork()).chainId;\n const royaltyEngineAddress = getRoyaltyEngineV1ByChainId(chainId);\n const nativeTokenWrapper = await nativeTokenInputArg(provider, storage, create2Factory, clientId, secretKey);\n const extensions = constructorParamMap ? constructorParamMap[\"_extensions\"].value : [];\n return {\n extensions: extensions,\n royaltyEngineAddress: royaltyEngineAddress,\n nativeTokenWrapper: nativeTokenWrapper\n };\n } else {\n throw new Error(\"Can't resolve constructor arguments\");\n }\n }));\n const encodedArgs = utils.defaultAbiCoder.encode(constructorParamTypes, constructorParamValues);\n return encodedArgs;\n}\nasync function nativeTokenInputArg(provider, storage, create2Factory, clientId, secretKey) {\n const chainId = (await provider.getNetwork()).chainId;\n let nativeTokenWrapperAddress = getNativeTokenByChainId(chainId).wrapped.address;\n if (nativeTokenWrapperAddress === constants.AddressZero) {\n const deploymentInfo = await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"WETH9\"\n }, clientId, secretKey);\n if (!caches.deploymentPresets[\"WETH9\"]) {\n caches.deploymentPresets[\"WETH9\"] = deploymentInfo;\n }\n nativeTokenWrapperAddress = deploymentInfo.transaction.predictedAddress;\n }\n return nativeTokenWrapperAddress;\n}\n\n/**\n *\n * @internal\n * @param provider - The provider to use\n * @param storage - The storage to use\n * @param create2Factory - The create2 factory to use\n */\nasync function computeEOAForwarderAddress(provider, storage, create2Factory, clientId, secretKey) {\n if (!create2Factory || create2Factory === \"\") {\n create2Factory = await getCreate2FactoryAddress(provider);\n }\n return (await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"ForwarderEOAOnly\"\n }, clientId, secretKey)).transaction.predictedAddress;\n}\n\n/**\n *\n * @internal\n * @param provider - The provider to use\n * @param storage - The storage to use\n * @param create2Factory - The create2 factory to use\n */\nasync function computeForwarderAddress(provider, storage, create2Factory, clientId, secretKey) {\n if (!create2Factory || create2Factory === \"\") {\n create2Factory = await getCreate2FactoryAddress(provider);\n }\n return (await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"Forwarder\"\n }, clientId, secretKey)).transaction.predictedAddress;\n}\n\n/**\n * Error that may get thrown if IPFS returns nothing for a given uri.\n * @internal\n */\nclass NotFoundError extends Error {\n /** @internal */\n constructor(identifier) {\n super(identifier ? `Object with id ${identifier} NOT FOUND` : \"NOT_FOUND\");\n }\n}\n\n/**\n * Error that may get thrown if an invalid address was passed\n * @internal\n */\nclass InvalidAddressError extends Error {\n /** @internal */\n constructor(address) {\n super(address ? `'${address}' is an invalid address` : \"Invalid address passed\");\n }\n}\n\n/**\n * @internal\n */\nclass MissingRoleError extends Error {\n /** @internal */\n /** @internal */\n constructor(address, role) {\n super(`MISSING ROLE: ${address} does not have the '${role}' role`);\n }\n}\n\n/**\n * @internal\n */\nclass AssetNotFoundError extends Error {\n /** @internal */\n /** @internal */\n constructor() {\n let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"The asset you're trying to use could not be found.\";\n super(`message: ${message}`);\n }\n}\n\n/**\n * @internal\n */\nclass UploadError extends Error {\n /** @internal */\n constructor(message) {\n super(`UPLOAD_FAILED: ${message}`);\n }\n}\n\n/**\n * @internal\n */\nclass FileNameMissingError extends Error {\n /** @internal */\n constructor() {\n super(\"File name is required when object is not a `File` type object.\");\n }\n}\n\n/**\n * @internal\n */\nclass DuplicateFileNameError extends Error {\n /** @internal */\n constructor(fileName) {\n super(`DUPLICATE_FILE_NAME_ERROR: File name ${fileName} was passed for more than one file.`);\n }\n}\n\n/**\n * @internal\n */\nclass NotEnoughTokensError extends Error {\n /** @internal */\n constructor(contractAddress, quantity, available) {\n super(`BALANCE ERROR: you do not have enough balance on contract ${contractAddress} to use ${quantity} tokens. You have ${available} tokens available.`);\n }\n}\n\n/**\n * @internal\n */\nclass MissingOwnerRoleError extends Error {\n /** @internal */\n constructor() {\n super(`LIST ERROR: you should be the owner of the token to list it.`);\n }\n}\n\n/**\n * @internal\n */\nclass QuantityAboveLimitError extends Error {\n /** @internal */\n constructor(quantity) {\n super(`BUY ERROR: You cannot buy more than ${quantity} tokens`);\n }\n}\n\n/**\n * Thrown when data fails to fetch from storage.\n * @internal\n */\nclass FetchError extends Error {\n /** @internal */\n constructor(message, innerError) {\n super(`FETCH_FAILED: ${message}`);\n this.innerError = innerError;\n }\n}\n\n/**\n * Thrown when attempting to create a snapshot with duplicate leafs\n * @internal\n */\nclass DuplicateLeafsError extends Error {\n constructor(message) {\n super(`DUPLICATE_LEAFS${message ? ` : ${message}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to update/cancel an auction that already started\n * @internal\n */\nclass AuctionAlreadyStartedError extends Error {\n constructor(id) {\n super(`Auction already started with existing bid${id ? `, id: ${id}` : \"\"}`);\n }\n}\n\n/**\n * @internal\n */\nclass FunctionDeprecatedError extends Error {\n /** @internal */\n constructor(message) {\n super(`FUNCTION DEPRECATED. ${message ? `Use ${message} instead` : \"\"}`);\n }\n}\n\n/**\n * Thrown when trying to retrieve a listing from a marketplace that doesn't exist\n * @internal\n */\nclass ListingNotFoundError extends Error {\n constructor(marketplaceContractAddress, listingId) {\n super(`Could not find listing.${marketplaceContractAddress ? ` marketplace address: ${marketplaceContractAddress}` : \"\"}${listingId ? ` listing id: ${listingId}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when trying to retrieve a listing of the wrong type\n * @internal\n */\nclass WrongListingTypeError extends Error {\n constructor(marketplaceContractAddress, listingId, actualType, expectedType) {\n super(`Incorrect listing type. Are you sure you're using the right method?.${marketplaceContractAddress ? ` marketplace address: ${marketplaceContractAddress}` : \"\"}${listingId ? ` listing id: ${listingId}` : \"\"}${expectedType ? ` expected type: ${expectedType}` : \"\"}${actualType ? ` actual type: ${actualType}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to transfer an asset that has restricted transferability\n * @internal\n */\nclass RestrictedTransferError extends Error {\n constructor(assetAddress) {\n super(`Failed to transfer asset, transfer is restricted.${assetAddress ? ` Address : ${assetAddress}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to execute an admin-role function.\n * @internal\n */\nclass AdminRoleMissingError extends Error {\n constructor(address, contractAddress) {\n let message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"Failed to execute transaction\";\n super(`${message}, admin role is missing${address ? ` on address: ${address}` : \"\"}${contractAddress ? ` on contract: ${contractAddress}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to close an auction that has not ended\n * @internal\n */\nclass AuctionHasNotEndedError extends Error {\n constructor(id, endTime) {\n super(`Auction has not ended yet${id ? `, id: ${id}` : \"\"}${endTime ? `, end time: ${endTime.toString()}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to call a contract function that is not implemented\n * @internal\n */\nclass ExtensionNotImplementedError extends Error {\n constructor(feature) {\n super(`This functionality is not available because the contract does not implement the '${feature.name}' Extension. Learn how to unlock this functionality at https://portal.thirdweb.com/extensions `);\n }\n}\n\n/**\n * @internal\n */\n\n/**\n * @public\n */\nclass TransactionError extends Error {\n #reason;\n #info;\n #raw;\n constructor(info, raw) {\n let errorMessage = `\\n\\n\\n╔═══════════════════╗\\n║ TRANSACTION ERROR ║\\n╚═══════════════════╝\\n\\n`;\n errorMessage += `Reason: ${info.reason}`;\n errorMessage += `\\n\\n\\n╔═════════════════════════╗\\n║ TRANSACTION INFORMATION ║\\n╚═════════════════════════╝\\n`;\n errorMessage += withSpaces(\"from\", info.from);\n if (info.to) {\n errorMessage += withSpaces(\"to\", info.contractName ? `${info.to} (${info.contractName})` : info.to);\n }\n errorMessage += withSpaces(`chain`, `${info.network.name} (${info.network.chainId})`);\n if (info.rpcUrl) {\n try {\n const url = new URL(info.rpcUrl);\n errorMessage += withSpaces(`rpc`, url.hostname);\n } catch (e2) {\n // ignore if can't parse URL\n }\n }\n if (info.hash) {\n errorMessage += withSpaces(`tx hash`, info.hash);\n }\n if (info.value && info.value.gt(0)) {\n errorMessage += withSpaces(\"value\", `${utils.formatEther(info.value)} ${NATIVE_TOKENS[info.network.chainId]?.symbol || \"\"}`);\n }\n errorMessage += withSpaces(`data`, `${info.data}`);\n if (info.method) {\n errorMessage += withSpaces(\"method\", info.method);\n }\n if (info.sources) {\n const revertFile = info.sources.find(file => file.source.includes(info.reason));\n if (revertFile) {\n const lines = revertFile.source.split(\"\\n\").map((line, index) => `${index + 1} ${line}`);\n const revertLine = lines.findIndex(line => line.includes(info.reason));\n lines[revertLine] += \" <-- REVERT\";\n const errorLines = lines.slice(revertLine - 8, revertLine + 4);\n errorMessage += `\\n\\n\\n╔══════════════════════╗\\n║ SOLIDITY STACK TRACE ║\\n╚══════════════════════╝\\n\\n`;\n errorMessage += `File: ${revertFile.filename.replace(\"node_modules/\", \"\")}\\n\\n`;\n errorMessage += errorLines.join(\"\\n\");\n }\n }\n errorMessage += `\\n\\n\\n╔═════════════════════╗\\n║ DEBUGGING RESOURCES ║\\n╚═════════════════════╝\\n\\n`;\n errorMessage += `Need helping debugging? Join our Discord: https://discord.gg/thirdweb`;\n errorMessage += `\\n\\n`;\n super(errorMessage);\n this.#reason = info.reason;\n this.#info = info;\n this.#raw = raw;\n }\n\n // Keep reason here for backwards compatibility\n get reason() {\n return this.#reason;\n }\n get raw() {\n return this.#raw;\n }\n get info() {\n return this.#info;\n }\n}\n\n/**\n * @internal\n */\nfunction parseRevertReason(error) {\n if (error.reason && !error.reason.includes(\"cannot estimate gas\")) {\n return error.reason;\n }\n if (error.error) {\n return error.error;\n }\n\n // I think this code path should never be hit, but just in case\n\n let errorString = error;\n if (typeof error === \"object\") {\n // MetaMask errors come as objects so parse them first\n errorString = JSON.stringify(error);\n } else if (typeof error !== \"string\") {\n errorString = error.toString();\n }\n return parseMessageParts(/.*?\"message\":\"([^\"\\\\]*).*?/, errorString) || parseMessageParts(/.*?\"reason\":\"([^\"\\\\]*).*?/, errorString) || error.message || \"\";\n}\nfunction withSpaces(label, content) {\n if (content === \"\") {\n return content;\n }\n const spaces = Array(10 - label.length).fill(\" \").join(\"\");\n if (content.includes(\"\\n\")) {\n content = \"\\n\\n \" + content.split(\"\\n\").join(`\\n `);\n } else {\n content = `${spaces}${content}`;\n }\n return `\\n${label}:${content}`;\n}\nfunction parseMessageParts(regex, raw) {\n const msgMatches = raw.match(regex) || [];\n let extracted = \"\";\n if (msgMatches?.length > 0) {\n extracted += msgMatches[1];\n }\n return extracted;\n}\n\n/**\n * @internal\n * @param err - The error to check\n * @param message - The message to check for\n */\nfunction includesErrorMessage(err, message) {\n if (!err) {\n return false;\n }\n return err && err.toString().includes(message) || err && err.message && err.message.toString().includes(message) || err && err.error && err.error.toString().includes(message);\n}\n\n/**\n * @internal\n * @param publishedMetadata - The published metadata to fetch the sources for\n * @param storage - The storage to use\n */\n\nasync function fetchSourceFilesFromMetadata(publishedMetadata, storage) {\n return await Promise.all(Object.entries(publishedMetadata.metadata.sources).map(async _ref => {\n let [path, info] = _ref;\n const urls = info.urls;\n const ipfsLink = urls ? urls.find(url => url.includes(\"ipfs\")) : undefined;\n if (ipfsLink) {\n const ipfsHash = ipfsLink.split(\"ipfs/\")[1];\n // 3 sec timeout for sources that haven't been uploaded to ipfs\n const timeout = new Promise((_r, rej) => setTimeout(() => rej(\"timeout\"), 3000));\n const source = await Promise.race([(await storage.download(`ipfs://${ipfsHash}`)).text(), timeout]);\n return {\n filename: path,\n source\n };\n } else {\n return {\n filename: path,\n source: info.content || \"Could not find source for this contract\"\n };\n }\n }));\n}\n\n/**\n * @internal\n */\nconst ForwardRequest = [{\n name: \"from\",\n type: \"address\"\n}, {\n name: \"to\",\n type: \"address\"\n}, {\n name: \"value\",\n type: \"uint256\"\n}, {\n name: \"gas\",\n type: \"uint256\"\n}, {\n name: \"nonce\",\n type: \"uint256\"\n}, {\n name: \"data\",\n type: \"bytes\"\n}];\nconst ChainAwareForwardRequest = [{\n name: \"from\",\n type: \"address\"\n}, {\n name: \"to\",\n type: \"address\"\n}, {\n name: \"value\",\n type: \"uint256\"\n}, {\n name: \"gas\",\n type: \"uint256\"\n}, {\n name: \"nonce\",\n type: \"uint256\"\n}, {\n name: \"data\",\n type: \"bytes\"\n}, {\n name: \"chainid\",\n type: \"uint256\"\n}];\n\n/**\n * @internal\n */\nconst BiconomyForwarderAbi = [{\n inputs: [{\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n }, {\n internalType: \"uint256\",\n name: \"batchId\",\n type: \"uint256\"\n }],\n name: \"getNonce\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst _nonces = {};\nconst _noncesSyncTimestamp = {};\n\n/**\n * @internal\n */\nasync function getAndIncrementNonce(forwarder, forwarderFunction, forwarderArgs) {\n // address is only used for internal caching :)\n const address = forwarderArgs.join(\"|\");\n const timestamp = _noncesSyncTimestamp[address];\n // if it's within 2 seconds we're optimistically increment the nonce\n // should we always sync?\n const shouldSync = Date.now() - timestamp >= 2000;\n if (!(address in _nonces) || shouldSync) {\n const nonceResult = await forwarder.functions[forwarderFunction](...forwarderArgs);\n if (Array.isArray(nonceResult) && nonceResult.length > 0) {\n _nonces[address] = BigNumber.from(nonceResult[0]);\n } else {\n _nonces[address] = BigNumber.from(nonceResult);\n }\n _noncesSyncTimestamp[address] = Date.now();\n }\n const nonce = _nonces[address];\n _nonces[address] = BigNumber.from(_nonces[address]).add(1);\n return nonce;\n}\n\nasync function getDefaultGasOverrides(provider) {\n // If we're running in the browser, let users configure gas price in their wallet UI\n if (isBrowser()) {\n return {};\n }\n\n // handle smart wallet provider\n if (provider.originalProvider) {\n provider = provider.originalProvider;\n }\n const feeData = await getDynamicFeeData(provider);\n if (feeData.maxFeePerGas && feeData.maxPriorityFeePerGas) {\n return {\n maxFeePerGas: feeData.maxFeePerGas,\n maxPriorityFeePerGas: feeData.maxPriorityFeePerGas\n };\n } else {\n return {\n gasPrice: await getGasPrice(provider)\n };\n }\n}\nasync function getDynamicFeeData(provider) {\n let maxFeePerGas = null;\n let maxPriorityFeePerGas = null;\n const [{\n chainId\n }, block, eth_maxPriorityFeePerGas] = await Promise.all([provider.getNetwork(), provider.getBlock(\"latest\"), provider.send(\"eth_maxPriorityFeePerGas\", []).catch(() => null)]);\n const baseBlockFee = block && block.baseFeePerGas ? block.baseFeePerGas : utils.parseUnits(\"100\", \"wei\");\n if (chainId === Mumbai.chainId || chainId === Polygon.chainId) {\n // for polygon, get fee data from gas station\n maxPriorityFeePerGas = await getPolygonGasPriorityFee(chainId);\n } else if (eth_maxPriorityFeePerGas) {\n // prioritize fee from eth_maxPriorityFeePerGas\n maxPriorityFeePerGas = BigNumber.from(eth_maxPriorityFeePerGas);\n } else {\n // if eth_maxPriorityFeePerGas is not available, use 1.5 gwei default\n const feeData = await provider.getFeeData();\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n if (!maxPriorityFeePerGas) {\n // chain does not support eip-1559, return null for both\n return {\n maxFeePerGas: null,\n maxPriorityFeePerGas: null,\n baseFee: null\n };\n }\n }\n\n // add 10% tip to maxPriorityFeePerGas for faster processing\n maxPriorityFeePerGas = getPreferredPriorityFee(maxPriorityFeePerGas);\n // eip-1559 formula, doubling the base fee ensures that the tx can be included in the next 6 blocks no matter how busy the network is\n // good article on the subject: https://www.blocknative.com/blog/eip-1559-fees\n maxFeePerGas = baseBlockFee.mul(2).add(maxPriorityFeePerGas);\n return {\n maxFeePerGas,\n maxPriorityFeePerGas,\n baseFee: baseBlockFee\n };\n}\nfunction getPreferredPriorityFee(defaultPriorityFeePerGas) {\n let percentMultiplier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n const extraTip = defaultPriorityFeePerGas.div(100).mul(percentMultiplier); // + 10%\n const totalPriorityFee = defaultPriorityFeePerGas.add(extraTip);\n return totalPriorityFee;\n}\nasync function getGasPrice(provider) {\n const gasPrice = await provider.getGasPrice();\n const maxGasPrice = utils.parseUnits(\"300\", \"gwei\"); // 300 gwei\n const extraTip = gasPrice.div(100).mul(10); // + 10%\n const txGasPrice = gasPrice.add(extraTip);\n if (txGasPrice.gt(maxGasPrice)) {\n return maxGasPrice;\n }\n return txGasPrice;\n}\n\n/**\n * @internal\n */\nfunction getGasStationUrl(chainId) {\n switch (chainId) {\n case ChainId.Polygon:\n return \"https://gasstation.polygon.technology/v2\";\n case ChainId.Mumbai:\n return \"https://gasstation-testnet.polygon.technology/v2\";\n }\n}\nconst MIN_POLYGON_GAS_PRICE = /* @__PURE__ */(() => utils.parseUnits(\"31\", \"gwei\"))();\nconst MIN_MUMBAI_GAS_PRICE = /* @__PURE__ */(() => utils.parseUnits(\"1\", \"gwei\"))();\n\n/**\n * @internal\n */\nfunction getDefaultGasFee(chainId) {\n switch (chainId) {\n case ChainId.Polygon:\n return MIN_POLYGON_GAS_PRICE;\n case ChainId.Mumbai:\n return MIN_MUMBAI_GAS_PRICE;\n }\n}\n\n/**\n *\n * @returns the gas price\n * @internal\n */\nasync function getPolygonGasPriorityFee(chainId) {\n const gasStationUrl = getGasStationUrl(chainId);\n try {\n const data = await (await fetch(gasStationUrl)).json();\n // take the standard speed here, SDK options will define the extra tip\n const priorityFee = data[\"fast\"][\"maxPriorityFee\"];\n if (priorityFee > 0) {\n const fixedFee = parseFloat(priorityFee).toFixed(9);\n return utils.parseUnits(fixedFee, \"gwei\");\n }\n } catch (e) {\n console.error(\"failed to fetch gas\", e);\n }\n return getDefaultGasFee(chainId);\n}\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\n\n/**\n * eip712 sign typed data with different wallet handling including ledger live\n * @internal\n */\nasync function signTypedDataInternal(signerInput, domain, types, message) {\n // Handle ERC4337Signer\n let signer = signerInput;\n if (signerInput.originalSigner) {\n signer = signerInput.originalSigner;\n }\n const provider = signer?.provider;\n if (!provider) {\n throw new Error(\"missing provider\");\n }\n const payload = utils._TypedDataEncoder.getPayload(domain, types, message);\n let signature = \"\";\n const signerAddress = (await signer.getAddress()).toLowerCase();\n\n // an indirect way for accessing walletconnect's underlying provider\n if (provider?.provider?.isWalletConnect) {\n signature = await provider.send(\"eth_signTypedData\", [signerAddress, JSON.stringify(payload)]);\n } else {\n try {\n signature = await signer._signTypedData(domain, types, message);\n } catch (err) {\n if (err?.message?.includes(\"eth_signTypedData_v4\")) {\n signature = await provider.send(\"eth_signTypedData\", [signerAddress, JSON.stringify(payload)]);\n } else {\n // magic.link signer only supports this way\n try {\n await provider.send(\"eth_signTypedData_v4\", [signerAddress, JSON.stringify(payload)]);\n } catch (finalErr) {\n throw finalErr;\n }\n }\n }\n }\n\n // fix ledger live where signature result in v = 0, 1. ethers magically fix it in split/join.\n return {\n payload,\n signature: utils.joinSignature(utils.splitSignature(signature))\n };\n}\n\nconst NAME_ABI = [{\n inputs: [],\n name: \"name\",\n outputs: [{\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst DOMAIN_SEPARATOR_ABI = [{\n constant: true,\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\"\n }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [],\n name: \"getDomainSeperator\",\n outputs: [{\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst NONCES_ABI = [{\n inputs: [{\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }],\n name: \"nonces\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"user\",\n type: \"address\"\n }],\n name: \"getNonce\",\n outputs: [{\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nasync function getSignerNonce(signer, contractAddress) {\n const contract = new Contract(contractAddress, NONCES_ABI, signer);\n try {\n return await contract.nonces(await signer.getAddress());\n } catch (err) {\n return await contract.getNonce(await signer.getAddress());\n }\n}\nasync function getDomainSeperator(signer, contractAddress) {\n const contract = new Contract(contractAddress, DOMAIN_SEPARATOR_ABI, signer);\n try {\n return await contract.DOMAIN_SEPARATOR();\n } catch (err) {\n try {\n return await contract.getDomainSeperator();\n } catch (err2) {\n console.error(\"Error getting domain separator\", err2);\n }\n }\n}\nasync function getTokenName(signer, contractAddress) {\n return new Contract(contractAddress, NAME_ABI, signer).name();\n}\n\n/**\n * Polygon chain has different EIP712 domain separator for USDC, DAI compared to other chains and slightly different than EIP-2612.\n */\nasync function getChainDomainSeperator(signer, domain) {\n const contractDomainSeparator = await getDomainSeperator(signer, domain.verifyingContract);\n const polygonDomain = {\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n salt: utils.hexZeroPad(BigNumber.from(domain.chainId).toHexString(), 32)\n };\n if (utils._TypedDataEncoder.hashDomain(polygonDomain) === contractDomainSeparator) {\n return polygonDomain;\n }\n return domain;\n}\n\n/**\n * @internal\n */\nasync function signEIP2612Permit(signer, currencyAddress, owner, spender, value, deadline, nonce) {\n const [name, chainId, signerNonce] = await Promise.all([getTokenName(signer, currencyAddress), signer.getChainId(), getSignerNonce(signer, currencyAddress)]);\n const domain = await getChainDomainSeperator(signer, {\n name,\n version: \"1\",\n chainId,\n verifyingContract: currencyAddress\n });\n nonce = nonce || signerNonce.toString();\n deadline = deadline || constants.MaxUint256;\n const message = {\n owner,\n spender,\n value,\n nonce,\n deadline\n };\n const types = {\n Permit: [{\n name: \"owner\",\n type: \"address\"\n }, {\n name: \"spender\",\n type: \"address\"\n }, {\n name: \"value\",\n type: \"uint256\"\n }, {\n name: \"nonce\",\n type: \"uint256\"\n }, {\n name: \"deadline\",\n type: \"uint256\"\n }]\n };\n const {\n signature\n } = await signTypedDataInternal(signer, domain, types, message);\n return {\n message,\n signature\n };\n}\n\nconst AddressZero = \"0x0000000000000000000000000000000000000000\";\n\nconst TWRegistry_address = \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\";\nconst TWFactory_address = \"0x5DBC7B840baa9daBcBe9D2492E45D7244B54A2A0\";\n\n/**\n * @internal\n */\nconst OZ_DEFENDER_FORWARDER_ADDRESS = \"0xc82BbE41f2cF04e3a8efA18F7032BDD7f6d98a81\";\n\n/**\n * @internal\n */\nconst CONTRACT_ADDRESSES = {\n [ChainId.Mainnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x76ce2CB1Ae48Fa067f4fb8c5f803111AE0B24BEA\",\n biconomyForwarder: \"0x84a0856b038eaAd1cC7E297cF34A7e72685A8693\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.Goerli]: {\n openzeppelinForwarder: \"0x5001A14CA6163143316a7C614e30e6041033Ac20\",\n openzeppelinForwarderEOA: \"0xe73c50cB9c5B378627ff625BB6e6725A4A5D65d2\",\n biconomyForwarder: \"0xE041608922d06a4F26C0d4c27d8bCD01daf1f792\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0xB1Bd9d7942A250BA2Dce27DD601F2ED4211A60C4\"\n },\n [ChainId.Polygon]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x4f247c69184ad61036EC2Bb3213b69F10FbEDe1F\",\n biconomyForwarder: \"0x86C80a8aa58e0A4fa09A69624c31Ab2a6CAD56b8\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x308473Be900F4185A56587dE54bDFF5E8f7a6AE7\"\n },\n [ChainId.Mumbai]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x9399BB24DBB5C4b782C70c2969F58716Ebbd6a3b\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3F17972CB27506eb4a6a3D59659e0B57a43fd16C\"\n },\n [ChainId.Avalanche]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x64CD353384109423a966dCd3Aa30D884C9b2E057\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.AvalancheFujiTestnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xe73c50cB9c5B378627ff625BB6e6725A4A5D65d2\",\n biconomyForwarder: \"0x6271Ca63D30507f2Dcbf99B52787032506D75BBF\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3E6eE864f850F5e5A98bc950B68E181Cf4010F23\"\n },\n [ChainId.Fantom]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x64CD353384109423a966dCd3Aa30D884C9b2E057\",\n twFactory: \"0x97EA0Fcc552D5A8Fb5e9101316AAd0D62Ea0876B\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.FantomTestnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x42D3048b595B6e1c28a588d70366CcC2AA4dB47b\",\n biconomyForwarder: \"0x69FB8Dca8067A5D38703b9e8b39cf2D51473E4b4\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3E6eE864f850F5e5A98bc950B68E181Cf4010F23\"\n },\n [ChainId.Arbitrum]: {\n openzeppelinForwarder: \"0x4a8AC7f22DeD2CF923A51e4A1c67490bd8868add\",\n openzeppelinForwarderEOA: \"0x4f247c69184ad61036EC2Bb3213b69F10FbEDe1F\",\n biconomyForwarder: \"0xfe0fa3C06d03bDC7fb49c892BbB39113B534fB57\",\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.ArbitrumGoerli]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x119704314Ef304EaAAE4b3c7C9ABd59272A28310\",\n biconomyForwarder: AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.Optimism]: {\n openzeppelinForwarder: \"0xd85da690EF288A6976DE0E85Fb2Aad512eBAfbf7\",\n openzeppelinForwarderEOA: \"0x7e80648EB2071E26937F9D42A513ccf4815fc702\",\n biconomyForwarder: \"0xefba8a2a82ec1fb1273806174f5e28fbb917cf95\",\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.OptimismGoerli]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x119704314Ef304EaAAE4b3c7C9ABd59272A28310\",\n biconomyForwarder: AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: AddressZero\n },\n [ChainId.BinanceSmartChainMainnet]: {\n openzeppelinForwarder: \"0x7C4717039B89d5859c4Fbb85EDB19A6E2ce61171\",\n openzeppelinForwarderEOA: \"0xE8dd2Ff0212F86d3197b4AfDC6dAC6ac47eb10aC\",\n biconomyForwarder: \"0x86C80a8aa58e0A4fa09A69624c31Ab2a6CAD56b8\",\n twBYOCRegistry: AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address\n },\n [ChainId.BinanceSmartChainTestnet]: {\n openzeppelinForwarder: \"0x44bE9D54B9C8b5e57a3325E8Ec9154640e7c6955\",\n openzeppelinForwarderEOA: \"0x7e80648EB2071E26937F9D42A513ccf4815fc702\",\n biconomyForwarder: \"0x61456BF1715C1415730076BB79ae118E806E74d2\",\n twBYOCRegistry: AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: TWRegistry_address\n },\n [ChainId.Hardhat]: {\n openzeppelinForwarder: AddressZero,\n openzeppelinForwarderEOA: AddressZero,\n biconomyForwarder: AddressZero,\n twFactory: AddressZero,\n twRegistry: AddressZero,\n twBYOCRegistry: AddressZero\n },\n [ChainId.Localhost]: {\n openzeppelinForwarder: AddressZero,\n openzeppelinForwarderEOA: AddressZero,\n biconomyForwarder: AddressZero,\n twFactory: AddressZero,\n twRegistry: AddressZero,\n twBYOCRegistry: AddressZero\n }\n};\n\n/**\n * @internal\n */\nfunction getContractAddressByChainId(chainId, contractName) {\n // for testing only\n if (chainId === ChainId.Hardhat || chainId === ChainId.Localhost) {\n if (contractName === \"twFactory\") {\n return getProcessEnv(\"factoryAddress\");\n } else if (contractName === \"twRegistry\") {\n return getProcessEnv(\"registryAddress\");\n } else {\n return AddressZero;\n }\n }\n // real output here\n return CONTRACT_ADDRESSES[chainId]?.[contractName];\n}\n\n/**\n * @public\n */\nlet EventType = /*#__PURE__*/function (EventType) {\n EventType[\"Transaction\"] = \"transaction\";\n EventType[\"Signature\"] = \"signature\";\n return EventType;\n}({});\n\nconst CallOverrideSchema = /* @__PURE__ */(() => z.object({\n gasLimit: BigNumberishSchema.optional(),\n gasPrice: BigNumberishSchema.optional(),\n maxFeePerGas: BigNumberishSchema.optional(),\n maxPriorityFeePerGas: BigNumberishSchema.optional(),\n nonce: BigNumberishSchema.optional(),\n value: BigNumberishSchema.optional(),\n blockTag: z.union([z.string(), z.number()]).optional(),\n from: AddressOrEnsSchema.optional(),\n type: z.number().optional()\n}).strict())();\n\n/**\n * @internal\n */\nclass RPCConnectionHandler extends EventEmitter {\n constructor(network, options) {\n super();\n try {\n this.options = SDKOptionsSchema.parse(options);\n } catch (optionParseError) {\n console.error(\"invalid sdk options object passed, falling back to default options\", optionParseError);\n this.options = SDKOptionsSchema.parse({});\n }\n const [signer, provider] = getSignerAndProvider(network, this.options);\n this.network = network;\n this.signer = signer;\n this.provider = provider;\n }\n /**\n * The function to call whenever the network changes, such as when the users connects their wallet, disconnects their wallet, the connected chain changes, etc.\n *\n * @param network - a network, signer or provider that ethers js can interpret\n */\n updateSignerOrProvider(network) {\n const [signer, provider] = getSignerAndProvider(network, this.options);\n this.network = network;\n this.signer = signer;\n this.provider = provider;\n }\n /**\n *\n * @returns whether or not a signer is set, `true` if there is no signer so the class is in \"read only\" mode\n */\n isReadOnly() {\n return !isSigner(this.signer);\n }\n\n /**\n * Explicitly get the active signer.\n * @returns the active signer, if there is one\n */\n getSigner() {\n return this.signer;\n }\n\n /**\n * Explicitly get the active provider.\n * @returns the active provider\n */\n getProvider() {\n return this.provider;\n }\n\n /**\n *\n * @returns the current signer if there is one, otherwise the active provider\n */\n getSignerOrProvider() {\n return this.getSigner() || this.getProvider();\n }\n}\n\n/**\n * @internal\n */\nclass ContractWrapper extends RPCConnectionHandler {\n isValidContract = false;\n customOverrides = () => ({});\n /**\n * @internal\n */\n\n constructor(network, contractAddress, contractAbi, options, storage) {\n super(network, options);\n this.abi = contractAbi;\n this.address = contractAddress;\n // set up the contract\n this.writeContract = new Contract(contractAddress, contractAbi, this.getSignerOrProvider());\n // setup the read only contract\n this.readContract = this.writeContract.connect(this.getProvider());\n this.storage = storage;\n }\n updateSignerOrProvider(network) {\n // update the underlying base class\n super.updateSignerOrProvider(network);\n // re-connect the contract with the new signer / provider\n this.writeContract = this.writeContract.connect(this.getSignerOrProvider());\n // setup the read only contract\n this.readContract = this.writeContract.connect(this.getProvider());\n }\n updateAbi(updatedAbi) {\n // re-connect the contract with the new signer / provider\n this.writeContract = new Contract(this.address, updatedAbi, this.getSignerOrProvider());\n\n // setup the read only contract\n this.readContract = this.writeContract.connect(this.getProvider());\n this.abi = AbiSchema.parse(updatedAbi);\n }\n\n /**\n * @internal\n */\n async getChainID() {\n const provider = this.getProvider();\n const {\n chainId\n } = await provider.getNetwork();\n return chainId;\n }\n /**\n * @internal\n */\n async getSignerAddress() {\n const signer = this.getSigner();\n if (!signer) {\n throw new Error(\"This action requires a connected wallet to sign the transaction. Please pass a valid signer to the SDK.\");\n }\n return await signer.getAddress();\n }\n\n /**\n * @internal\n */\n callStatic() {\n return this.writeContract.callStatic;\n }\n\n /**\n * @internal\n */\n async getCallOverrides() {\n return getDefaultGasOverrides(this.getProvider());\n }\n\n /**\n * @internal\n */\n emitTransactionEvent(status, transactionHash) {\n this.emit(EventType.Transaction, {\n status,\n transactionHash\n });\n }\n\n /**\n * @internal\n */\n async multiCall(encoded) {\n return this.sendTransaction(\"multicall\", [encoded]);\n }\n\n /**\n * @internal\n */\n async estimateGas(fn, args) {\n return this.writeContract.estimateGas[fn](...args);\n }\n\n /**\n * @internal\n */\n withTransactionOverride(hook) {\n this.customOverrides = hook;\n }\n\n /**\n *\n * @param functionName - The function name on the contract to call\n * @param args - The arguments to be passed to the functionName\n * @returns The return value of the function call\n */\n async read(functionName, args) {\n const functions = extractFunctionsFromAbi(AbiSchema.parse(this.abi)).filter(f => f.name === functionName);\n if (!functions.length) {\n throw new Error(`Function \"${functionName.toString()}\" not found in contract. Check your dashboard for the list of functions available`);\n }\n const fn = functions.find(f => f.name === functionName && f.inputs.length === args.length);\n\n // TODO extract this and re-use for deploy function to check constructor args\n if (!fn) {\n throw new Error(`Function \"${functionName.toString()}\" requires ${functions[0].inputs.length} arguments, but ${args.length} were provided.\\nExpected function signature: ${functions[0].signature}`);\n }\n const ethersFnName = `${functionName.toString()}(${fn.inputs.map(i => i.type).join()})`;\n\n // check if the function exists on the contract, otherwise use the name passed in\n const fnName = ethersFnName in this.readContract.functions ? ethersFnName : functionName;\n if (fn.stateMutability === \"view\" || fn.stateMutability === \"pure\") {\n // read function\n const result = await this.readContract[fnName.toString()](...args);\n return result;\n }\n throw new Error(\"Cannot call a write function with read()\");\n }\n\n /**\n * @internal\n */\n async call(functionName) {\n let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let overrides = arguments.length > 2 ? arguments[2] : undefined;\n // parse last arg as tx options if present\n const txOptions = overrides ? await CallOverrideSchema.parseAsync(overrides) : undefined;\n const functions = extractFunctionsFromAbi(AbiSchema.parse(this.abi)).filter(f => f.name === functionName);\n if (!functions.length) {\n throw new Error(`Function \"${functionName}\" not found in contract. Check your dashboard for the list of functions available`);\n }\n const fn = functions.find(f => f.name === functionName && f.inputs.length === args.length);\n\n // TODO extract this and re-use for deploy function to check constructor args\n if (!fn) {\n throw new Error(`Function \"${functionName}\" requires ${functions[0].inputs.length} arguments, but ${args.length} were provided.\\nExpected function signature: ${functions[0].signature}`);\n }\n const ethersFnName = `${functionName}(${fn.inputs.map(i => i.type).join()})`;\n\n // check if the function exists on the contract, otherwise use the name passed in\n const fnName = ethersFnName in this.readContract.functions ? ethersFnName : functionName;\n\n // TODO validate each argument\n if (fn.stateMutability === \"view\" || fn.stateMutability === \"pure\") {\n // read function\n return txOptions ? this.readContract[fnName](...args, txOptions) : this.readContract[fnName](...args);\n } else {\n // write function\n const receipt = await this.sendTransaction(fnName, args, txOptions);\n return {\n receipt\n };\n }\n }\n\n /**\n * @internal\n */\n async sendTransaction(\n // eslint-disable-next-line @typescript-eslint/ban-types\n fn, args, callOverrides) {\n if (!callOverrides) {\n callOverrides = await this.getCallOverrides();\n }\n // if a custom override is set, merge our override with the custom one\n callOverrides = {\n ...callOverrides,\n ...this.customOverrides()\n };\n // clear up the override (single use)\n this.customOverrides = () => ({});\n if (this.options?.gasless && (\"openzeppelin\" in this.options.gasless || \"biconomy\" in this.options.gasless || \"engine\" in this.options.gasless)) {\n if (fn === \"multicall\" && Array.isArray(args[0]) && args[0].length > 0) {\n const from = await this.getSignerAddress();\n args[0] = args[0].map(tx => utils.solidityPack([\"bytes\", \"address\"], [tx, from]));\n }\n const provider = this.getProvider();\n const txHash = await this.sendGaslessTransaction(fn, args, callOverrides);\n this.emitTransactionEvent(\"submitted\", txHash);\n const receipt = await provider.waitForTransaction(txHash);\n this.emitTransactionEvent(\"completed\", txHash);\n return receipt;\n } else {\n // one time verification that this is a valid contract (to avoid sending funds to wrong addresses)\n if (!this.isValidContract) {\n const code = await this.getProvider().getCode(this.address);\n this.isValidContract = code !== \"0x\";\n if (!this.isValidContract) {\n throw new Error(\"The address you're trying to send a transaction to is not a smart contract. Make sure you are on the correct network and the contract address is correct\");\n }\n }\n const tx = await this.sendTransactionByFunction(fn, args, callOverrides);\n this.emitTransactionEvent(\"submitted\", tx.hash);\n\n // tx.wait() can fail so we need to wrap it with a catch\n let receipt;\n try {\n receipt = await tx.wait();\n } catch (err) {\n try {\n // If tx.wait() fails, it just gives us a generic \"transaction failed\"\n // error. So instead, we need to call static to get an informative error message\n await this.writeContract.callStatic[fn](...args, ...(callOverrides.value ? [{\n value: callOverrides.value\n }] : []));\n } catch (staticErr) {\n throw await this.formatError(staticErr, fn, args, callOverrides);\n }\n throw await this.formatError(err, fn, args, callOverrides);\n }\n this.emitTransactionEvent(\"completed\", tx.hash);\n return receipt;\n }\n }\n\n /**\n * @internal\n */\n async sendTransactionByFunction(fn, args, callOverrides) {\n const func = this.writeContract.functions[fn];\n if (!func) {\n throw new Error(`invalid function: \"${fn.toString()}\"`);\n }\n\n // First, if no gasLimit is passed, call estimate gas ourselves\n if (!callOverrides.gasLimit) {\n try {\n callOverrides.gasLimit = await this.writeContract.estimateGas[fn](...args, callOverrides);\n } catch (e) {\n // If gas estimation fails, we'll call static to get a better error message\n try {\n await this.writeContract.callStatic[fn](...args, ...(callOverrides.value ? [{\n value: callOverrides.value\n }] : []));\n } catch (err) {\n throw await this.formatError(err, fn, args, callOverrides);\n }\n }\n }\n\n // Now there should be no gas estimate errors\n try {\n return await func(...args, callOverrides);\n } catch (err) {\n throw await this.formatError(err, fn, args, callOverrides);\n }\n }\n async formatError(error, fn, args, callOverrides) {\n const provider = this.getProvider();\n\n // Get metadata for transaction to populate into error\n const network = await provider.getNetwork();\n const from = await (callOverrides.from || this.getSignerAddress());\n const to = this.address;\n const data = this.readContract.interface.encodeFunctionData(fn, args);\n const value = BigNumber.from(callOverrides.value || 0);\n const rpcUrl = provider.connection?.url;\n\n // Render function signature with arguments filled in\n const functionSignature = this.readContract.interface.getFunction(fn);\n const methodArgs = args.map(arg => {\n if (JSON.stringify(arg).length <= 80) {\n return JSON.stringify(arg);\n }\n return JSON.stringify(arg, undefined, 2);\n });\n const joinedArgs = methodArgs.join(\", \").length <= 80 ? methodArgs.join(\", \") : \"\\n\" + methodArgs.map(arg => \" \" + arg.split(\"\\n\").join(\"\\n \")).join(\",\\n\") + \"\\n\";\n const method = `${functionSignature.name}(${joinedArgs})`;\n const hash = error.transactionHash || error.transaction?.hash || error.receipt?.transactionHash;\n\n // Parse the revert reason from the error\n const reason = parseRevertReason(error);\n\n // Get contract sources for stack trace\n let sources = undefined;\n let contractName = undefined;\n try {\n const metadata = await fetchContractMetadataFromAddress(this.address, this.getProvider(), this.storage, this.options);\n if (metadata.name) {\n contractName = metadata.name;\n }\n if (metadata.metadata.sources) {\n sources = await fetchSourceFilesFromMetadata(metadata, this.storage);\n }\n } catch (err) {\n // no-op\n }\n return new TransactionError({\n reason,\n from,\n to,\n method,\n data,\n network,\n rpcUrl,\n value,\n hash,\n contractName,\n sources\n }, error);\n }\n\n /**\n * @internal\n */\n async sendGaslessTransaction(fn) {\n let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let callOverrides = arguments.length > 2 ? arguments[2] : undefined;\n const signer = this.getSigner();\n invariant(signer, \"Cannot execute gasless transaction without valid signer\");\n const chainId = await this.getChainID();\n const from = await this.getSignerAddress();\n const to = this.writeContract.address;\n const value = callOverrides?.value || 0;\n if (BigNumber.from(value).gt(0)) {\n throw new Error(\"Cannot send native token value with gasless transaction\");\n }\n const data = this.writeContract.interface.encodeFunctionData(fn, args);\n let gas = BigNumber.from(0);\n try {\n const gasEstimate = await this.readContract.estimateGas[fn](...args);\n gas = gasEstimate.mul(2);\n } catch (e) {\n // ignore\n }\n\n // in some cases WalletConnect doesn't properly gives an estimate for how much gas it would actually use.\n // as a fix, we're setting it to a high arbitrary number (500k) as the gas limit that should cover for most function calls.\n if (gas.lt(100000)) {\n gas = BigNumber.from(500000);\n }\n\n // check for gas override in callOverrides\n if (callOverrides.gasLimit && BigNumber.from(callOverrides.gasLimit).gt(gas)) {\n gas = BigNumber.from(callOverrides.gasLimit);\n }\n const tx = {\n from,\n to,\n data,\n chainId,\n gasLimit: gas,\n functionName: fn.toString(),\n functionArgs: args,\n callOverrides\n };\n return await this.defaultGaslessSendFunction(tx);\n }\n async signTypedData(signer, domain, types, message) {\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message,\n signature: \"\"\n });\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n this.emit(EventType.Signature, {\n status: \"completed\",\n message,\n signature: sig\n });\n return sig;\n }\n parseLogs(eventName, logs) {\n if (!logs || logs.length === 0) {\n return [];\n }\n const topic = this.writeContract.interface.getEventTopic(eventName);\n const parsedLogs = logs.filter(x => x.topics.indexOf(topic) >= 0);\n return parsedLogs.map(l => this.writeContract.interface.parseLog(l));\n }\n async defaultGaslessSendFunction(transaction) {\n if (this.options.gasless && \"biconomy\" in this.options.gasless) {\n return this.biconomySendFunction(transaction);\n } else if (this.options.gasless && \"openzeppelin\" in this.options.gasless) {\n return this.defenderSendFunction(transaction);\n }\n return this.engineSendFunction(transaction);\n }\n async engineSendFunction(transaction) {\n invariant(this.options.gasless && \"engine\" in this.options.gasless, \"calling engine gasless transaction without engine config in the SDK options\");\n const request = await this.enginePrepareRequest(transaction);\n const res = await fetch(this.options.gasless.engine.relayerUrl, {\n ...request,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await res.json();\n if (data.error) {\n throw new Error(data.error?.message || JSON.stringify(data.error));\n }\n const queueId = data.result.queueId;\n const engineUrl = this.options.gasless.engine.relayerUrl.split(\"/relayer/\")[0];\n const startTime = Date.now();\n while (true) {\n const txRes = await fetch(`${engineUrl}/transaction/status/${queueId}`);\n const txData = await txRes.json();\n if (txData.result.transactionHash) {\n return txData.result.transactionHash;\n }\n\n // Time out after 30s\n if (Date.now() - startTime > 30 * 1000) {\n throw new Error(\"timeout\");\n }\n\n // Poll to check if the transaction was mined\n await new Promise(resolve => setTimeout(resolve, 2000));\n }\n }\n async enginePrepareRequest(transaction) {\n const signer = this.getSigner();\n const provider = this.getProvider();\n const storage = this.storage;\n invariant(signer, \"signer is not set\");\n try {\n const {\n abi\n } = await fetchContractMetadataFromAddress(transaction.to, provider, storage);\n const chainId = (await provider.getNetwork()).chainId;\n const contract = new ContractWrapper(signer, transaction.to, abi, {}, storage);\n if (abi.find(item => item.name === \"executeMetaTransaction\")) {\n const name = await contract.call(\"name\", []);\n const domain = {\n name,\n version: \"1\",\n salt: \"0x\" + chainId.toString(16).padStart(64, \"0\"),\n // Use 64 length hex chain id as salt\n verifyingContract: transaction.to\n };\n const types = {\n MetaTransaction: [{\n name: \"nonce\",\n type: \"uint256\"\n }, {\n name: \"from\",\n type: \"address\"\n }, {\n name: \"functionSignature\",\n type: \"bytes\"\n }]\n };\n const nonce = await contract.call(\"getNonce\", [transaction.from]);\n const message = {\n nonce: nonce,\n from: transaction.from,\n functionSignature: transaction.data\n };\n const {\n signature\n } = await signTypedDataInternal(signer, domain, types, message);\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"execute-meta-transaction\",\n request: {\n from: transaction.from,\n to: transaction.to,\n data: transaction.data\n },\n signature\n })\n };\n }\n } catch {\n // no-op\n }\n if (transaction.functionName === \"approve\" && transaction.functionArgs.length === 2) {\n const spender = transaction.functionArgs[0];\n const amount = transaction.functionArgs[1];\n // TODO: support DAI permit by signDAIPermit\n const {\n message: permit,\n signature: sig\n } = await signEIP2612Permit(signer, transaction.to, transaction.from, spender, amount);\n const message = {\n to: transaction.to,\n owner: permit.owner,\n spender: permit.spender,\n value: BigNumber.from(permit.value).toString(),\n nonce: BigNumber.from(permit.nonce).toString(),\n deadline: BigNumber.from(permit.deadline).toString()\n };\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"permit\",\n request: message,\n signature: sig\n })\n };\n } else {\n const forwarderAddress = CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarder || (await computeForwarderAddress(provider, storage));\n const ForwarderABI = (await import('@thirdweb-dev/contracts-js/dist/abis/Forwarder.json')).default;\n const forwarder = new Contract(forwarderAddress, ForwarderABI, provider);\n const nonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from]);\n const domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n chainId: transaction.chainId,\n verifyingContract: forwarderAddress\n };\n const types = {\n ForwardRequest\n };\n const message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data\n };\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n const signature = sig;\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"forward\",\n request: message,\n signature,\n forwarderAddress\n })\n };\n }\n }\n async biconomySendFunction(transaction) {\n invariant(this.options.gasless && \"biconomy\" in this.options.gasless, \"calling biconomySendFunction without biconomy\");\n const signer = this.getSigner();\n const provider = this.getProvider();\n invariant(signer && provider, \"signer and provider must be set\");\n const forwarder = new Contract(getContractAddressByChainId(transaction.chainId, \"biconomyForwarder\"), BiconomyForwarderAbi, provider);\n const batchId = 0;\n const batchNonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from, batchId]);\n const request = {\n from: transaction.from,\n to: transaction.to,\n token: constants.AddressZero,\n txGas: transaction.gasLimit.toNumber(),\n tokenGasPrice: \"0\",\n batchId,\n batchNonce: batchNonce.toNumber(),\n deadline: Math.floor(Date.now() / 1000 + (this.options?.gasless && \"biconomy\" in this.options.gasless && this.options.gasless.biconomy?.deadlineSeconds || 3600)),\n data: transaction.data\n };\n const hashToSign = utils.arrayify(utils.solidityKeccak256([\"address\", \"address\", \"address\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"bytes32\"], [request.from, request.to, request.token, request.txGas, request.tokenGasPrice, request.batchId, request.batchNonce, request.deadline, utils.keccak256(request.data)]));\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message: hashToSign,\n signature: \"\"\n });\n const signature = await signer.signMessage(hashToSign);\n this.emit(EventType.Signature, {\n status: \"completed\",\n message: hashToSign,\n signature\n });\n const response = await fetch(\"https://api.biconomy.io/api/v2/meta-tx/native\", {\n method: \"POST\",\n body: JSON.stringify({\n from: transaction.from,\n apiId: this.options.gasless.biconomy.apiId,\n params: [request, signature],\n to: transaction.to,\n gasLimit: transaction.gasLimit.toHexString()\n }),\n headers: {\n \"x-api-key\": this.options.gasless.biconomy.apiKey,\n \"Content-Type\": \"application/json;charset=utf-8\"\n }\n });\n if (response.ok) {\n const resp = await response.json();\n if (!resp.txHash) {\n throw new Error(`relay transaction failed: ${resp.log}`);\n }\n return resp.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n }\n async defenderSendFunction(transaction) {\n invariant(this.options.gasless && \"openzeppelin\" in this.options.gasless, \"calling openzeppelin gasless transaction without openzeppelin config in the SDK options\");\n const signer = this.getSigner();\n const provider = this.getProvider();\n invariant(signer, \"provider is not set\");\n invariant(provider, \"provider is not set\");\n const ForwarderABI = (await import('@thirdweb-dev/contracts-js/dist/abis/Forwarder.json')).default;\n const forwarderAddress = this.options.gasless.openzeppelin.relayerForwarderAddress || (this.options.gasless.openzeppelin.useEOAForwarder ? CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarderEOA || (await computeEOAForwarderAddress(this.getProvider(), this.storage, \"\", this.options.clientId, this.options.secretKey)) : CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarder || (await computeForwarderAddress(this.getProvider(), this.storage, \"\", this.options.clientId, this.options.secretKey)));\n const forwarder = new Contract(forwarderAddress, ForwarderABI, provider);\n const nonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from]);\n let domain;\n let types;\n let message;\n if (this.options.gasless.experimentalChainlessSupport) {\n domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest: ChainAwareForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data,\n chainid: BigNumber.from(transaction.chainId).toString()\n };\n } else {\n domain = {\n name: this.options.gasless.openzeppelin.domainName,\n version: this.options.gasless.openzeppelin.domainVersion,\n chainId: transaction.chainId,\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data\n };\n }\n let signature;\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message,\n signature: \"\"\n });\n\n // if the executing function is \"approve\" and matches with erc20 approve signature\n // and if the token supports permit, then we use permit for gasless instead of approve.\n if (transaction.functionName === \"approve\" && transaction.functionArgs.length === 2) {\n const spender = transaction.functionArgs[0];\n const amount = transaction.functionArgs[1];\n // TODO: support DAI permit by signDAIPermit\n const {\n message: permit,\n signature: sig\n } = await signEIP2612Permit(signer, this.writeContract.address, transaction.from, spender, amount);\n const {\n r,\n s,\n v\n } = utils.splitSignature(sig);\n message = {\n to: this.address,\n owner: permit.owner,\n spender: permit.spender,\n value: BigNumber.from(permit.value).toString(),\n nonce: BigNumber.from(permit.nonce).toString(),\n deadline: BigNumber.from(permit.deadline).toString(),\n r,\n s,\n v\n };\n signature = sig;\n } else {\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n signature = sig;\n }\n let messageType = \"forward\";\n\n // if has owner property then it's permit :)\n if (message?.owner) {\n messageType = \"permit\";\n }\n const body = JSON.stringify({\n request: message,\n signature,\n forwarderAddress,\n type: messageType\n });\n this.emit(EventType.Signature, {\n status: \"completed\",\n message,\n signature\n });\n const response = await fetch(this.options.gasless.openzeppelin.relayerUrl, {\n method: \"POST\",\n body\n });\n if (response.ok) {\n const resp = await response.json();\n if (!resp.result) {\n throw new Error(`Relay transaction failed: ${resp.message}`);\n }\n const result = JSON.parse(resp.result);\n return result.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n }\n}\n\n/**\n * Checks whether the given ABI supports a given feature\n * @deprecated use isExtensionEnabled instead\n * @param abi - The abi to check\n * @param featureName - The feature name to check\n */\nfunction isFeatureEnabled(abi, featureName) {\n const features = detectFeatures(abi);\n return _featureEnabled(features, featureName);\n}\n\n/**\n * Checks whether the given ABI supports a given extension\n * @public\n * @param abi - The abi to check\n * @param featureName - The feature name to check\n */\nfunction isExtensionEnabled(abi, featureName) {\n return isFeatureEnabled(abi, featureName);\n}\n\n/**\n * Searches the feature map for featureName and returns whether its enabled\n * @internal\n * @param features - The feature map to search\n * @param featureName - The feature name to search for\n */\nfunction _featureEnabled(features, featureName) {\n const keys = Object.keys(features);\n if (!keys.includes(featureName)) {\n let found = false;\n for (const key of keys) {\n const f = features[key];\n found = _featureEnabled(f.features, featureName);\n if (found) {\n break;\n }\n }\n return found;\n }\n const feature = features[featureName];\n return feature.enabled;\n}\n\n/**\n * @internal\n */\nasync function getPluginABI(addresses, provider, storage) {\n return (await Promise.all(addresses.map(address => fetchContractMetadataFromAddress(address, provider, storage).catch(err => {\n console.error(`Failed to fetch plug-in for ${address}`, err);\n return {\n abi: []\n };\n })))).map(metadata => metadata.abi);\n}\n\n/**\n * @internal\n */\nasync function getCompositeABI(address, abi, provider, options, storage) {\n let pluginABIs = [];\n try {\n // check if contract is plugin-pattern / dynamic\n const isPluginRouter = isExtensionEnabled(AbiSchema.parse(abi), \"PluginRouter\");\n const isbaseRouter = isExtensionEnabled(AbiSchema.parse(abi), \"DynamicContract\");\n\n // check if the contract has fallback function - we'll further check for diamond pattern if needed\n const isFallback = isExtensionEnabled(AbiSchema.parse(abi), \"Fallback\");\n if (isbaseRouter) {\n const contract = new ContractWrapper(provider, address, getAllExtensionsAbi, options, storage);\n const plugins = await contract.call(\"getAllExtensions\");\n\n // get extension addresses\n const pluginAddresses = plugins.map(item => item.metadata.implementation);\n\n // get ABIs of extension contracts --\n pluginABIs = await getPluginABI(pluginAddresses, provider, storage);\n } else if (isPluginRouter) {\n const contract = new ContractWrapper(provider, address, getAllPluginsAbi, options, storage);\n const pluginMap = await contract.call(\"getAllPlugins\");\n\n // get extension addresses\n const allPlugins = pluginMap.map(item => item.pluginAddress);\n const plugins = Array.from(new Set(allPlugins));\n\n // get ABIs of extension contracts\n pluginABIs = await getPluginABI(plugins, provider, storage);\n } else if (isFallback) {\n // check if diamond pattern\n const dimaondAbi = [\"function facets() external view returns (tuple(address,bytes4[])[])\"];\n const contract = new Contract(address, dimaondAbi, provider);\n\n // get facets\n const facets = await contract.facets();\n\n // filter facet addresses\n const facetAddresses = facets.map(item => item[0]);\n\n // get ABI of facets\n pluginABIs = await getPluginABI(facetAddresses, provider, storage);\n }\n } catch (err) {}\n return pluginABIs.length > 0 ? joinABIs([abi, ...pluginABIs]) : abi;\n}\n\n/**\n *\n * @internal\n */\nconst roleMap = {\n admin: \"\",\n transfer: \"TRANSFER_ROLE\",\n minter: \"MINTER_ROLE\",\n pauser: \"PAUSER_ROLE\",\n lister: \"LISTER_ROLE\",\n asset: \"ASSET_ROLE\",\n unwrap: \"UNWRAP_ROLE\",\n factory: \"FACTORY_ROLE\",\n signer: \"SIGNER_ROLE\",\n metadata: \"METADATA_ROLE\",\n revoke: \"REVOKE_ROLE\",\n migration: \"MIGRATION_ROLE\"\n};\n\n/**\n * @public\n */\n\n/**\n * @public\n */\nconst ALL_ROLES = /* @__PURE__ */(() => Object.keys(roleMap))();\n\n/**\n * @internal\n */\nfunction getRoleHash(role) {\n if (role === \"admin\") {\n return utils.hexZeroPad([0], 32);\n }\n return utils.id(roleMap[role]);\n}\n\nconst DropErc1155ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc1155ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc1155ContractDeploy = /* @__PURE__ */(() => DropErc1155ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst DropErc1155ContractSchema = {\n deploy: DropErc1155ContractDeploy,\n output: DropErc1155ContractOutput,\n input: DropErc1155ContractInput\n};\n\nconst DropErc20ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc20ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc20ContractDeploy = /* @__PURE__ */(() => DropErc20ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst DropErc20ContractSchema = {\n deploy: DropErc20ContractDeploy,\n output: DropErc20ContractOutput,\n input: DropErc20ContractInput\n};\n\nconst DropErc721ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc721ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema))();\nconst DropErc721ContractDeploy = /* @__PURE__ */(() => DropErc721ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst DropErc721ContractSchema = {\n deploy: DropErc721ContractDeploy,\n output: DropErc721ContractOutput,\n input: DropErc721ContractInput\n};\n\nconst MarketplaceContractInput = CommonContractSchema;\nconst MarketplaceContractOutput = CommonContractOutputSchema;\nconst MarketplaceContractDeploy = /* @__PURE__ */(() => MarketplaceContractInput.merge(CommonPlatformFeeSchema).merge(CommonTrustedForwarderSchema))();\nconst MarketplaceContractSchema = {\n deploy: MarketplaceContractDeploy,\n output: MarketplaceContractOutput,\n input: MarketplaceContractInput\n};\n\nconst MultiwrapContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst MultiwrapContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst MultiwrapContractDeploy = /* @__PURE__ */(() => MultiwrapContractInput.merge(CommonTrustedForwarderSchema))();\nconst MultiwrapContractSchema = {\n deploy: MultiwrapContractDeploy,\n output: MultiwrapContractOutput,\n input: MultiwrapContractInput\n};\n\nconst PackContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst PackContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst PackContractDeploy = /* @__PURE__ */(() => PackContractInput.merge(CommonPlatformFeeSchema).merge(CommonTrustedForwarderSchema))();\nconst PackContractSchema = {\n deploy: PackContractDeploy,\n output: PackContractOutput,\n input: PackContractInput\n};\n\nconst SplitRecipientInputSchema = /* @__PURE__ */(() => z.object({\n address: AddressOrEnsSchema,\n sharesBps: BasisPointsSchema.gt(0, \"Shares must be greater than 0\")\n}))();\nconst SplitRecipientOuputSchema = /* @__PURE__ */(() => SplitRecipientInputSchema.extend({\n address: AddressOrEnsSchema,\n sharesBps: BasisPointsSchema\n}))();\nconst SplitsContractInput = /* @__PURE__ */(() => CommonContractSchema.extend({\n recipients: z.array(SplitRecipientInputSchema).default([]).superRefine((val, context) => {\n const addressMap = {};\n let totalShares = 0;\n for (let index = 0; index < val.length; index++) {\n const entry = val[index];\n if (addressMap[entry.address]) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate address.`,\n path: [index, `address`]\n });\n }\n addressMap[entry.address] = true;\n totalShares += entry.sharesBps;\n if (totalShares > 10000) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Total shares cannot go over 100%.`,\n path: [index, `sharesBps`]\n });\n }\n }\n if (totalShares !== 10000) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Total shares need to add up to 100%. Total shares are currently ${totalShares / 100}%`,\n path: []\n });\n }\n })\n}))();\nconst SplitsContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.extend({\n recipients: z.array(SplitRecipientOuputSchema)\n}))();\nconst SplitsContractDeploy = /* @__PURE__ */(() => SplitsContractInput.merge(SplitsContractInput).merge(CommonTrustedForwarderSchema))();\nconst SplitsContractSchema = {\n deploy: SplitsContractDeploy,\n output: SplitsContractOutput,\n input: SplitsContractInput\n};\n\nconst TokenErc1155ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst TokenErc1155ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst TokenErc1155ContractDeploy = /* @__PURE__ */(() => TokenErc1155ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst TokenErc1155ContractSchema = {\n deploy: TokenErc1155ContractDeploy,\n output: TokenErc1155ContractOutput,\n input: TokenErc1155ContractInput\n};\n\nconst TokenErc20ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonSymbolSchema))();\nconst TokenErc20ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonSymbolSchema))();\nconst TokenErc20ContractDeploy = /* @__PURE__ */(() => TokenErc20ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst TokenErc20ContractSchema = {\n deploy: TokenErc20ContractDeploy,\n output: TokenErc20ContractOutput,\n input: TokenErc20ContractInput\n};\n\nconst TokenErc721ContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst TokenErc721ContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst TokenErc721ContractDeploy = /* @__PURE__ */(() => TokenErc721ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\nconst TokenErc721ContractSchema = {\n deploy: TokenErc721ContractDeploy,\n output: TokenErc721ContractOutput,\n input: TokenErc721ContractInput\n};\n\nconst VoteSettingsInputSchema = /* @__PURE__ */(() => z.object({\n voting_delay_in_blocks: z.number().min(0).default(0),\n voting_period_in_blocks: z.number().min(1).default(1),\n voting_token_address: AddressOrEnsSchema,\n voting_quorum_fraction: PercentSchema.default(0),\n proposal_token_threshold: BigNumberishSchema.default(1)\n}))();\nconst VoteSettingsOuputSchema = /* @__PURE__ */(() => VoteSettingsInputSchema.extend({\n proposal_token_threshold: BigNumberSchema\n}))();\nconst VoteContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(VoteSettingsInputSchema))();\nconst VoteContractOutput = /* @__PURE__ */(() => CommonContractOutputSchema.merge(VoteSettingsOuputSchema))();\nconst VoteContractDeploy = /* @__PURE__ */(() => VoteContractInput.merge(CommonTrustedForwarderSchema))();\nconst VoteContractSchema = {\n deploy: VoteContractDeploy,\n output: VoteContractOutput,\n input: VoteContractInput\n};\nconst ProposalOutputSchema = /* @__PURE__ */(() => z.object({\n proposalId: BigNumberSchema,\n proposer: z.string(),\n targets: z.array(z.string()),\n values: z.array(BigNumberSchema),\n signatures: z.array(z.string()),\n calldatas: z.array(z.string()),\n startBlock: BigNumberSchema,\n endBlock: BigNumberSchema,\n description: z.string()\n}))();\n\nconst ADMIN_ROLE = [\"admin\"];\nconst NFT_BASE_CONTRACT_ROLES = [\"admin\", \"minter\", \"transfer\", \"metadata\"];\nconst MARKETPLACE_CONTRACT_ROLES = [\"admin\", \"lister\", \"asset\"];\nconst PACK_CONTRACT_ROLES = [\"admin\", \"minter\", \"asset\", \"transfer\"];\nconst TOKEN_DROP_CONTRACT_ROLES = [\"admin\", \"transfer\"];\nconst MULTIWRAP_CONTRACT_ROLES = [\"admin\", \"transfer\", \"minter\", \"unwrap\", \"asset\"];\n\nconst prebuiltContractTypes = {\n vote: \"vote\",\n token: \"token\",\n \"edition-drop\": \"edition-drop\",\n edition: \"edition\",\n marketplace: \"marketplace\",\n \"marketplace-v3\": \"marketplace-v3\",\n multiwrap: \"multiwrap\",\n \"nft-collection\": \"nft-collection\",\n \"nft-drop\": \"nft-drop\",\n pack: \"pack\",\n \"signature-drop\": \"signature-drop\",\n split: \"split\",\n \"token-drop\": \"token-drop\"\n};\nconst EditionDropInitializer = {\n name: \"DropERC1155\",\n contractType: prebuiltContractTypes[\"edition-drop\"],\n schema: DropErc1155ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len = arguments.length, _ref = new Array(_len), _key = 0; _key < _len; _key++) {\n _ref[_key] = arguments[_key];\n }\n let [network, address, storage, options] = _ref;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([EditionDropInitializer.getAbi(address, provider, storage), import('./edition-drop-af96c7db.browser.esm.js'), provider.getNetwork()]);\n return new contract.EditionDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 2 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC1155.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC1155_V2.json')).default;\n }\n};\nconst EditionInitializer = {\n name: \"TokenERC1155\",\n contractType: prebuiltContractTypes[\"edition\"],\n schema: TokenErc1155ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len2 = arguments.length, _ref2 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n _ref2[_key2] = arguments[_key2];\n }\n let [network, address, storage, options] = _ref2;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([EditionInitializer.getAbi(address, provider, storage), import('./edition-cdd9d8f7.browser.esm.js'), provider.getNetwork()]);\n return new contract.Edition(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC1155.json')).default;\n }\n};\nconst MarketplaceInitializer = {\n name: \"Marketplace\",\n contractType: prebuiltContractTypes.marketplace,\n schema: MarketplaceContractSchema,\n roles: MARKETPLACE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len3 = arguments.length, _ref3 = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n _ref3[_key3] = arguments[_key3];\n }\n let [network, address, storage, options] = _ref3;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MarketplaceInitializer.getAbi(address, provider, storage), import('./marketplace-12b3e5ac.browser.esm.js'), provider.getNetwork()]);\n return new contract.Marketplace(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Marketplace.json')).default;\n }\n};\nconst MarketplaceV3Initializer = {\n name: \"MarketplaceV3\",\n contractType: prebuiltContractTypes[\"marketplace-v3\"],\n schema: MarketplaceContractSchema,\n roles: MARKETPLACE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len4 = arguments.length, _ref4 = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n _ref4[_key4] = arguments[_key4];\n }\n let [network, address, storage, options] = _ref4;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MarketplaceV3Initializer.getAbi(address, provider, storage, options), import('./marketplacev3-9d3ae8f5.browser.esm.js'), provider.getNetwork()]);\n return new contract.MarketplaceV3(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage, options) => {\n const chainId = (await provider.getNetwork()).chainId;\n const isZkSync = chainId === 280 || chainId === 324;\n\n // Can't resolve IPFS hash from plugin bytecode on ZkSync\n // Thus, pull the composite ABI from the release page\n if (isZkSync) {\n const publishedContract = await fetchPublishedContractFromPolygon(THIRDWEB_DEPLOYER, \"MarketplaceV3\", \"latest\", storage, options?.clientId, options?.secretKey);\n const uri = publishedContract.metadataUri;\n const compositeAbi = await getCompositeABIfromRelease(uri, storage);\n return compositeAbi;\n }\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return await getCompositeABI(address, abi, provider, {}, storage);\n }\n\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n const localAbi = (await import('@thirdweb-dev/contracts-js/dist/abis/MarketplaceV3.json')).default;\n return await getCompositeABI(address, AbiSchema.parse(localAbi || []), provider, {}, storage);\n }\n};\nconst MultiwrapInitializer = {\n name: \"Multiwrap\",\n contractType: prebuiltContractTypes.multiwrap,\n schema: MultiwrapContractSchema,\n roles: MULTIWRAP_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len5 = arguments.length, _ref5 = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n _ref5[_key5] = arguments[_key5];\n }\n let [network, address, storage, options] = _ref5;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MultiwrapInitializer.getAbi(address, provider, storage), import('./multiwrap-623c1cd6.browser.esm.js'), provider.getNetwork()]);\n return new contract.Multiwrap(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Multiwrap.json')).default;\n }\n};\nconst NFTCollectionInitializer = {\n name: \"TokenERC721\",\n contractType: prebuiltContractTypes[\"nft-collection\"],\n schema: TokenErc721ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len6 = arguments.length, _ref6 = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n _ref6[_key6] = arguments[_key6];\n }\n let [network, address, storage, options] = _ref6;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([NFTCollectionInitializer.getAbi(address, provider, storage), import('./nft-collection-0efd7049.browser.esm.js'), provider.getNetwork()]);\n return new contract.NFTCollection(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC721.json')).default;\n }\n};\nconst NFTDropInitializer = {\n name: \"DropERC721\",\n contractType: prebuiltContractTypes[\"nft-drop\"],\n schema: DropErc721ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len7 = arguments.length, _ref7 = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n _ref7[_key7] = arguments[_key7];\n }\n let [network, address, storage, options] = _ref7;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([NFTDropInitializer.getAbi(address, provider, storage), import('./nft-drop-2c0ad0c2.browser.esm.js'), provider.getNetwork()]);\n return new contract.NFTDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 3 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC721.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC721_V3.json')).default;\n }\n};\nconst PackInitializer = {\n name: \"Pack\",\n contractType: prebuiltContractTypes[\"pack\"],\n schema: PackContractSchema,\n roles: PACK_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len8 = arguments.length, _ref8 = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n _ref8[_key8] = arguments[_key8];\n }\n let [network, address, storage, options] = _ref8;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([PackInitializer.getAbi(address, provider, storage), import('./pack-f880596d.browser.esm.js'), provider.getNetwork()]);\n return new contract.Pack(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return AbiSchema.parse((await import('@thirdweb-dev/contracts-js/dist/abis/Pack.json')).default || []);\n }\n};\nconst SignatureDropInitializer = {\n name: \"SignatureDrop\",\n contractType: prebuiltContractTypes[\"signature-drop\"],\n schema: DropErc721ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len9 = arguments.length, _ref9 = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n _ref9[_key9] = arguments[_key9];\n }\n let [network, address, storage, options] = _ref9;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([SignatureDropInitializer.getAbi(address, provider, storage), import('./signature-drop-c703a859.browser.esm.js'), provider.getNetwork()]);\n return new contract.SignatureDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 4 ? (await import('@thirdweb-dev/contracts-js/dist/abis/SignatureDrop.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/SignatureDrop_V4.json')).default;\n }\n};\nconst SplitInitializer = {\n name: \"Split\",\n contractType: prebuiltContractTypes[\"split\"],\n schema: SplitsContractSchema,\n roles: ADMIN_ROLE,\n initialize: async function () {\n for (var _len10 = arguments.length, _ref10 = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n _ref10[_key10] = arguments[_key10];\n }\n let [network, address, storage, options] = _ref10;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([SplitInitializer.getAbi(address, provider, storage), import('./split-e1b4b530.browser.esm.js'), provider.getNetwork()]);\n return new contract.Split(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Split.json')).default;\n }\n};\nconst TokenDropInitializer = {\n name: \"DropERC20\",\n contractType: prebuiltContractTypes[\"token-drop\"],\n schema: DropErc20ContractSchema,\n roles: TOKEN_DROP_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len11 = arguments.length, _ref11 = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n _ref11[_key11] = arguments[_key11];\n }\n let [network, address, storage, options] = _ref11;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([TokenDropInitializer.getAbi(address, provider, storage), import('./token-drop-cd2c85c3.browser.esm.js'), provider.getNetwork()]);\n return new contract.TokenDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 2 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC20.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC20_V2.json')).default;\n }\n};\nconst TokenInitializer = {\n name: \"TokenERC20\",\n contractType: prebuiltContractTypes.token,\n schema: TokenErc20ContractSchema,\n roles: NFT_BASE_CONTRACT_ROLES,\n initialize: async function () {\n for (var _len12 = arguments.length, _ref12 = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n _ref12[_key12] = arguments[_key12];\n }\n let [network, address, storage, options] = _ref12;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([TokenInitializer.getAbi(address, provider, storage), import('./token-9ffc14a9.browser.esm.js'), provider.getNetwork()]);\n return new contract.Token(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC20.json')).default;\n }\n};\nconst VoteInitializer = {\n name: \"VoteERC20\",\n contractType: prebuiltContractTypes.vote,\n schema: VoteContractSchema,\n roles: [],\n initialize: async function () {\n for (var _len13 = arguments.length, _ref13 = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n _ref13[_key13] = arguments[_key13];\n }\n let [network, address, storage, options] = _ref13;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([VoteInitializer.getAbi(address, provider, storage), import('./vote-5810045f.browser.esm.js'), provider.getNetwork()]);\n return new contract.Vote(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-published contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/VoteERC20.json')).default;\n }\n};\nasync function getContractInfo(address, provider) {\n try {\n return await getPrebuiltInfo(address, provider);\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * a map from contractType - contract metadata\n * @internal\n */\nconst PREBUILT_CONTRACTS_MAP = {\n [prebuiltContractTypes[\"edition-drop\"]]: EditionDropInitializer,\n [prebuiltContractTypes.edition]: EditionInitializer,\n [prebuiltContractTypes.marketplace]: MarketplaceInitializer,\n [prebuiltContractTypes[\"marketplace-v3\"]]: MarketplaceV3Initializer,\n [prebuiltContractTypes.multiwrap]: MultiwrapInitializer,\n [prebuiltContractTypes[\"nft-collection\"]]: NFTCollectionInitializer,\n [prebuiltContractTypes[\"nft-drop\"]]: NFTDropInitializer,\n [prebuiltContractTypes.pack]: PackInitializer,\n [prebuiltContractTypes[\"signature-drop\"]]: SignatureDropInitializer,\n [prebuiltContractTypes.split]: SplitInitializer,\n [prebuiltContractTypes[\"token-drop\"]]: TokenDropInitializer,\n [prebuiltContractTypes.token]: TokenInitializer,\n [prebuiltContractTypes.vote]: VoteInitializer\n};\nconst PREBUILT_CONTRACTS_APPURI_MAP = {\n [prebuiltContractTypes[\"edition-drop\"]]: \"ipfs://QmNm3wRzpKYWo1SRtJfgfxtvudp5p2nXD6EttcsQJHwTmk\",\n [prebuiltContractTypes.edition]: \"\",\n [prebuiltContractTypes.marketplace]: \"ipfs://QmbAgC8YwY36n8H2kuvSWsRisxDZ15QZw3xGZyk9aDvcv7/marketplace.html\",\n [prebuiltContractTypes[\"marketplace-v3\"]]: \"ipfs://QmbAgC8YwY36n8H2kuvSWsRisxDZ15QZw3xGZyk9aDvcv7/marketplace-v3.html\",\n [prebuiltContractTypes.multiwrap]: \"\",\n [prebuiltContractTypes[\"nft-collection\"]]: \"\",\n [prebuiltContractTypes[\"nft-drop\"]]: \"ipfs://QmZptmVipc6SGFbKAyXcxGgohzTwYRXZ9LauRX5ite1xDK\",\n [prebuiltContractTypes.pack]: \"\",\n [prebuiltContractTypes[\"signature-drop\"]]: \"ipfs://QmZptmVipc6SGFbKAyXcxGgohzTwYRXZ9LauRX5ite1xDK\",\n [prebuiltContractTypes.split]: \"\",\n [prebuiltContractTypes[\"token-drop\"]]: \"ipfs://QmbAgC8YwY36n8H2kuvSWsRisxDZ15QZw3xGZyk9aDvcv7/erc20.html\",\n [prebuiltContractTypes.token]: \"\",\n [prebuiltContractTypes.vote]: \"\"\n};\nconst SmartContract = {\n name: \"SmartContract\",\n contractType: \"custom\",\n schema: {},\n roles: ALL_ROLES\n};\nconst CONTRACTS_MAP = {\n ...PREBUILT_CONTRACTS_MAP,\n [SmartContract.contractType]: SmartContract\n};\n\n/**\n * @internal\n */\nfunction getContractTypeForRemoteName(name) {\n return Object.values(CONTRACTS_MAP).find(contract => contract.name === name)?.contractType || \"custom\";\n}\nfunction getContractName(type) {\n return Object.values(CONTRACTS_MAP).find(contract => contract.contractType === type)?.name;\n}\n\nexport { getPolygonGasPriorityFee as $, AssetNotFoundError as A, includesErrorMessage as B, CONTRACTS_MAP as C, DuplicateFileNameError as D, EditionDropInitializer as E, FileNameMissingError as F, ALL_ROLES as G, getRoleHash as H, InvalidAddressError as I, getContractMetadataFromCache as J, fetchContractMetadataFromAddress as K, ListingNotFoundError as L, MarketplaceInitializer as M, NFTCollectionInitializer as N, fetchContractMetadataFromBytecode as O, PackInitializer as P, QuantityAboveLimitError as Q, RestrictedTransferError as R, StaticJsonRpcBatchProvider as S, TokenDropInitializer as T, UploadError as U, VoteInitializer as V, WrongListingTypeError as W, fetchAbiFromAddress as X, getDefaultGasOverrides as Y, getDynamicFeeData as Z, getGasPrice as _, EditionInitializer as a, getNativeTokenByChainId as a$, fetchContractMetadata as a0, formatCompilerMetadata as a1, hasMatchingAbi as a2, matchesAbiFromBytecode as a3, extractCommentFromMetadata as a4, extractConstructorParamsFromAbi as a5, extractFunctionsFromAbi as a6, extractMinimalProxyImplementationAddress as a7, resolveContractUriFromAddress as a8, resolveContractUriAndBytecode as a9, isEIP155Enforced as aA, getCreate2FactoryAddress as aB, getSaltHash as aC, getInitBytecodeWithSalt as aD, computeDeploymentAddress as aE, computeEOAForwarderAddress as aF, computeForwarderAddress as aG, getKeylessTxn as aH, computeDeploymentInfo as aI, encodeConstructorParamsForImplementation as aJ, getCreate2FactoryDeploymentInfo as aK, THIRDWEB_DEPLOYER as aL, fetchPublishedContractFromPolygon as aM, fetchAndCacheDeployMetadata as aN, resolveEns as aO, resolveAddress as aP, signTypedDataInternal as aQ, OZ_DEFENDER_FORWARDER_ADDRESS as aR, CONTRACT_ADDRESSES as aS, getContractAddressByChainId as aT, getContractPublisherAddress as aU, getMultichainRegistryAddress as aV, ChainId as aW, setSupportedChains as aX, getSupportedChains as aY, NATIVE_TOKEN_ADDRESS as aZ, NATIVE_TOKENS as a_, resolveImplementation as aa, extractIPFSHashFromBytecode as ab, fetchRawPredeployMetadata as ac, fetchPreDeployMetadata as ad, fetchExtendedReleaseMetadata as ae, detectFeatures as af, detectFeaturesFromBytecode as ag, getAllDetectedFeatures as ah, getAllDetectedExtensionsFromBytecode as ai, constructAbiFromBytecode as aj, getAllDetectedExtensions as ak, isFeatureEnabled as al, isExtensionEnabled as am, joinABIs as an, getCompositeABI as ao, toSemver as ap, isIncrementalVersion as aq, isDowngradeVersion as ar, fetchSourceFilesFromMetadata as as, CREATE2_FACTORY_BYTECODE as at, SIGNATURE as au, COMMON_FACTORY as av, GAS_LIMIT_FOR_DEPLOYER as aw, DEPLOYER_BYTECODE as ax, DEPLOYER_ABI as ay, isContractDeployed as az, MarketplaceV3Initializer as b, MarketplaceContractOutput as b$, LINK_TOKEN_ADDRESS as b0, EventType as b1, getChainProvider as b2, getChainIdFromNetwork as b3, getChainIdOrName as b4, isChainConfig as b5, getProviderFromRpcUrl as b6, getSignerAndProvider as b7, SUPPORTED_FEATURES as b8, BigNumberSchema as b9, ProfileSchemaOutput as bA, PublishedContractSchema as bB, ContractInfoSchema as bC, CompilerMetadataFetchedSchema as bD, PreDeployMetadataFetchedSchema as bE, CommonContractSchema as bF, CommonContractOutputSchema as bG, CommonRoyaltySchema as bH, CommonPrimarySaleSchema as bI, CommonPlatformFeeSchema as bJ, CommonTrustedForwarderSchema as bK, CommonSymbolSchema as bL, MerkleSchema as bM, SnapshotEntryInput as bN, SnapshotInputSchema as bO, SnapshotEntryWithProofSchema as bP, SnapshotSchema as bQ, SnapshotInfoSchema as bR, DropErc721ContractInput as bS, DropErc721ContractOutput as bT, DropErc721ContractDeploy as bU, DropErc721ContractSchema as bV, DropErc1155ContractInput as bW, DropErc1155ContractOutput as bX, DropErc1155ContractDeploy as bY, DropErc1155ContractSchema as bZ, MarketplaceContractInput as b_, BigNumberishSchema as ba, BigNumberTransformSchema as bb, AddressSchema as bc, AddressOrEnsSchema as bd, CallOverrideSchema as be, SDKOptionsSchema as bf, BYOCContractMetadataSchema as bg, CustomContractInput as bh, CustomContractOutput as bi, CustomContractDeploy as bj, CustomContractSchema as bk, AbiTypeSchema as bl, AbiObjectSchema as bm, AbiSchema as bn, PreDeployMetadata as bo, ChainIdToAddressSchema as bp, CustomFactoryInput as bq, FactoryDeploymentSchema as br, DeployTypeInput as bs, RouterTypeInput as bt, DeploymentNetworkInput as bu, ExtraPublishMetadataSchemaInput as bv, ExtraPublishMetadataSchemaOutput as bw, FullPublishMetadataSchemaInput as bx, FullPublishMetadataSchemaOutput as by, ProfileSchemaInput as bz, MultiwrapInitializer as c, FEATURE_NFT_SIGNATURE_MINTABLE_V2 as c$, MarketplaceContractDeploy as c0, MarketplaceContractSchema as c1, PackContractInput as c2, PackContractOutput as c3, PackContractDeploy as c4, PackContractSchema as c5, SplitsContractInput as c6, SplitsContractOutput as c7, SplitsContractDeploy as c8, SplitsContractSchema as c9, BigNumberTransformSchema$1 as cA, FileOrBufferOrStringSchema as cB, HexColor as cC, QuantitySchema as cD, BytesLikeSchema as cE, BasisPointsSchema as cF, FEATURE_TOKEN_BATCH_MINTABLE as cG, FEATURE_TOKEN_BURNABLE as cH, FEATURE_TOKEN_CLAIM_CONDITIONS_V2 as cI, FEATURE_TOKEN_MINTABLE as cJ, FEATURE_TOKEN_SIGNATURE_MINTABLE as cK, FEATURE_TOKEN as cL, FEATURE_NFT_BATCH_MINTABLE as cM, FEATURE_NFT_CLAIM_CONDITIONS_V2 as cN, FEATURE_NFT_CLAIM_CUSTOM as cO, FEATURE_NFT_LAZY_MINTABLE as cP, FEATURE_NFT_REVEALABLE as cQ, FEATURE_NFT_MINTABLE as cR, FEATURE_NFT_ENUMERABLE as cS, FEATURE_NFT_QUERYABLE as cT, FEATURE_NFT_SUPPLY as cU, FEATURE_NFT_TIERED_DROP as cV, FEATURE_NFT_BURNABLE as cW, FEATURE_NFT_CLAIM_ZORA as cX, FEATURE_NFT_LOYALTY_CARD as cY, FEATURE_NFT_UPDATABLE_METADATA as cZ, FEATURE_NFT_SHARED_METADATA as c_, TokenErc20ContractInput as ca, TokenErc20ContractOutput as cb, TokenErc20ContractDeploy as cc, TokenErc20ContractSchema as cd, TokenErc721ContractInput as ce, TokenErc721ContractOutput as cf, TokenErc721ContractDeploy as cg, TokenErc721ContractSchema as ch, TokenErc1155ContractInput as ci, TokenErc1155ContractOutput as cj, TokenErc1155ContractDeploy as ck, TokenErc1155ContractSchema as cl, VoteSettingsInputSchema as cm, VoteSettingsOuputSchema as cn, VoteContractInput as co, VoteContractOutput as cp, VoteContractDeploy as cq, VoteContractSchema as cr, ProposalOutputSchema as cs, RPCConnectionHandler as ct, ContractWrapper as cu, extractFeatures as cv, CUSTOM_GAS_FOR_CHAIN as cw, AddressZero as cx, getProcessEnv as cy, AmountSchema as cz, NFTDropInitializer as d, FEATURE_NFT as d0, FEATURE_METADATA as d1, FEATURE_APPURI as d2, FEATURE_PERMISSIONS as d3, FEATURE_ROYALTY as d4, FEATURE_OWNER as d5, FEATURE_PRIMARY_SALE as d6, isNode as d7, FEATURE_EDITION_BATCH_MINTABLE as d8, FEATURE_EDITION_BURNABLE as d9, MARKETPLACE_CONTRACT_ROLES as dA, MULTIWRAP_CONTRACT_ROLES as dB, MultiwrapContractSchema as dC, FEATURE_PACK_VRF as dD, PACK_CONTRACT_ROLES as dE, ADMIN_ROLE as dF, TOKEN_DROP_CONTRACT_ROLES as dG, DropErc20ContractSchema as dH, FEATURE_AIRDROP_ERC1155 as dI, FEATURE_AIRDROP_ERC20 as dJ, FEATURE_AIRDROP_ERC721 as dK, FEATURE_DYNAMIC_CONTRACT as dL, FEATURE_EDITION_ENUMERABLE as da, FEATURE_EDITION_LAZY_MINTABLE_V2 as db, FEATURE_EDITION_REVEALABLE as dc, getPrebuiltInfo as dd, FEATURE_EDITION_MINTABLE as de, FEATURE_EDITION_CLAIM_CUSTOM as df, FEATURE_EDITION_CLAIM_CONDITIONS_V2 as dg, FEATURE_EDITION_SIGNATURE_MINTABLE as dh, FEATURE_EDITION as di, FEATURE_EDITION_SUPPLY as dj, FEATURE_DIRECT_LISTINGS as dk, FEATURE_ENGLISH_AUCTIONS as dl, FEATURE_OFFERS as dm, FEATURE_PLATFORM_FEE as dn, FEATURE_ACCOUNT_PERMISSIONS as dp, FEATURE_ACCOUNT as dq, FEATURE_ACCOUNT_FACTORY as dr, signEIP2612Permit as ds, getAndIncrementNonce as dt, ForwardRequest as du, ChainAwareForwardRequest as dv, BiconomyForwarderAbi as dw, caches as dx, MAX_BPS as dy, NFT_BASE_CONTRACT_ROLES as dz, SignatureDropInitializer as e, SplitInitializer as f, TokenInitializer as g, PREBUILT_CONTRACTS_MAP as h, PREBUILT_CONTRACTS_APPURI_MAP as i, getContractTypeForRemoteName as j, getContractName as k, isProvider as l, isSigner as m, NotFoundError as n, MissingRoleError as o, NotEnoughTokensError as p, MissingOwnerRoleError as q, FetchError as r, DuplicateLeafsError as s, AuctionAlreadyStartedError as t, FunctionDeprecatedError as u, AdminRoleMissingError as v, AuctionHasNotEndedError as w, ExtensionNotImplementedError as x, TransactionError as y, parseRevertReason as z };\n","import { cz as AmountSchema } from './index-924d29a2.browser.esm.js';\nimport { utils } from 'ethers';\nimport { f as fetchCurrencyMetadata } from './fetchCurrencyValue-7b372272.browser.esm.js';\n\n/**\n *\n * @param provider - The provider to use\n * @param inputPrice - The input price to normalize\n * @param currencyAddress - The currency address to normalize the price for\n * @returns\n * @internal\n */\nasync function normalizePriceValue(provider, inputPrice, currencyAddress) {\n const metadata = await fetchCurrencyMetadata(provider, currencyAddress);\n return utils.parseUnits(AmountSchema.parse(inputPrice), metadata.decimals);\n}\n\nexport { normalizePriceValue as n };\n","import ContractPublisherAbi from '@thirdweb-dev/contracts-js/dist/abis/ContractPublisher.json';\nimport { utils, constants } from 'ethers';\nimport invariant from 'tiny-invariant';\nimport { ad as fetchPreDeployMetadata, a5 as extractConstructorParamsFromAbi, a6 as extractFunctionsFromAbi, ct as RPCConnectionHandler, cu as ContractWrapper, aU as getContractPublisherAddress, aP as resolveAddress, K as fetchContractMetadataFromAddress, ae as fetchExtendedReleaseMetadata, a8 as resolveContractUriFromAddress, as as fetchSourceFilesFromMetadata, bA as ProfileSchemaOutput, bB as PublishedContractSchema, ac as fetchRawPredeployMetadata, a0 as fetchContractMetadata, al as isFeatureEnabled, bn as AbiSchema, aM as fetchPublishedContractFromPolygon, aN as fetchAndCacheDeployMetadata, an as joinABIs, aq as isIncrementalVersion, bx as FullPublishMetadataSchemaInput } from './index-924d29a2.browser.esm.js';\nimport { c as buildTransactionFunction, T as Transaction } from './transactions-12414a24.browser.esm.js';\n\n/**\n * @internal\n */\nasync function extractConstructorParams(predeployMetadataUri, storage) {\n const meta = await fetchPreDeployMetadata(predeployMetadataUri, storage);\n return extractConstructorParamsFromAbi(meta.abi);\n}\n\n/**\n * @internal\n * @param predeployMetadataUri - The predeploy metadata URI to fetch\n * @param storage - The storage to use\n */\nasync function extractFunctions(predeployMetadataUri, storage) {\n const metadata = await fetchPreDeployMetadata(predeployMetadataUri, storage);\n return extractFunctionsFromAbi(metadata.abi, metadata.metadata);\n}\n\n/**\n * Handles publishing contracts (EXPERIMENTAL)\n * @internal\n */\nclass ContractPublisher extends RPCConnectionHandler {\n constructor(network, options, storage) {\n super(network, options);\n this.storage = storage;\n this.publisher = new ContractWrapper(network, getContractPublisherAddress(), ContractPublisherAbi, options, storage);\n }\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.publisher.updateSignerOrProvider(network);\n }\n\n /**\n * @internal\n * @param metadataUri - URI of the contract metadata\n */\n async extractConstructorParams(metadataUri) {\n return extractConstructorParams(metadataUri, this.storage);\n }\n\n /**\n * @internal\n * @param predeployMetadataUri - URI of the predeploy metadata\n */\n async extractFunctions(predeployMetadataUri) {\n return extractFunctions(predeployMetadataUri, this.storage);\n }\n\n /**\n * @internal\n * @param predeployUri - URI of the predeploy metadata\n */\n async fetchCompilerMetadataFromPredeployURI(predeployUri) {\n return fetchPreDeployMetadata(predeployUri, this.storage);\n }\n\n /**\n * @internal\n * @param prepublishUri - URI of the prepublish metadata\n * @param publisherAddress - Address of the publisher\n */\n async fetchPrePublishMetadata(prepublishUri, publisherAddress) {\n const preDeployMetadataFetched = await fetchPreDeployMetadata(prepublishUri, this.storage);\n const latestPublishedContract = publisherAddress ? await this.getLatest(publisherAddress, preDeployMetadataFetched.name) : undefined;\n const latestPublishedContractMetadata = latestPublishedContract ? await this.fetchPublishedContractInfo(latestPublishedContract) : undefined;\n return {\n preDeployMetadata: preDeployMetadataFetched,\n latestPublishedContractMetadata\n };\n }\n\n /**\n * @param address - Address of the contract\n */\n async fetchCompilerMetadataFromAddress(address) {\n const resolvedAddress = await resolveAddress(address);\n return fetchContractMetadataFromAddress(resolvedAddress, this.getProvider(), this.storage, this.options);\n }\n\n /**\n * @internal\n * Get the full information about a published contract\n * @param contract - Published contract\n */\n async fetchPublishedContractInfo(contract) {\n return {\n name: contract.id,\n publishedTimestamp: contract.timestamp,\n publishedMetadata: await this.fetchFullPublishMetadata(contract.metadataUri)\n };\n }\n\n /**\n * @internal\n * @param publishedMetadataUri - URI of the published metadata\n */\n async fetchFullPublishMetadata(publishedMetadataUri) {\n return fetchExtendedReleaseMetadata(publishedMetadataUri, this.storage);\n }\n\n /**\n * @internal\n * // TODO expose a resolvePublishMetadata(contractAddress, chainId) that handles the dual chain case\n * // TODO will be easy to do with the multichain pattern of 3.0\n * @param compilerMetadataUri - URI of the compiler metadata\n */\n async resolvePublishMetadataFromCompilerMetadata(compilerMetadataUri) {\n const publishedMetadataUri = await this.publisher.read(\"getPublishedUriFromCompilerUri\", [compilerMetadataUri]);\n if (publishedMetadataUri.length === 0) {\n throw Error(`Could not resolve published metadata URI from ${compilerMetadataUri}`);\n }\n return await Promise.all(publishedMetadataUri.filter(uri => uri.length > 0).map(uri => this.fetchFullPublishMetadata(uri)));\n }\n\n /**\n * @internal\n * TODO clean this up (see method above, too)\n */\n async resolveContractUriFromAddress(address) {\n const resolvedAddress = await resolveAddress(address);\n const contractUri = await resolveContractUriFromAddress(resolvedAddress, this.getProvider());\n invariant(contractUri, \"Could not resolve contract URI from address\");\n return contractUri;\n }\n\n /**\n * Fetch all sources for a contract from its address\n * @param address - Address of the contract\n */\n async fetchContractSourcesFromAddress(address) {\n const resolvedAddress = await resolveAddress(address);\n const metadata = await this.fetchCompilerMetadataFromAddress(resolvedAddress);\n return await fetchSourceFilesFromMetadata(metadata, this.storage);\n }\n\n /**\n * Fetch ABI from a contract, or undefined if not found\n * @param address - Address of the contract\n */\n async fetchContractAbiFromAddress(address) {\n const resolvedAddress = await resolveAddress(address);\n const meta = await fetchContractMetadataFromAddress(resolvedAddress, this.getProvider(), this.storage);\n return meta.abi;\n }\n\n /**\n * @internal\n * @param profileMetadata - Profile metadata\n */\n updatePublisherProfile = /* @__PURE__ */buildTransactionFunction(async profileMetadata => {\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const publisher = await signer.getAddress();\n const profileUri = await this.storage.upload(profileMetadata);\n return Transaction.fromContractWrapper({\n contractWrapper: this.publisher,\n method: \"setPublisherProfileUri\",\n args: [publisher, profileUri]\n });\n });\n\n /**\n * @internal\n * @param publisherAddress - Address of the publisher\n */\n async getPublisherProfile(publisherAddress) {\n const resolvedPublisherAddress = await resolveAddress(publisherAddress);\n const profileUri = await this.publisher.read(\"getPublisherProfileUri\", [resolvedPublisherAddress]);\n if (!profileUri || profileUri.length === 0) {\n return {};\n }\n return ProfileSchemaOutput.parse(await this.storage.downloadJSON(profileUri));\n }\n\n /**\n * @internal\n * @param publisherAddress - Address of the publisher\n */\n async getAll(publisherAddress) {\n const resolvedPublisherAddress = await resolveAddress(publisherAddress);\n const data = await this.publisher.read(\"getAllPublishedContracts\", [resolvedPublisherAddress]);\n // since we can fetch from multiple publisher contracts, just keep the latest one in the list\n const map = data.reduce((acc, curr) => {\n // replaces the previous contract with the latest one\n acc[curr.contractId] = curr;\n return acc;\n }, {});\n return Object.entries(map).map(_ref => {\n let [, struct] = _ref;\n return this.toPublishedContract(struct);\n });\n }\n\n /**\n * @internal\n * @param publisherAddress - Address of the publisher\n * @param contractId - ID of the contract\n */\n async getAllVersions(publisherAddress, contractId) {\n const resolvedPublisherAddress = await resolveAddress(publisherAddress);\n const contractStructs = await this.publisher.read(\"getPublishedContractVersions\", [resolvedPublisherAddress, contractId]);\n if (contractStructs.length === 0) {\n throw Error(\"Not found\");\n }\n return contractStructs.map(d => this.toPublishedContract(d));\n }\n async getVersion(publisherAddress, contractId) {\n let version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n const resolvedPublisherAddress = await resolveAddress(publisherAddress);\n if (version === \"latest\") {\n return this.getLatest(resolvedPublisherAddress, contractId);\n }\n const allVersions = await this.getAllVersions(resolvedPublisherAddress, contractId);\n // get the metadata for each version\n const versionMetadata = await Promise.all(allVersions.map(contract => this.fetchPublishedContractInfo(contract)));\n // find the version that matches the version string\n const versionMatch = versionMetadata.find(metadata => metadata.publishedMetadata.version === version);\n invariant(versionMatch, \"Contract version not found\");\n // match the version back to the contract based on the published timestamp\n return allVersions.find(contract => contract.timestamp === versionMatch.publishedTimestamp);\n }\n async getLatest(publisherAddress, contractId) {\n const resolvedPublisherAddress = await resolveAddress(publisherAddress);\n const model = await this.publisher.read(\"getPublishedContract\", [resolvedPublisherAddress, contractId]);\n if (model && model.publishMetadataUri) {\n return this.toPublishedContract(model);\n }\n return undefined;\n }\n publish = /* @__PURE__ */buildTransactionFunction(async (predeployUri, extraMetadata) => {\n const extraMetadataCleaned = this.cleanupOldPublishFlowData(extraMetadata);\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const publisher = await signer.getAddress();\n const predeployMetadata = await fetchRawPredeployMetadata(predeployUri, this.storage);\n const compilerMetadata = await fetchContractMetadata(predeployMetadata.metadataUri, this.storage);\n const isPlugin = isFeatureEnabled(AbiSchema.parse(compilerMetadata.abi), \"PluginRouter\");\n const isDynamic = isFeatureEnabled(AbiSchema.parse(compilerMetadata.abi), \"DynamicContract\");\n extraMetadataCleaned.routerType = isPlugin ? \"plugin\" : isDynamic ? \"dynamic\" : \"none\";\n\n // For a dynamic contract Router, try to fetch plugin/extension metadata\n if (isDynamic || isPlugin) {\n const defaultExtensions = extraMetadataCleaned.defaultExtensions;\n if (defaultExtensions && defaultExtensions.length > 0) {\n try {\n const publishedExtensions = await Promise.all(defaultExtensions.map(e => {\n return fetchPublishedContractFromPolygon(e.publisherAddress, e.extensionName, e.extensionVersion, this.storage, this.options.clientId, this.options.secretKey);\n }));\n const publishedExtensionUris = publishedExtensions.map(ext => ext.metadataUri);\n const extensionABIs = (await Promise.all(publishedExtensionUris.map(async uri => {\n return fetchAndCacheDeployMetadata(uri, this.storage);\n }))).map(fetchedMetadata => fetchedMetadata.compilerMetadata.abi);\n const composite = joinABIs([compilerMetadata.abi, ...extensionABIs]);\n extraMetadataCleaned.compositeAbi = AbiSchema.parse(composite);\n } catch {}\n }\n }\n\n // ensure version is incremental\n const latestContract = await this.getLatest(publisher, predeployMetadata.name);\n if (latestContract && latestContract.metadataUri) {\n const latestMetadata = await this.fetchPublishedContractInfo(latestContract);\n const latestVersion = latestMetadata.publishedMetadata.version;\n if (!isIncrementalVersion(latestVersion, extraMetadataCleaned.version)) {\n throw Error(`Version ${extraMetadataCleaned.version} is not greater than ${latestVersion}`);\n }\n }\n const fetchedBytecode = await (await this.storage.download(predeployMetadata.bytecodeUri)).text();\n const bytecode = fetchedBytecode.startsWith(\"0x\") ? fetchedBytecode : `0x${fetchedBytecode}`;\n const bytecodeHash = utils.solidityKeccak256([\"bytes\"], [bytecode]);\n const contractId = predeployMetadata.name;\n const fullMetadata = await FullPublishMetadataSchemaInput.parseAsync({\n ...extraMetadataCleaned,\n metadataUri: predeployMetadata.metadataUri,\n bytecodeUri: predeployMetadata.bytecodeUri,\n name: predeployMetadata.name,\n analytics: predeployMetadata.analytics,\n publisher\n });\n const fullMetadataUri = await this.storage.upload(fullMetadata);\n return Transaction.fromContractWrapper({\n contractWrapper: this.publisher,\n method: \"publishContract\",\n args: [publisher, contractId, fullMetadataUri, predeployMetadata.metadataUri, bytecodeHash, constants.AddressZero],\n parse: receipt => {\n const events = this.publisher.parseLogs(\"ContractPublished\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ContractPublished event found\");\n }\n const contract = events[0].args.publishedContract;\n return {\n receipt,\n data: async () => this.toPublishedContract(contract)\n };\n }\n });\n });\n unpublish = /* @__PURE__ */buildTransactionFunction(async (publisher, contractId) => {\n const resolvedPublisher = await resolveAddress(publisher);\n return Transaction.fromContractWrapper({\n contractWrapper: this.publisher,\n method: \"unpublishContract\",\n args: [resolvedPublisher, contractId]\n });\n });\n toPublishedContract(contractModel) {\n return PublishedContractSchema.parse({\n id: contractModel.contractId,\n timestamp: contractModel.publishTimestamp,\n metadataUri: contractModel.publishMetadataUri\n });\n }\n cleanupOldPublishFlowData(extraMetadata) {\n if (extraMetadata.compositeAbi) {\n delete extraMetadata.compositeAbi;\n }\n return {\n ...extraMetadata,\n isDeployableViaFactory: false,\n isDeployableViaProxy: false,\n factoryDeploymentData: {\n ...extraMetadata.factoryDeploymentData,\n implementationAddresses: {},\n factoryAddresses: {}\n }\n };\n }\n}\n\nvar contractPublisher = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ContractPublisher: ContractPublisher\n});\n\nexport { ContractPublisher as C, extractFunctions as a, contractPublisher as c, extractConstructorParams as e };\n","import { ct as RPCConnectionHandler, aP as resolveAddress, aQ as signTypedDataInternal, Y as getDefaultGasOverrides, aW as ChainId, b2 as getChainProvider, cu as ContractWrapper, aZ as NATIVE_TOKEN_ADDRESS, cv as extractFeatures, af as detectFeatures, aV as getMultichainRegistryAddress, aM as fetchPublishedContractFromPolygon, aL as THIRDWEB_DEPLOYER$1, aN as fetchAndCacheDeployMetadata, aB as getCreate2FactoryAddress, aJ as encodeConstructorParamsForImplementation, aI as computeDeploymentInfo, az as isContractDeployed, K as fetchContractMetadataFromAddress, as as fetchSourceFilesFromMetadata, a5 as extractConstructorParamsFromAbi, a8 as resolveContractUriFromAddress, aU as getContractPublisherAddress, ae as fetchExtendedReleaseMetadata, bn as AbiSchema, av as COMMON_FACTORY, aA as isEIP155Enforced, cw as CUSTOM_GAS_FOR_CHAIN, aK as getCreate2FactoryDeploymentInfo, aS as CONTRACT_ADDRESSES, cx as AddressZero, aG as computeForwarderAddress, P as PackInitializer, b as MarketplaceV3Initializer, M as MarketplaceInitializer, f as SplitInitializer, V as VoteInitializer, g as TokenInitializer, T as TokenDropInitializer, a as EditionInitializer, E as EditionDropInitializer, c as MultiwrapInitializer, e as SignatureDropInitializer, N as NFTCollectionInitializer, d as NFTDropInitializer, h as PREBUILT_CONTRACTS_MAP, k as getContractName, bJ as CommonPlatformFeeSchema, bI as CommonPrimarySaleSchema, bK as CommonTrustedForwarderSchema, bF as CommonContractSchema, bH as CommonRoyaltySchema, bL as CommonSymbolSchema, aE as computeDeploymentAddress, aD as getInitBytecodeWithSalt, aX as setSupportedChains, j as getContractTypeForRemoteName, b7 as getSignerAndProvider, ao as getCompositeABI, b5 as isChainConfig, aT as getContractAddressByChainId, cy as getProcessEnv, bV as DropErc721ContractSchema, i as PREBUILT_CONTRACTS_APPURI_MAP, b1 as EventType } from './index-924d29a2.browser.esm.js';\nimport { ThirdwebStorage } from '@thirdweb-dev/storage';\nimport { C as ContractPublisher } from './contract-publisher-3700369d.browser.esm.js';\nimport TWRegistryABI from '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryLogic.json';\nimport TWRegistryRouterABI from '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryRouter.json';\nimport { utils, Wallet, constants, Contract, BigNumber, ContractFactory as ContractFactory$1 } from 'ethers';\nimport { c as buildTransactionFunction, T as Transaction, f as buildDeployTransactionFunction, D as DeployTransaction } from './transactions-12414a24.browser.esm.js';\nimport { i as isNativeToken, a as fetchCurrencyValue, C as ContractEncoder } from './fetchCurrencyValue-7b372272.browser.esm.js';\nimport EventEmitter from 'eventemitter3';\nimport invariant from 'tiny-invariant';\nimport { n as normalizePriceValue } from './normalizePriceValue-b8097c8f.browser.esm.js';\nimport { defaultChains } from '@thirdweb-dev/chains';\nimport { GENERATED_ABI } from '@thirdweb-dev/generated-abis';\nimport { g as getDeploymentInfo, c as createTransactionBatches, a as deployWithThrowawayDeployer, d as deployContractDeterministic } from './deployWithThrowawayDeployer-e83ef1d9.browser.esm.js';\nimport TWFactoryAbi from '@thirdweb-dev/contracts-js/dist/abis/TWFactory.json';\n\nlet alreadyChecked = false;\nfunction checkClientIdOrSecretKey(message, clientId, secretKey) {\n if (alreadyChecked) {\n return;\n }\n alreadyChecked = true;\n if (clientId || secretKey) {\n return;\n }\n console.warn(message);\n}\n\n/**\n * publicly available wallet for local nodes\n */\nconst LOCAL_NODE_PKEY = \"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80\";\n\n/**\n *\n * {@link UserWallet} events that you can subscribe to using `sdk.wallet.events`.\n *\n * @public\n */\n\n/**\n * Connect and Interact with a user wallet\n * @example\n * ```javascript\n * const balance = await sdk.wallet.balance();\n * ```\n * @public\n */\nclass UserWallet {\n events = new EventEmitter();\n constructor(network, options, storage) {\n this.connection = new RPCConnectionHandler(network, options);\n this.options = options;\n this.events = new EventEmitter();\n this.storage = storage;\n }\n\n // TODO disconnect()\n // TODO switchChain()\n // TODO tokens()\n // TODO NFTs()\n\n // TODO this will become the source of truth of the signer and have every contract read from it\n // TODO separate signer and provider logics\n connect(network) {\n this.connection.updateSignerOrProvider(network);\n this.events.emit(\"signerChanged\", this.connection.getSigner());\n }\n\n /**\n * Transfer native or ERC20 tokens from this wallet to another wallet\n * @example\n * ```javascript\n * // transfer 0.8 ETH\n * await sdk.wallet.transfer(\"0x...\", 0.8);\n * // transfer 0.8 tokens of `tokenContractAddress`\n * await sdk.wallet.transfer(\"0x...\", 0.8, tokenContractAddress);\n * ```\n * @param to - the account to send funds to\n * @param amount - the amount in tokens\n * @param currencyAddress - Optional - ERC20 contract address of the token to transfer\n */\n async transfer(to, amount) {\n let currencyAddress = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NATIVE_TOKEN_ADDRESS;\n const [resolvedTo, resolvedCurrency, amountInWei] = await Promise.all([resolveAddress(to), resolveAddress(currencyAddress), normalizePriceValue(this.connection.getProvider(), amount, currencyAddress)]);\n const signer = this.requireWallet();\n if (isNativeToken(resolvedCurrency)) {\n // native token transfer\n const from = await signer.getAddress();\n const tx = await signer.sendTransaction({\n from,\n to: resolvedTo,\n value: amountInWei\n });\n return {\n receipt: await tx.wait()\n };\n } else {\n // ERC20 token transfer\n const ERC20Abi = (await import('@thirdweb-dev/contracts-js/dist/abis/IERC20.json')).default;\n return {\n receipt: await this.createErc20(resolvedCurrency, ERC20Abi).sendTransaction(\"transfer\", [resolvedTo, amountInWei])\n };\n }\n }\n\n /**\n * Fetch the native or ERC20 token balance of this wallet\n * @example\n * ```javascript\n * // native currency balance\n * const balance = await sdk.wallet.balance();\n * // ERC20 token balance\n * const erc20balance = await sdk.wallet.balance(tokenContractAddress);\n *\n * ```\n */\n async balance() {\n let currencyAddress = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NATIVE_TOKEN_ADDRESS;\n this.requireWallet();\n const resolvedCurrency = await resolveAddress(currencyAddress);\n const provider = this.connection.getProvider();\n let balance;\n if (isNativeToken(resolvedCurrency)) {\n balance = await provider.getBalance(await this.getAddress());\n } else {\n const ERC20Abi = (await import('@thirdweb-dev/contracts-js/dist/abis/IERC20.json')).default;\n balance = await this.createErc20(resolvedCurrency, ERC20Abi).read(\"balanceOf\", [await this.getAddress()]);\n }\n return await fetchCurrencyValue(provider, resolvedCurrency, balance);\n }\n\n /**\n * Get the currently connected address\n * @example\n * ```javascript\n * const address = await sdk.wallet.getAddress();\n * ```\n */\n async getAddress() {\n return await this.requireWallet().getAddress();\n }\n\n /**\n * Get the currently connected wallet's chainId\n * @internal\n */\n async getChainId() {\n return await this.requireWallet().getChainId();\n }\n\n /**\n * Get the number of transactions sent from this address.\n * @param blockTag - Optional - the block tag to read the nonce from\n */\n async getNonce(blockTag) {\n const txCount = await this.connection.getProvider().getTransactionCount(await this.getAddress(), blockTag);\n return txCount;\n }\n\n /**\n * Checks whether there's a signer connected with the SDK\n * @internal\n */\n isConnected() {\n try {\n this.requireWallet();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Sign any message with the connected wallet private key\n * @param message - the message to sign\n * @returns the signed message\n *\n * @example\n * ```javascript\n * // This is the message to be signed\n * const message = \"Sign this message...\";\n *\n * // Now we can sign the message with the connected wallet\n * const signature = await sdk.wallet.sign(message);\n * ```\n */\n async sign(message) {\n const signer = this.requireWallet();\n return await signer.signMessage(message);\n }\n\n /**\n * Sign a typed data structure (EIP712) with the connected wallet private key\n * @param domain - the domain as EIP712 standard\n * @param types - the structure and data types as defined by the EIP712 standard\n * @param message - the data to sign\n * @returns the payload and its associated signature\n *\n * @example\n * ```javascript\n * // This is the message to be signed\n * // Now we can sign the message with the connected wallet\n * const { payload, signature } = await sdk.wallet.signTypedData(\n * {\n name: \"MyEIP721Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x...\",\n },\n { MyStruct: [ { name: \"to\", type: \"address\" }, { name: \"quantity\", type: \"uint256\" } ] },\n { to: \"0x...\", quantity: 1 },\n * );\n * ```\n */\n async signTypedData(domain, types, message) {\n return await signTypedDataInternal(this.requireWallet(), domain, types, message);\n }\n\n /**\n * Recover the signing address from a signed message\n * @param message - the original message that was signed\n * @param signature - the signature to recover the address from\n * @returns the address that signed the message\n *\n * @example\n * ```javascript\n * const message = \"Sign this message...\";\n * const signature = await sdk.wallet.sign(message);\n *\n * // Now we can recover the signing address\n * const address = sdk.wallet.recoverAddress(message, signature);\n * ```\n */\n recoverAddress(message, signature) {\n const messageHash = utils.hashMessage(message);\n const messageHashBytes = utils.arrayify(messageHash);\n return utils.recoverAddress(messageHashBytes, signature);\n }\n\n /**\n * Send a raw transaction to the blockchain from the connected wallet\n * @param transactionRequest - raw transaction data to send to the blockchain\n */\n async sendRawTransaction(transactionRequest) {\n const signer = this.requireWallet();\n const hasGasPrice = !!transactionRequest.gasPrice;\n const hasFeeData = !!transactionRequest.maxFeePerGas && !!transactionRequest.maxPriorityFeePerGas;\n const hasGasData = hasGasPrice || hasFeeData;\n if (!hasGasData) {\n // set default gas values\n const defaultGas = await getDefaultGasOverrides(this.connection.getProvider());\n transactionRequest.maxFeePerGas = defaultGas.maxFeePerGas;\n transactionRequest.maxPriorityFeePerGas = defaultGas.maxPriorityFeePerGas;\n transactionRequest.gasPrice = defaultGas.gasPrice;\n }\n return signer.sendTransaction(transactionRequest);\n }\n\n /**\n * Execute a raw transaction to the blockchain from the connected wallet and wait for it to be mined\n * @param transactionRequest - raw transaction data to send to the blockchain\n */\n async executeRawTransaction(transactionRequest) {\n const tx = await this.sendRawTransaction(transactionRequest);\n return {\n receipt: await tx.wait()\n };\n }\n\n /**\n * Request funds from a running local node to the currently connected wallet\n * @param amount - the amount in native currency (in ETH) to request\n */\n async requestFunds(amount) {\n const chainId = await this.getChainId();\n if (chainId === ChainId.Localhost || chainId === ChainId.Hardhat) {\n const localWallet = new UserWallet(new Wallet(LOCAL_NODE_PKEY, getChainProvider(chainId, this.options)), this.options, this.storage);\n return localWallet.transfer(await this.getAddress(), amount);\n } else {\n throw new Error(`Requesting funds is not supported on chain: '${chainId}'.`);\n }\n }\n\n /** ***********************\n * PRIVATE FUNCTIONS\n * ***********************/\n\n requireWallet() {\n const signer = this.connection.getSigner();\n invariant(signer, \"This action requires a connected wallet. Please pass a valid signer to the SDK.\");\n return signer;\n }\n createErc20(currencyAddress, ERC20Abi) {\n return new ContractWrapper(this.connection.getSignerOrProvider(), currencyAddress, ERC20Abi, this.options, this.storage);\n }\n}\n\n/**\n * Return all the detected features names in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected features names\n * @internal\n * @deprecated use getAllExtensionNames instead\n */\nfunction getAllDetectedFeatureNames(abi) {\n const features = [];\n extractFeatures(detectFeatures(abi), features);\n return features.map(f => f.name);\n}\n\n/**\n * Return all the detected extension names in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected features names\n * @public\n */\nfunction getAllDetectedExtensionNames(abi) {\n return getAllDetectedFeatureNames(abi);\n}\n\nfunction createStorage(storage, options) {\n if (storage) {\n return storage;\n } else if (options?.gatewayUrls) {\n return new ThirdwebStorage({\n gatewayUrls: options.gatewayUrls,\n clientId: options.clientId,\n secretKey: options.secretKey\n });\n } else {\n return new ThirdwebStorage({\n clientId: options?.clientId,\n secretKey: options?.secretKey\n });\n }\n}\n\n/**\n * @internal\n */\nclass MultichainRegistry {\n constructor(network, storage) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.storage = storage;\n this.registryLogic = new ContractWrapper(network, getMultichainRegistryAddress(), TWRegistryABI, options, storage);\n this.registryRouter = new ContractWrapper(network, getMultichainRegistryAddress(), TWRegistryRouterABI, options, storage);\n }\n async updateSigner(signer) {\n this.registryLogic.updateSignerOrProvider(signer);\n this.registryRouter.updateSignerOrProvider(signer);\n }\n async getContractMetadataURI(chainId, address) {\n return await this.registryLogic.read(\"getMetadataUri\", [chainId, await resolveAddress(address)]);\n }\n async getContractMetadata(chainId, address) {\n const uri = await this.getContractMetadataURI(chainId, address);\n if (!uri) {\n throw new Error(`No metadata URI found for contract ${address} on chain ${chainId}`);\n }\n // TODO define the metadata JSON schema\n return await this.storage.downloadJSON(uri);\n }\n async getContractAddresses(walletAddress) {\n return (await this.registryLogic.read(\"getAll\", [await resolveAddress(walletAddress)])).filter(result => utils.isAddress(result.deploymentAddress) && result.deploymentAddress.toLowerCase() !== constants.AddressZero).map(result => ({\n address: result.deploymentAddress,\n chainId: result.chainId.toNumber()\n }));\n }\n addContract = /* @__PURE__ */buildTransactionFunction(async contract => {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n return Transaction.fromContractWrapper({\n contractWrapper: this.registryLogic,\n method: \"add\",\n args: [deployerAddress, contract.address, contract.chainId, contract.metadataURI || \"\"]\n });\n });\n addContracts = /* @__PURE__ */buildTransactionFunction(async contracts => {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n const encoded = [];\n const contractEncoder = new ContractEncoder(this.registryLogic);\n contracts.forEach(contact => {\n encoded.push(contractEncoder.encode(\"add\", [deployerAddress, contact.address, contact.chainId, contact.metadataURI || \"\"]));\n });\n return Transaction.fromContractWrapper({\n contractWrapper: this.registryRouter,\n method: \"multicall\",\n args: [encoded]\n });\n });\n removeContract = /* @__PURE__ */buildTransactionFunction(async contract => {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n return Transaction.fromContractWrapper({\n contractWrapper: this.registryLogic,\n method: \"remove\",\n args: [deployerAddress, await resolveAddress(contract.address), contract.chainId]\n });\n });\n removeContracts = /* @__PURE__ */buildTransactionFunction(async contracts => {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n const contractEncoder = new ContractEncoder(this.registryLogic);\n const encoded = await Promise.all(contracts.map(async contract => contractEncoder.encode(\"remove\", [deployerAddress, await resolveAddress(contract.address), contract.chainId])));\n return Transaction.fromContractWrapper({\n contractWrapper: this.registryRouter,\n method: \"multicall\",\n args: [encoded]\n });\n });\n}\n\n/**\n *\n * @internal\n * @param contractName - The name of the contract to predict the address for\n * @param chainId - The chain id to use\n * @param storage - The storage to use\n */\nasync function getEncodedConstructorParamsForThirdwebContract(contractName, chainId, storage) {\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let clientId = arguments.length > 4 ? arguments[4] : undefined;\n let secretKey = arguments.length > 5 ? arguments[5] : undefined;\n let constructorParamMap = arguments.length > 6 ? arguments[6] : undefined;\n const provider = getChainProvider(chainId, {\n clientId,\n secretKey\n });\n const publishedContract = await fetchPublishedContractFromPolygon(THIRDWEB_DEPLOYER$1, contractName, contractVersion, storage, clientId, secretKey);\n const publishUri = publishedContract.metadataUri;\n const metadata = await fetchAndCacheDeployMetadata(publishUri, storage);\n const create2Factory = await getCreate2FactoryAddress(provider);\n invariant(create2Factory, \"Thirdweb stack not found\");\n const {\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishUri, storage);\n let encodedArgs;\n\n // if pluginMetadata is not empty, then it's a plugin-pattern router contract\n if (extendedMetadata?.routerType === \"plugin\" || extendedMetadata?.routerType === \"dynamic\") {\n const deploymentInfo = await getDeploymentInfo(publishUri, storage, provider, create2Factory, clientId, secretKey);\n encodedArgs = deploymentInfo.find(contract => contract.type === \"implementation\")?.encodedArgs;\n } else {\n encodedArgs = await encodeConstructorParamsForImplementation(metadata.compilerMetadata, provider, storage, create2Factory, constructorParamMap, clientId, secretKey);\n }\n return encodedArgs;\n}\n\n/**\n *\n * @public\n * @param contractName - The name of the contract to predict the address for\n * @param chainId - The chain id to use\n * @param storage - The storage to use\n */\nasync function predictThirdwebContractAddress(contractName, chainId, storage) {\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let clientId = arguments.length > 4 ? arguments[4] : undefined;\n let secretKey = arguments.length > 5 ? arguments[5] : undefined;\n const provider = getChainProvider(chainId, {\n clientId,\n secretKey\n });\n const publishedContract = await fetchPublishedContractFromPolygon(THIRDWEB_DEPLOYER$1, contractName, contractVersion, storage, clientId, secretKey);\n const publishUri = publishedContract.metadataUri;\n const create2Factory = await getCreate2FactoryAddress(provider);\n invariant(create2Factory, \"Thirdweb stack not found\");\n const {\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishUri, storage);\n if (extendedMetadata?.routerType === \"plugin\" || extendedMetadata?.routerType === \"dynamic\") {\n const deploymentInfo = await getDeploymentInfo(publishUri, storage, provider, create2Factory, clientId, secretKey);\n const implementation = deploymentInfo.find(contract => contract.type === \"implementation\")?.transaction.predictedAddress;\n invariant(implementation, \"Error computing address for plugin router\");\n return implementation;\n }\n const implementation = await computeDeploymentInfo(\"implementation\", provider, storage, create2Factory, {\n contractName: contractName\n }, clientId, secretKey);\n return implementation.transaction.predictedAddress;\n}\n\n/**\n *\n * @public\n * @param contractName - The name of the contract to predict the address for\n * @param chainId - The chain id to use\n * @param storage - The storage to use\n * @param clientId - The client id to use\n */\nasync function getThirdwebContractAddress(contractName, chainId, storage) {\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let clientId = arguments.length > 4 ? arguments[4] : undefined;\n let secretKey = arguments.length > 5 ? arguments[5] : undefined;\n const provider = getChainProvider(chainId, {\n clientId: clientId,\n secretKey: secretKey\n });\n const contractAddress = await predictThirdwebContractAddress(contractName, chainId, storage, contractVersion, clientId, secretKey);\n const isDeployed = await isContractDeployed(contractAddress, provider);\n invariant(isDeployed, \"Contract not deployed yet\");\n return contractAddress;\n}\n\nconst VerificationStatus = {\n FAILED: \"Fail - Unable to verify\",\n SUCCESS: \"Pass - Verified\",\n PENDING: \"Pending in queue\",\n ALREADY_VERIFIED: \"Contract source code already verified\",\n AUTOMATICALLY_VERIFIED: \"Already Verified\"\n};\n\nconst RequestStatus = {\n OK: \"1\",\n NOTOK: \"0\"\n};\n\n//\n// ==================================\n// ======== Core Functions ==========\n// ==================================\n//\n\n/**\n * @public\n *\n * Verifies a Thirdweb Prebuilt Contract, e.g. Marketplace, DropERC721, etc\n *\n * @example\n * ```javascript\n *\n * const explorerAPIUrl = \"\" // e.g. https://api.etherscan.io/api\n * const explorerAPIKey = \"\" // Generate API key on the explorer\n * const chainId = 1 // Change according to the network\n *\n * await sdk.verifier.verifyThirdwebPrebuiltImplementation(\n * \"DropERC721\",\n * chainId,\n * explorerAPIUrl,\n * explorerAPIKey,\n * storage // this could be used from the SDK instance, e.g. sdk.storage\n * );\n * ```\n * @param contractName - Name of the contract to verify\n * @param chainId - Chain ID of the network\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API Key\n * @param storage - Storage instance\n */\nasync function verifyThirdwebPrebuiltImplementation(contractName, chainId, explorerAPIUrl, explorerAPIKey, storage) {\n let contractVersion = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : \"latest\";\n let clientId = arguments.length > 6 ? arguments[6] : undefined;\n let secretKey = arguments.length > 7 ? arguments[7] : undefined;\n let constructorArgs = arguments.length > 8 ? arguments[8] : undefined;\n const contractAddress = await getThirdwebContractAddress(contractName, chainId, storage, contractVersion, clientId, secretKey);\n const encodedArgs = await getEncodedConstructorParamsForThirdwebContract(contractName, chainId, storage, contractVersion, clientId, secretKey, constructorArgs);\n console.info(`Verifying ${contractName} at address ${contractAddress}`);\n const guid = await verify(contractAddress, chainId, explorerAPIUrl, explorerAPIKey, storage, encodedArgs?.toString().replace(\"0x\", \"\"));\n return guid;\n}\n\n/**\n * @public\n *\n * Verifies any contract\n *\n * @example\n * ```javascript\n *\n * const contractAddress = \"\"\n * const explorerAPIUrl = \"\" // e.g. https://api.etherscan.io/api\n * const explorerAPIKey = \"\" // Generate API key on the explorer\n * const chainId = 1 // Change according to the network\n *\n * await sdk.verifier.verify(\n * contractAddress,\n * chainId,\n * explorerAPIUrl,\n * explorerAPIKey,\n * storage // this could be used from the SDK instance, e.g. sdk.storage\n * );\n * ```\n * @param contractAddress - Address of the contract to verify\n * @param chainId - Chain ID of the network\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API Key\n * @param storage - Storage instance\n */\nasync function verify(contractAddress, chainId, explorerAPIUrl, explorerAPIKey, storage, encodedConstructorArgs) {\n try {\n const provider = getChainProvider(chainId, {});\n const compilerMetadata = await fetchContractMetadataFromAddress(contractAddress, provider, storage);\n const compilerVersion = compilerMetadata.metadata.compiler.version;\n const sources = await fetchSourceFilesFromMetadata(compilerMetadata, storage);\n const sourcesWithUrl = compilerMetadata.metadata.sources;\n const sourcesWithContents = {};\n for (const path of Object.keys(sourcesWithUrl)) {\n const sourceCode = sources.find(source => path === source.filename);\n if (!sourceCode) {\n throw new Error(`Could not find source file for ${path}`);\n }\n sourcesWithContents[path] = {\n content: sourceCode.source\n };\n }\n const compilerInput = {\n language: \"Solidity\",\n sources: sourcesWithContents,\n settings: {\n optimizer: compilerMetadata.metadata.settings.optimizer,\n evmVersion: compilerMetadata.metadata.settings.evmVersion,\n remappings: compilerMetadata.metadata.settings.remappings,\n outputSelection: {\n \"*\": {\n \"*\": [\"abi\", \"evm.bytecode\", \"evm.deployedBytecode\", \"evm.methodIdentifiers\", \"metadata\"],\n \"\": [\"ast\"]\n }\n }\n }\n };\n const compilationTarget = compilerMetadata.metadata.settings.compilationTarget;\n const targets = Object.keys(compilationTarget);\n const contractPath = targets[0];\n const encodedArgs = encodedConstructorArgs ? encodedConstructorArgs : await fetchConstructorParams(explorerAPIUrl, explorerAPIKey, contractAddress, compilerMetadata.abi, provider, storage);\n const requestBody = {\n apikey: explorerAPIKey,\n module: \"contract\",\n action: \"verifysourcecode\",\n contractaddress: contractAddress,\n sourceCode: JSON.stringify(compilerInput),\n codeformat: \"solidity-standard-json-input\",\n contractname: `${contractPath}:${compilerMetadata.name}`,\n compilerversion: `v${compilerVersion}`,\n constructorArguements: encodedArgs\n };\n const parameters = new URLSearchParams({\n ...requestBody\n });\n const result = await fetch(explorerAPIUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n body: parameters.toString()\n });\n const data = await result.json();\n if (data.status === RequestStatus.OK) {\n return data.result;\n } else {\n throw new Error(`${data.result}`);\n }\n } catch (e) {\n throw new Error(e.toString());\n }\n}\n\n//\n// ==================================\n// ======== Helper Functions ========\n// ==================================\n//\n\n/**\n * @internal\n *\n * Check status of the contract submitted for verification to the explorer\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API Key\n * @param guid - GUID of the contract verification\n */\nasync function checkVerificationStatus(explorerAPIUrl, explorerAPIKey, guid) {\n const endpoint = `${explorerAPIUrl}?module=contract&action=checkverifystatus&guid=${guid}&apikey=${explorerAPIKey}\"`;\n return new Promise((resolve, reject) => {\n const intervalId = setInterval(async () => {\n try {\n const result = await fetch(endpoint, {\n method: \"GET\"\n });\n const data = await result.json();\n if (data?.result !== VerificationStatus.PENDING) {\n clearInterval(intervalId);\n resolve(data);\n }\n } catch (e) {\n clearInterval(intervalId);\n reject(e);\n }\n }, 3000);\n });\n}\n\n/**\n * @internal\n *\n * Check if the contract is already verified on etherscan\n * @param contractAddress - Address of the contract to verify\n * @param chainId - Chain ID of the network\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API Key\n *\n * @param clientId - Client ID: Get from https://thirdweb.com/create-api-key\n */\nasync function isVerifiedOnEtherscan(contractAddress, chainId, explorerAPIUrl, explorerAPIKey, clientId) {\n const provider = getChainProvider(chainId, {\n clientId\n });\n invariant(await isContractDeployed(contractAddress, provider), \"Contract not deployed yet.\");\n const endpoint = `${explorerAPIUrl}?module=contract&action=getsourcecode&address=${contractAddress}&apikey=${explorerAPIKey}\"`;\n try {\n const result = await fetch(endpoint, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json;charset=UTF-8\"\n }\n });\n const data = await result.json();\n const etherscanResult = data.result[0];\n if (etherscanResult.ABI === \"Contract source code not verified\") {\n return false;\n }\n return true;\n } catch (e) {\n throw new Error(`Error checking verification for contract ${contractAddress}: ${e}`);\n }\n}\n\n/**\n * @internal\n *\n * Fetch the deploy transaction from the given contract address and extract the encoded constructor parameters\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API Key\n * @param contractAddress - Address of the contract to verify\n * @param abi - ABI of the contract to verify\n * @param provider - Provider instance\n * @param storage - Storage instance\n */\nasync function fetchConstructorParams(explorerAPIUrl, explorerAPIKey, contractAddress, abi, provider, storage) {\n const constructorParamTypes = extractConstructorParamsFromAbi(abi);\n if (constructorParamTypes.length === 0) {\n return \"\";\n }\n const requestBody = {\n apiKey: explorerAPIKey,\n module: \"account\",\n action: \"txlist\",\n address: contractAddress,\n page: \"1\",\n sort: \"asc\",\n offset: \"1\"\n };\n const parameters = new URLSearchParams({\n ...requestBody\n });\n const result = await fetch(explorerAPIUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n body: parameters.toString()\n });\n const data = await result.json();\n if (data && data.status === RequestStatus.OK && data.result[0] !== undefined) {\n const contract = new utils.Interface(abi);\n const txDeployBytecode = data.result[0].input;\n let constructorArgs = \"\";\n if (contract.deploy.inputs.length === 0) {\n return \"\";\n }\n\n // first: attempt to get it from Publish\n try {\n const bytecode = await fetchDeployBytecodeFromPublishedContractMetadata(contractAddress, provider, storage);\n if (bytecode) {\n // contract was realeased, use the deployable bytecode method (proper solution)\n const bytecodeHex = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n constructorArgs = txDeployBytecode.substring(bytecodeHex.length);\n }\n } catch (e) {\n // contracts not published through thirdweb\n }\n\n // second: attempt to decode it from solc metadata bytecode\n if (!constructorArgs) {\n // couldn't find bytecode from Publish, using regex to locate consturctor args thruogh solc metadata\n // https://docs.soliditylang.org/en/v0.8.17/metadata.html#encoding-of-the-metadata-hash-in-the-bytecode\n // {6} = solc version\n // {4} = 0033, but noticed some contracts have values other than 00 33. (uniswap)\n const matches = [...txDeployBytecode.matchAll(/(64736f6c6343[\\w]{6}[\\w]{4})(?!.*\\1)(.*)$/g)];\n\n // regex finds the LAST occurence of solc metadata bytes, result always in same position\n if (matches.length > 0) {\n // TODO: we currently don't handle error string embedded in the bytecode, need to strip ascii (upgradeableProxy) in patterns[2]\n // https://etherscan.io/address/0xee6a57ec80ea46401049e92587e52f5ec1c24785#code\n constructorArgs = matches[0][2];\n }\n }\n\n // third: attempt to guess it from the ABI inputs\n if (!constructorArgs) {\n // TODO: need to guess array / struct properly\n const constructorParamByteLength = constructorParamTypes.length * 64;\n constructorArgs = txDeployBytecode.substring(txDeployBytecode.length - constructorParamByteLength);\n }\n try {\n // sanity check that the constructor params are valid\n // TODO: should we sanity check after each attempt?\n utils.defaultAbiCoder.decode(contract.deploy.inputs, `0x${constructorArgs}`);\n } catch (e) {\n throw new Error(\"Verifying this contract requires it to be published. Run `npx thirdweb publish` to publish this contract, then try again.\");\n }\n return constructorArgs;\n } else {\n // Could not retrieve constructor parameters, using empty parameters as fallback\n return \"\";\n }\n}\n\n/**\n * @internal\n *\n * Fetches the Publish metadata on the ContractPublisher registry (on polygon) for the given contract address (on any chain)\n * @param contractAddress - Address of the contract to verify\n * @param provider - Provider instance\n * @param storage - Storage instance\n * @returns\n */\nasync function fetchDeployBytecodeFromPublishedContractMetadata(contractAddress, provider, storage) {\n const compilerMetaUri = await resolveContractUriFromAddress(contractAddress, provider);\n if (compilerMetaUri) {\n const ContractPublisherAbi = (await import('@thirdweb-dev/contracts-js/dist/abis/ContractPublisher.json')).default;\n const contract = new Contract(getContractPublisherAddress(), ContractPublisherAbi, getChainProvider(\"polygon\", {}));\n const publishedMetadataUri = await contract.getPublishedUriFromCompilerUri(compilerMetaUri);\n if (publishedMetadataUri.length === 0) {\n throw Error(`Could not resolve published metadata URI from ${compilerMetaUri}`);\n }\n const pubmeta = await Promise.all(publishedMetadataUri.filter(uri => uri.length > 0).map(uri => fetchExtendedReleaseMetadata(uri, storage)));\n return pubmeta.length > 0 ? await (await storage.download(pubmeta[0].bytecodeUri)).text() : undefined;\n }\n return undefined;\n}\n\n/**\n * Handles verification of new contracts on any EVM\n * @public\n */\nclass ContractVerifier extends RPCConnectionHandler {\n constructor(network, options, storage) {\n super(network, options);\n this.storage = storage;\n }\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n }\n\n /**\n * Verifies a Thirdweb contract\n *\n * @example\n * ```javascript\n *\n * // Note: If verifying on a network different from the SDK instance's network,\n * // update the verifier's chain/network as below:\n * //\n * // sdk.verifier.updateSignerOrProvider(chainId);\n *\n * const explorerAPIUrl = \"\" // e.g. https://api.etherscan.io/api\n * const explorerAPIKey = \"\" // Generate API key on the explorer\n *\n * await sdk.verifier.verifyThirdwebContract(\n * \"DropERC721\",\n * explorerAPIUrl,\n * explorerAPIKey,\n * );\n * ```\n * @param contractName - Name of the contract to verify\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API key\n */\n async verifyThirdwebContract(contractName, explorerAPIUrl, explorerAPIKey) {\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let constructorArgs = arguments.length > 4 ? arguments[4] : undefined;\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const guid = await verifyThirdwebPrebuiltImplementation(contractName, chainId, explorerAPIUrl, explorerAPIKey, this.storage, contractVersion, this.options.clientId, this.options.secretKey, constructorArgs);\n console.info(\"Checking verification status...\");\n const verificationStatus = await checkVerificationStatus(explorerAPIUrl, explorerAPIKey, guid);\n console.info(verificationStatus);\n }\n\n /**\n * Verifies any contract\n *\n * @example\n * ```javascript\n *\n * // Note: If verifying on a network different from the SDK instance's network,\n * // update the verifier's chain/network as below:\n * //\n * // sdk.verifier.updateSignerOrProvider(chainId);\n *\n * const contractAddress = \"\"\n * const explorerAPIUrl = \"\" // e.g. https://api.etherscan.io/api\n * const explorerAPIKey = \"\" // Generate API key on the explorer\n *\n * await sdk.verifier.verifyContract(\n * contractAddress,\n * explorerAPIUrl,\n * explorerAPIKey,\n * );\n * ```\n * @param contractAddress - Address of the contract to verify\n * @param explorerAPIUrl - Explorer API URL\n * @param explorerAPIKey - Explorer API key\n */\n async verifyContract(contractAddress, explorerAPIUrl, explorerAPIKey, constructorArgs) {\n const chainId = (await this.getProvider().getNetwork()).chainId;\n let encodedArgs;\n if (constructorArgs) {\n const paramTypes = Object.values(constructorArgs).map(arg => {\n invariant(arg.type, \"Param type is required\");\n return arg.type;\n });\n const paramValues = Object.values(constructorArgs).map(arg => {\n return arg.value;\n });\n encodedArgs = utils.defaultAbiCoder.encode(paramTypes, paramValues);\n }\n const guid = await verify(contractAddress, chainId, explorerAPIUrl, explorerAPIKey, this.storage, encodedArgs);\n console.info(\"Checking verification status...\");\n const verificationStatus = await checkVerificationStatus(explorerAPIUrl, explorerAPIKey, guid);\n console.info(verificationStatus);\n }\n}\n\n/**\n *\n * @param abi - The abi to extract params from\n * @param functionName - The function name to extract params from\n * @returns\n * @internal\n */\nfunction extractFunctionParamsFromAbi(abi, functionName) {\n const parsedAbi = AbiSchema.parse(abi || []);\n for (const input of parsedAbi) {\n if (input.type === \"function\" && input.name === functionName) {\n return input.inputs || [];\n }\n }\n return [];\n}\n\n/**\n *\n * @internal\n * @param provider - The provider to use\n * @param storage - The storage to use\n * @param create2Factory - The create2 factory to use\n */\nasync function computeCloneFactoryAddress(provider, storage, create2Factory, clientId, secretKey) {\n if (!create2Factory) {\n create2Factory = await getCreate2FactoryAddress(provider);\n }\n return (await computeDeploymentInfo(\"infra\", provider, storage, create2Factory, {\n contractName: \"TWCloneFactory\"\n }, clientId, secretKey)).transaction.predictedAddress;\n}\n\nfunction convertParamValues(constructorParamTypes, constructorParamValues) {\n // check that both arrays are same length\n if (constructorParamTypes.length !== constructorParamValues.length) {\n throw Error(`Passed the wrong number of constructor arguments: ${constructorParamValues.length}, expected ${constructorParamTypes.length}`);\n }\n return constructorParamTypes.map((p, index) => {\n if (p === \"tuple\" || p.endsWith(\"[]\")) {\n if (typeof constructorParamValues[index] === \"string\") {\n return JSON.parse(constructorParamValues[index]);\n } else {\n return constructorParamValues[index];\n }\n }\n if (p === \"bytes32\") {\n invariant(utils.isHexString(constructorParamValues[index]), `Could not parse bytes32 value. Expected valid hex string but got \"${constructorParamValues[index]}\".`);\n return utils.hexZeroPad(constructorParamValues[index], 32);\n }\n if (p.startsWith(\"bytes\")) {\n invariant(utils.isHexString(constructorParamValues[index]), `Could not parse bytes value. Expected valid hex string but got \"${constructorParamValues[index]}\".`);\n return constructorParamValues[index];\n }\n if (p.startsWith(\"uint\") || p.startsWith(\"int\")) {\n return BigNumber.from(constructorParamValues[index].toString());\n }\n return constructorParamValues[index];\n });\n}\n\n/**\n * Deploy Nick's Create2 factory on a given network.\n * Deployment is keyless. Signer is needed to fund the keyless signer address.\n * Ref: https://github.com/Arachnid/deterministic-deployment-proxy\n *\n * @public\n * @param signer - The signer to use\n */\nasync function deployCreate2Factory(signer, options) {\n invariant(signer.provider, \"No provider\");\n const commonFactoryExists = await isContractDeployed(COMMON_FACTORY, signer.provider);\n if (commonFactoryExists) {\n return COMMON_FACTORY;\n }\n const enforceEip155 = await isEIP155Enforced(signer.provider);\n const networkId = (await signer.provider.getNetwork()).chainId;\n const chainId = enforceEip155 ? networkId : 0;\n console.debug(`ChainId ${networkId} enforces EIP155: ${enforceEip155}`);\n const deploymentInfo = CUSTOM_GAS_FOR_CHAIN[networkId] ? getCreate2FactoryDeploymentInfo(chainId, {\n gasPrice: CUSTOM_GAS_FOR_CHAIN[networkId].gasPrice,\n gasLimit: CUSTOM_GAS_FOR_CHAIN[networkId].gasLimit\n }) : getCreate2FactoryDeploymentInfo(chainId, {});\n const factoryExists = await isContractDeployed(deploymentInfo.deployment, signer.provider);\n\n // deploy community factory if not already deployed\n if (!factoryExists) {\n const gasPrice = CUSTOM_GAS_FOR_CHAIN[networkId]?.gasPrice ? CUSTOM_GAS_FOR_CHAIN[networkId].gasPrice : 100 * 10 ** 9;\n const gasLimit = CUSTOM_GAS_FOR_CHAIN[networkId]?.gasLimit ? CUSTOM_GAS_FOR_CHAIN[networkId].gasLimit : 100000;\n invariant(gasLimit, \"gasLimit undefined for create2 factory deploy\");\n invariant(gasPrice, \"gasPrice undefined for create2 factory deploy\");\n\n // send balance to the keyless signer\n const valueToSend = BigNumber.from(gasPrice).mul(gasLimit);\n if ((await signer.provider.getBalance(deploymentInfo.signer)).lt(valueToSend)) {\n await (await signer.sendTransaction({\n to: deploymentInfo.signer,\n value: valueToSend\n })).wait();\n }\n\n // deploy\n try {\n console.debug(`deploying CREATE2 factory at: ${deploymentInfo.deployment}`);\n options?.notifier?.(\"deploying\", \"create2Factory\");\n await (await signer.provider.sendTransaction(deploymentInfo.transaction)).wait();\n options?.notifier?.(\"deployed\", \"create2Factory\");\n } catch (err) {\n throw new Error(`Couldn't deploy CREATE2 factory: ${JSON.stringify(err)}`);\n }\n }\n return deploymentInfo.deployment;\n}\n\n/**\n * @public\n */\nconst SUPPORTED_CHAIN_IDS = [ChainId.Mainnet, ChainId.Goerli, ChainId.Polygon, ChainId.Mumbai, ChainId.Fantom, ChainId.FantomTestnet, ChainId.Avalanche, ChainId.AvalancheFujiTestnet, ChainId.Optimism, ChainId.OptimismGoerli, ChainId.Arbitrum, ChainId.ArbitrumGoerli, ChainId.BinanceSmartChainMainnet, ChainId.BinanceSmartChainTestnet, ChainId.Hardhat, ChainId.Localhost];\n\n/**\n *\n * @param chainId - chain id\n * @returns the array of trusted forwarders for the given chain id\n * @internal\n */\nfunction getDefaultTrustedForwarders(chainId) {\n const chainEnum = SUPPORTED_CHAIN_IDS.find(c => c === chainId);\n const biconomyForwarder = chainEnum ? CONTRACT_ADDRESSES[chainEnum]?.biconomyForwarder : AddressZero;\n const openzeppelinForwarder = chainEnum ? CONTRACT_ADDRESSES[chainEnum]?.openzeppelinForwarder : AddressZero;\n return [openzeppelinForwarder, biconomyForwarder].filter(a => a !== AddressZero);\n}\n\n/**\n *\n * @param contractType - The contract type to get deploy arguments for\n * @param metadata - The metadata to get deploy arguments for\n * @param contractURI - The contract URI to get deploy arguments for\n * @returns\n * @internal\n */\nasync function getDeployArguments(contractType, metadata, contractURI, signer, storage) {\n const chainId = await signer.getChainId();\n const signerAddress = await signer.getAddress();\n const chainEnum = SUPPORTED_CHAIN_IDS.find(c => c === chainId);\n let trustedForwarders = [];\n if (!chainEnum) {\n const forwarder = await computeForwarderAddress(signer.provider, storage);\n trustedForwarders = [forwarder];\n } else {\n trustedForwarders = contractType === PackInitializer.contractType ? [] : getDefaultTrustedForwarders(chainId);\n }\n\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n switch (contractType) {\n case NFTDropInitializer.contractType:\n case NFTCollectionInitializer.contractType:\n const erc721metadata = await NFTDropInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, erc721metadata.name, erc721metadata.symbol, contractURI, trustedForwarders, erc721metadata.primary_sale_recipient, erc721metadata.fee_recipient, erc721metadata.seller_fee_basis_points, erc721metadata.platform_fee_basis_points, erc721metadata.platform_fee_recipient];\n case SignatureDropInitializer.contractType:\n const signatureDropmetadata = await SignatureDropInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, signatureDropmetadata.name, signatureDropmetadata.symbol, contractURI, trustedForwarders, signatureDropmetadata.primary_sale_recipient, signatureDropmetadata.fee_recipient, signatureDropmetadata.seller_fee_basis_points, signatureDropmetadata.platform_fee_basis_points, signatureDropmetadata.platform_fee_recipient];\n case MultiwrapInitializer.contractType:\n const multiwrapMetadata = await MultiwrapInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, multiwrapMetadata.name, multiwrapMetadata.symbol, contractURI, trustedForwarders, multiwrapMetadata.fee_recipient, multiwrapMetadata.seller_fee_basis_points];\n case EditionDropInitializer.contractType:\n case EditionInitializer.contractType:\n const erc1155metadata = await EditionDropInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, erc1155metadata.name, erc1155metadata.symbol, contractURI, trustedForwarders, erc1155metadata.primary_sale_recipient, erc1155metadata.fee_recipient, erc1155metadata.seller_fee_basis_points, erc1155metadata.platform_fee_basis_points, erc1155metadata.platform_fee_recipient];\n case TokenDropInitializer.contractType:\n case TokenInitializer.contractType:\n const erc20metadata = await TokenInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, erc20metadata.name, erc20metadata.symbol, contractURI, trustedForwarders, erc20metadata.primary_sale_recipient, erc20metadata.platform_fee_recipient, erc20metadata.platform_fee_basis_points];\n case VoteInitializer.contractType:\n const voteMetadata = await VoteInitializer.schema.deploy.parseAsync(metadata);\n return [voteMetadata.name, contractURI, trustedForwarders, voteMetadata.voting_token_address, voteMetadata.voting_delay_in_blocks, voteMetadata.voting_period_in_blocks, BigNumber.from(voteMetadata.proposal_token_threshold), voteMetadata.voting_quorum_fraction];\n case SplitInitializer.contractType:\n const splitsMetadata = await SplitInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, contractURI, trustedForwarders, splitsMetadata.recipients.map(s => s.address), splitsMetadata.recipients.map(s => BigNumber.from(s.sharesBps))];\n case MarketplaceInitializer.contractType:\n case MarketplaceV3Initializer.contractType:\n const marketplaceMetadata = await MarketplaceInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, contractURI, trustedForwarders, marketplaceMetadata.platform_fee_recipient, marketplaceMetadata.platform_fee_basis_points];\n case PackInitializer.contractType:\n const packsMetadata = await PackInitializer.schema.deploy.parseAsync(metadata);\n return [signerAddress, packsMetadata.name, packsMetadata.symbol, contractURI, trustedForwarders, packsMetadata.fee_recipient, packsMetadata.seller_fee_basis_points];\n default:\n return [];\n }\n}\nasync function getTrustedForwarders(provider, storage, contractName) {\n const chainId = (await provider.getNetwork()).chainId;\n const chainEnum = SUPPORTED_CHAIN_IDS.find(c => c === chainId);\n const trustedForwarders = contractName && contractName === PackInitializer.name ? [] : chainEnum ? getDefaultTrustedForwarders(chainId) : [await computeForwarderAddress(provider, storage)]; // TODO: make this default for all chains (standard + others)\n\n return trustedForwarders;\n}\n\n// @deprecated - should not be needed anymore, rely on the publish data instead\nconst APPROVED_IMPLEMENTATIONS = {\n [ChainId.Mainnet]: {\n \"nft-drop\": \"0x60fF9952e0084A6DEac44203838cDC91ABeC8736\",\n \"edition-drop\": \"0x74af262d0671F378F97a1EDC3d0970Dbe8A1C550\",\n \"token-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\",\n \"signature-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\"\n },\n [ChainId.Polygon]: {\n \"nft-drop\": \"0xB96508050Ba0925256184103560EBADA912Fcc69\",\n \"edition-drop\": \"0x74af262d0671F378F97a1EDC3d0970Dbe8A1C550\",\n \"token-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\",\n \"signature-drop\": \"0xBE2fDc35410E268e41Bec62DBb01AEb43245c7d5\"\n },\n [ChainId.Fantom]: {\n \"nft-drop\": \"0x2A396b2D90BAcEF19cDa973586B2633d22710fC2\",\n \"edition-drop\": \"0x06395FCF9AC6ED827f9dD6e776809cEF1Be0d21B\",\n \"token-drop\": \"0x0148b28a38efaaC31b6aa0a6D9FEb70FE7C91FFa\",\n \"signature-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\"\n },\n [ChainId.Avalanche]: {\n \"nft-drop\": \"0x9cF91118C8ee2913F0588e0F10e36B3d63F68bF6\",\n \"edition-drop\": \"0x135fC9D26E5eC51260ece1DF4ED424E2f55c7766\",\n \"token-drop\": \"0xca0B071899E575BA86495D46c5066971b6f3A901\",\n \"signature-drop\": \"0x1d47526C3292B0130ef0afD5F02c1DA052A017B3\"\n },\n [ChainId.Optimism]: {\n \"nft-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\",\n \"edition-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\",\n \"token-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"signature-drop\": \"0x8a4cd3549e548bbEEb38C16E041FFf040a5acabD\"\n },\n [ChainId.Arbitrum]: {\n \"nft-drop\": \"0xC4903c1Ff5367b9ac2c349B63DC2409421AaEE2a\",\n \"edition-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"token-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\",\n \"signature-drop\": \"0x2dF9851af45dd41C8584ac55D983C604da985Bc7\"\n },\n [ChainId.BinanceSmartChainMainnet]: {\n \"nft-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"edition-drop\": \"0x2A396b2D90BAcEF19cDa973586B2633d22710fC2\",\n \"token-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\",\n \"signature-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\"\n },\n [ChainId.Goerli]: {\n \"nft-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"edition-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\",\n \"token-drop\": \"0x5680933221B752EB443654a014f88B101F868d50\",\n \"signature-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\"\n },\n [ChainId.Mumbai]: {\n \"nft-drop\": \"0xC4903c1Ff5367b9ac2c349B63DC2409421AaEE2a\",\n \"edition-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"token-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\",\n \"signature-drop\": \"0x2dF9851af45dd41C8584ac55D983C604da985Bc7\"\n },\n [ChainId.FantomTestnet]: {\n \"nft-drop\": \"0x8a4cd3549e548bbEEb38C16E041FFf040a5acabD\",\n \"edition-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"token-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\",\n \"signature-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\"\n },\n [ChainId.AvalancheFujiTestnet]: {\n \"nft-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"edition-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\",\n \"token-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\",\n \"signature-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\"\n },\n [ChainId.OptimismGoerli]: {\n \"nft-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"edition-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\",\n \"token-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"signature-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\"\n },\n [ChainId.ArbitrumGoerli]: {\n \"nft-drop\": \"0x9CfE807a5b124b962064Fa8F7FD823Cc701255b6\",\n \"edition-drop\": \"0x9cF91118C8ee2913F0588e0F10e36B3d63F68bF6\",\n \"token-drop\": \"0x1d47526C3292B0130ef0afD5F02c1DA052A017B3\",\n \"signature-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\"\n },\n [ChainId.BinanceSmartChainTestnet]: {\n \"nft-drop\": \"\",\n \"edition-drop\": \"\",\n \"token-drop\": \"\",\n \"signature-drop\": \"\" // TODO\n },\n\n [ChainId.Hardhat]: {\n \"nft-drop\": \"\",\n \"edition-drop\": \"\",\n \"token-drop\": \"\",\n \"signature-drop\": \"\" // TODO\n },\n\n [ChainId.Localhost]: {\n \"nft-drop\": \"\",\n \"edition-drop\": \"\",\n \"token-drop\": \"\",\n \"signature-drop\": \"\" // TODO\n }\n};\n\n/**\n * @internal\n * @param chainId - The chainId to get the approved implementation for\n * @param contractType - The contract type to get the approved implementation for\n */\nfunction getApprovedImplementation(chainId,\n// TODO use SupportedChainId once we deploy to all chains\ncontractType) {\n if (chainId in APPROVED_IMPLEMENTATIONS) {\n const approvedImpls = APPROVED_IMPLEMENTATIONS[chainId];\n if (contractType in approvedImpls) {\n return approvedImpls[contractType];\n }\n }\n return null;\n}\n\n/**\n * @internal\n */\nclass ContractFactory extends ContractWrapper {\n // Map from contract type to version to deploy specific versions by default\n DEFAULT_VERSION_MAP = {\n [NFTDropInitializer.contractType]: 3,\n [NFTCollectionInitializer.contractType]: 1,\n [SignatureDropInitializer.contractType]: 4,\n [MultiwrapInitializer.contractType]: 1,\n [EditionDropInitializer.contractType]: 2,\n [EditionInitializer.contractType]: 1,\n [TokenDropInitializer.contractType]: 2,\n [TokenInitializer.contractType]: 1,\n [VoteInitializer.contractType]: 1,\n [SplitInitializer.contractType]: 1,\n [MarketplaceInitializer.contractType]: 2,\n [MarketplaceV3Initializer.contractType]: 3,\n [PackInitializer.contractType]: 2\n };\n constructor(factoryAddr, network, storage, options) {\n super(network, factoryAddr, TWFactoryAbi, options, storage);\n this.storage = storage;\n }\n deploy = /* @__PURE__ */buildTransactionFunction(async (contractType, contractMetadata, eventEmitter, version, options, onExecute) => {\n const contract = PREBUILT_CONTRACTS_MAP[contractType];\n const metadata = await contract.schema.deploy.parseAsync(contractMetadata);\n\n // TODO: is there any special pre-processing we need to do before uploading?\n const contractURI = await this.storage.upload(metadata);\n const implementationAddress = (await this.getImplementation(contract, version)) || undefined;\n if (!implementationAddress || implementationAddress === constants.AddressZero) {\n throw new Error(`No implementation found for ${contractType}`);\n }\n const ABI = await contract.getAbi(implementationAddress, this.getProvider(), this.storage);\n const signer = this.getSigner();\n invariant(signer, \"A signer is required to deploy contracts\");\n const args = await getDeployArguments(contractType, metadata, contractURI, signer, this.storage);\n const encodedFunc = Contract.getInterface(ABI).encodeFunctionData(\"initialize\", args);\n const blockNumber = await this.getProvider().getBlockNumber();\n const salt = options?.saltForProxyDeploy ? utils.id(options.saltForProxyDeploy) : utils.formatBytes32String(blockNumber.toString());\n return Transaction.fromContractWrapper({\n contractWrapper: this,\n method: \"deployProxyByImplementation\",\n args: [implementationAddress, encodedFunc, salt],\n parse: receipt => {\n if (onExecute) {\n onExecute();\n }\n const events = this.parseLogs(\"ProxyDeployed\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ProxyDeployed event found\");\n }\n const contractAddress = events[0].args.proxy;\n eventEmitter.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress,\n transactionHash: receipt.transactionHash\n });\n return contractAddress;\n }\n });\n });\n\n // TODO once IContractFactory is implemented, this can be probably be moved to its own class\n deployProxyByImplementation = /* @__PURE__ */buildTransactionFunction(async (implementationAddress, implementationAbi, initializerFunction, initializerArgs, eventEmitter, saltForProxyDeploy, onExecute) => {\n const encodedFunc = Contract.getInterface(implementationAbi).encodeFunctionData(initializerFunction, initializerArgs);\n const blockNumber = await this.getProvider().getBlockNumber();\n const salt = saltForProxyDeploy ? utils.id(saltForProxyDeploy) : utils.formatBytes32String(blockNumber.toString());\n return Transaction.fromContractWrapper({\n contractWrapper: this,\n method: \"deployProxyByImplementation\",\n args: [implementationAddress, encodedFunc, salt],\n parse: receipt => {\n if (onExecute) {\n onExecute();\n }\n const events = this.parseLogs(\"ProxyDeployed\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ProxyDeployed event found\");\n }\n const contractAddress = events[0].args.proxy;\n eventEmitter.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress,\n transactionHash: receipt.transactionHash\n });\n return contractAddress;\n }\n });\n });\n\n /**\n *\n * @param contractType - the contract type to deploy\n * @param metadata - the metadata for the contract\n * @param contractURI - the contract URI\n * @returns\n * @internal\n */\n async getDeployArguments(contractType, metadata, contractURI) {\n let trustedForwarders = contractType === PackInitializer.contractType ? [] : await this.getDefaultTrustedForwarders();\n // override default forwarders if custom ones are passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders = metadata.trusted_forwarders;\n }\n switch (contractType) {\n case NFTDropInitializer.contractType:\n case NFTCollectionInitializer.contractType:\n const erc721metadata = await NFTDropInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), erc721metadata.name, erc721metadata.symbol, contractURI, trustedForwarders, erc721metadata.primary_sale_recipient, erc721metadata.fee_recipient, erc721metadata.seller_fee_basis_points, erc721metadata.platform_fee_basis_points, erc721metadata.platform_fee_recipient];\n case SignatureDropInitializer.contractType:\n const signatureDropmetadata = await SignatureDropInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), signatureDropmetadata.name, signatureDropmetadata.symbol, contractURI, trustedForwarders, signatureDropmetadata.primary_sale_recipient, signatureDropmetadata.fee_recipient, signatureDropmetadata.seller_fee_basis_points, signatureDropmetadata.platform_fee_basis_points, signatureDropmetadata.platform_fee_recipient];\n case MultiwrapInitializer.contractType:\n const multiwrapMetadata = await MultiwrapInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), multiwrapMetadata.name, multiwrapMetadata.symbol, contractURI, trustedForwarders, multiwrapMetadata.fee_recipient, multiwrapMetadata.seller_fee_basis_points];\n case EditionDropInitializer.contractType:\n case EditionInitializer.contractType:\n const erc1155metadata = await EditionDropInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), erc1155metadata.name, erc1155metadata.symbol, contractURI, trustedForwarders, erc1155metadata.primary_sale_recipient, erc1155metadata.fee_recipient, erc1155metadata.seller_fee_basis_points, erc1155metadata.platform_fee_basis_points, erc1155metadata.platform_fee_recipient];\n case TokenDropInitializer.contractType:\n case TokenInitializer.contractType:\n const erc20metadata = await TokenInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), erc20metadata.name, erc20metadata.symbol, contractURI, trustedForwarders, erc20metadata.primary_sale_recipient, erc20metadata.platform_fee_recipient, erc20metadata.platform_fee_basis_points];\n case VoteInitializer.contractType:\n const voteMetadata = await VoteInitializer.schema.deploy.parseAsync(metadata);\n return [voteMetadata.name, contractURI, trustedForwarders, voteMetadata.voting_token_address, voteMetadata.voting_delay_in_blocks, voteMetadata.voting_period_in_blocks, BigNumber.from(voteMetadata.proposal_token_threshold), voteMetadata.voting_quorum_fraction];\n case SplitInitializer.contractType:\n const splitsMetadata = await SplitInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, splitsMetadata.recipients.map(s => s.address), splitsMetadata.recipients.map(s => BigNumber.from(s.sharesBps))];\n case MarketplaceInitializer.contractType:\n const marketplaceMetadata = await MarketplaceInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, marketplaceMetadata.platform_fee_recipient, marketplaceMetadata.platform_fee_basis_points];\n case MarketplaceV3Initializer.contractType:\n const marketplaceV3Metadata = await MarketplaceV3Initializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, marketplaceV3Metadata.platform_fee_recipient, marketplaceV3Metadata.platform_fee_basis_points];\n case PackInitializer.contractType:\n const packsMetadata = await PackInitializer.schema.deploy.parseAsync(metadata);\n return [await this.getSignerAddress(), packsMetadata.name, packsMetadata.symbol, contractURI, trustedForwarders, packsMetadata.fee_recipient, packsMetadata.seller_fee_basis_points];\n default:\n return [];\n }\n }\n async getDefaultTrustedForwarders() {\n const chainId = await this.getChainID();\n return getDefaultTrustedForwarders(chainId);\n }\n async getImplementation(contract, version) {\n const encodedType = utils.formatBytes32String(contract.name);\n const chainId = await this.getChainID();\n const approvedImplementation = getApprovedImplementation(chainId, contract.contractType);\n // return approved implementation if it exists and we're not overriding the version\n if (approvedImplementation && approvedImplementation.length > 0 && version === undefined) {\n return approvedImplementation;\n }\n return this.read(\"getImplementation\", [encodedType, version !== undefined ? version : this.DEFAULT_VERSION_MAP[contract.contractType]]);\n }\n async getLatestVersion(contractType) {\n const name = getContractName(contractType);\n if (!name) {\n throw new Error(`Invalid contract type ${contractType}`);\n }\n const encodedType = utils.formatBytes32String(name);\n return this.read(\"currentVersion\", [encodedType]);\n }\n}\n\n/**\n * @internal\n */\nclass ContractRegistry extends ContractWrapper {\n constructor(registryAddress, network, storage, TWRegistryABI, options) {\n super(network, registryAddress, TWRegistryABI, options, storage);\n }\n async getContractAddresses(walletAddress) {\n // TODO @fixme the filter here is necessary because for some reason getAll returns a 0x0 address for the first entry\n return (await this.read(\"getAll\", [await resolveAddress(walletAddress)])).filter(adr => utils.isAddress(adr) && adr.toLowerCase() !== constants.AddressZero);\n }\n addContract = /* @__PURE__ */buildTransactionFunction(async contractAddress => {\n return await this.addContracts.prepare([contractAddress]);\n });\n addContracts = /* @__PURE__ */buildTransactionFunction(async contractAddresses => {\n const deployerAddress = await this.getSignerAddress();\n const contractEncoder = new ContractEncoder(this);\n const encoded = (await Promise.all(contractAddresses.map(addr => resolveAddress(addr)))).map(address => contractEncoder.encode(\"add\", [deployerAddress, address]));\n return Transaction.fromContractWrapper({\n contractWrapper: this,\n method: \"multicall\",\n args: [encoded]\n });\n });\n removeContract = /* @__PURE__ */buildTransactionFunction(async contractAddress => {\n return await this.removeContracts.prepare([contractAddress]);\n });\n removeContracts = /* @__PURE__ */buildTransactionFunction(async contractAddresses => {\n const deployerAddress = await this.getSignerAddress();\n const contractEncoder = new ContractEncoder(this);\n const encoded = (await Promise.all(contractAddresses.map(addr => resolveAddress(addr)))).map(address => contractEncoder.encode(\"remove\", [deployerAddress, address]));\n return Transaction.fromContractWrapper({\n contractWrapper: this,\n method: \"multicall\",\n args: [encoded]\n });\n });\n}\n\nconst LoyaltyCardContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema))();\nconst LoyaltyCardContractDeploy = /* @__PURE__ */(() => LoyaltyCardContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema))();\n\nconst AirdropContractInput = /* @__PURE__ */(() => CommonContractSchema.merge(CommonSymbolSchema))();\nconst AirdropContractDeploy = /* @__PURE__ */(() => AirdropContractInput.merge(CommonTrustedForwarderSchema))();\n\n/**\n * Direct deploy a contract at a deterministic address, using Create2 method\n * Address depends on the Create2 factory address and salt (if provided).\n *\n * @public\n *\n * @param bytecode - The bytecode to deploy\n * @param abi - The abi to use\n * @param signer - The signer to use\n * @param constructorArgs - The constructor args to use\n * @param saltForCreate2 - The salt to use\n */\nasync function directDeployDeterministic(bytecode, abi, signer, constructorArgs, saltForCreate2) {\n let gasLimit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 7000000;\n invariant(signer.provider, \"Provider is required\");\n const bytecodePrefixed = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n\n // 1. Deploy CREATE2 factory (if not already exists)\n const create2Factory = await deployCreate2Factory(signer);\n\n // 2. Encode constructor params\n const constructorParams = extractConstructorParamsFromAbi(abi);\n const constructorParamTypes = constructorParams.map(p => {\n return p.type;\n });\n const paramValues = convertParamValues(constructorParamTypes, constructorArgs);\n const paramTypesForEncoder = constructorParams.map(p => {\n if (p.type === \"tuple[]\") {\n return utils.ParamType.from(p);\n } else {\n return p.type;\n }\n });\n const encodedArgs = utils.defaultAbiCoder.encode(paramTypesForEncoder, paramValues);\n\n // 3. Construct deployment transaction\n const address = computeDeploymentAddress(bytecodePrefixed, encodedArgs, create2Factory, saltForCreate2);\n const contractDeployed = await isContractDeployed(address, signer.provider);\n let initBytecodeWithSalt = \"\";\n if (!contractDeployed) {\n console.debug(`deploying contract via create2 factory at: ${address}`);\n initBytecodeWithSalt = getInitBytecodeWithSalt(bytecodePrefixed, encodedArgs, saltForCreate2);\n const tx = {\n to: create2Factory,\n data: initBytecodeWithSalt\n };\n try {\n await signer.estimateGas(tx);\n } catch (e) {\n console.debug(\"error estimating gas while deploying prebuilt: \", e);\n tx.gasLimit = BigNumber.from(gasLimit);\n }\n\n // 4. Deploy\n await (await signer.sendTransaction(tx)).wait();\n } else {\n throw new Error(`Contract already deployed at ${address}`);\n }\n return address;\n}\n\n/**\n * Direct deploy a contract at a deterministic address, using Create2 method\n * Address depends on the Create2 factory address and salt (if provided).\n *\n * @public\n *\n * @param publishMetadataUri - The metadata uri to use\n * @param signer - The signer to use\n * @param storage - The storage to use\n * @param constructorArgs - The constructor args to use\n * @param saltForCreate2 - The salt to use\n */\nasync function directDeployDeterministicWithUri(publishMetadataUri, signer, storage, constructorArgs, saltForCreate2) {\n let gasLimit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 7000000;\n const {\n compilerMetadata,\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, storage);\n invariant(extendedMetadata?.deployType === \"standard\", \"Must be direct deploy\");\n return await directDeployDeterministic(compilerMetadata.bytecode, compilerMetadata.abi, signer, constructorArgs, saltForCreate2, gasLimit);\n}\n\n/**\n * Direct deploy a contract at a deterministic address, using Create2 method\n * Address depends on the Create2 factory address and salt (if provided).\n *\n * @public\n *\n * @param contractName - The name of the contract to deploy\n * @param publisherAddress - The publisher address to use\n * @param contractVersion - The contract version to use\n * @param constructorArgs - The constructor args to use\n * @param signer - The signer to use\n * @param storage - The storage to use\n * @param clientId - The client id to use\n * @param secretKey - The secret key to use\n * @param constructorArgs - The constructor args to use\n * @param saltForCreate2 - The salt to use\n */\nasync function directDeployDeterministicPublished(contractName, publisherAddress) {\n let contractVersion = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n let constructorArgs = arguments.length > 3 ? arguments[3] : undefined;\n let signer = arguments.length > 4 ? arguments[4] : undefined;\n let storage = arguments.length > 5 ? arguments[5] : undefined;\n let clientId = arguments.length > 6 ? arguments[6] : undefined;\n let secretKey = arguments.length > 7 ? arguments[7] : undefined;\n let saltForCreate2 = arguments.length > 8 ? arguments[8] : undefined;\n let gasLimit = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 7000000;\n const publishMetadataUri = (await fetchPublishedContractFromPolygon(publisherAddress, contractName, contractVersion, storage, clientId, secretKey)).metadataUri;\n const {\n compilerMetadata,\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, storage);\n invariant(extendedMetadata?.deployType === \"standard\", \"Must be direct deploy\");\n return await directDeployDeterministic(compilerMetadata.bytecode, compilerMetadata.abi, signer, constructorArgs, saltForCreate2, gasLimit);\n}\nasync function predictAddressDeterministic(bytecode, abi, provider, constructorArgs, saltForCreate2) {\n const bytecodePrefixed = bytecode.startsWith(\"0x\") ? bytecode : `0x${bytecode}`;\n\n // 1. Deploy CREATE2 factory (if not already exists)\n const create2Factory = await getCreate2FactoryAddress(provider);\n\n // 2. Encode constructor params\n const constructorParams = extractConstructorParamsFromAbi(abi);\n const constructorParamTypes = constructorParams.map(p => {\n return p.type;\n });\n const paramValues = convertParamValues(constructorParamTypes, constructorArgs);\n const paramTypesForEncoder = constructorParams.map(p => {\n if (p.type === \"tuple[]\") {\n return utils.ParamType.from(p);\n } else {\n return p.type;\n }\n });\n const encodedArgs = utils.defaultAbiCoder.encode(paramTypesForEncoder, paramValues);\n\n // 3. Construct deployment transaction\n const address = computeDeploymentAddress(bytecodePrefixed, encodedArgs, create2Factory, saltForCreate2);\n return address;\n}\nasync function predictAddressDeterministicWithUri(publishMetadataUri, provider, storage, constructorArgs, saltForCreate2) {\n const {\n compilerMetadata,\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, storage);\n invariant(extendedMetadata?.deployType === \"standard\", \"Must be direct deploy\");\n return await predictAddressDeterministic(compilerMetadata.bytecode, compilerMetadata.abi, provider, constructorArgs, saltForCreate2);\n}\nasync function predictAddressDeterministicPublished(contractName, publisherAddress) {\n let contractVersion = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n let constructorArgs = arguments.length > 3 ? arguments[3] : undefined;\n let provider = arguments.length > 4 ? arguments[4] : undefined;\n let storage = arguments.length > 5 ? arguments[5] : undefined;\n let clientId = arguments.length > 6 ? arguments[6] : undefined;\n let secretKey = arguments.length > 7 ? arguments[7] : undefined;\n let saltForCreate2 = arguments.length > 8 ? arguments[8] : undefined;\n const publishMetadataUri = (await fetchPublishedContractFromPolygon(publisherAddress, contractName, contractVersion, storage, clientId, secretKey)).metadataUri;\n const {\n compilerMetadata,\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, storage);\n invariant(extendedMetadata?.deployType === \"standard\", \"Must be direct deploy\");\n return await predictAddressDeterministic(compilerMetadata.bytecode, compilerMetadata.abi, provider, constructorArgs, saltForCreate2);\n}\n\n/**\n * The main entry point for the thirdweb SDK\n * @public\n */\nclass ThirdwebSDK extends RPCConnectionHandler {\n /**\n * Get an instance of the thirdweb SDK based on an AbstractWallet\n *\n * @example\n * ```javascript\n * import { ThirdwebSDK } from \"@thirdweb-dev/sdk\"\n *\n * const wallet = new AbstractWalletImplementation();\n * const sdk = await ThirdwebSDK.fromWallet(wallet, \"mainnet\");\n * ```\n *\n * @param wallet - the implementation of the AbstractWallet class to use for signing\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @beta\n */\n static async fromWallet(wallet, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 ? arguments[3] : undefined;\n const signer = await wallet.getSigner();\n return ThirdwebSDK.fromSigner(signer, network, options, storage);\n }\n\n /**\n * Get an instance of the thirdweb SDK based on an existing ethers signer\n *\n * @example\n * ```javascript\n * // get a signer from somewhere (createRandom is being used purely for example purposes)\n * const signer = Wallet.createRandom();\n *\n * // get an instance of the SDK with the signer already setup\n * const sdk = ThirdwebSDK.fromSigner(signer, \"mainnet\");\n * ```\n *\n * @param signer - a ethers Signer to be used for transactions\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @beta\n */\n static fromSigner(signer, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 ? arguments[3] : undefined;\n let signerWithProvider = signer;\n if (network) {\n try {\n const provider = getChainProvider(network, options);\n signerWithProvider = signer.connect(provider);\n } catch {\n // We have to catch here because browser wallets throw when trying to override provider\n }\n }\n const sdk = new ThirdwebSDK(network || signerWithProvider, network ? addChainToSupportedChains(network, options) : options, storage);\n sdk.updateSignerOrProvider(signerWithProvider);\n return sdk;\n }\n\n /**\n * Get an instance of the thirdweb SDK based on a private key.\n *\n * @remarks\n * This should only be used for backend services or scripts, with the private key stored in a secure way.\n * **NEVER** expose your private key to the public in any way.\n *\n * @example\n * ```javascript\n * const sdk = ThirdwebSDK.fromPrivateKey(\"SecretPrivateKey\", \"mainnet\");\n * ```\n *\n * @param privateKey - the private key - **DO NOT EXPOSE THIS TO THE PUBLIC**\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @public\n */\n static fromPrivateKey(privateKey, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 ? arguments[3] : undefined;\n const provider = getChainProvider(network, options);\n const signer = new Wallet(privateKey, provider);\n return new ThirdwebSDK(signer, addChainToSupportedChains(network, options), storage);\n }\n\n /**\n * @internal\n * the cache of contracts that we have already seen\n */\n contractCache = new Map();\n /**\n * @internal\n * should never be accessed directly, use {@link ThirdwebSDK.getPublisher} instead\n */\n\n /**\n * Internal handler for uploading and downloading files\n */\n\n /**\n * New contract deployer\n */\n\n /**\n * Contract verifier\n */\n\n /**\n * The registry of deployed contracts\n */\n\n /**\n * Interact with the connected wallet\n */\n\n /**\n * Upload and download files from IPFS or from your own storage service\n */\n\n constructor(network) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let storage = arguments.length > 2 ? arguments[2] : undefined;\n const apiKeyType = \"clientId\" ;\n let warnMessage = `No API key. Please provide a ${apiKeyType}. It is required to access thirdweb's services. You can create a key at https://thirdweb.com/create-api-key`;\n checkClientIdOrSecretKey(warnMessage, options.clientId, options.secretKey);\n options = addChainToSupportedChains(network, options);\n super(network, options);\n setSupportedChains(options?.supportedChains);\n const configuredStorage = createStorage(storage, options);\n this.storage = configuredStorage;\n this.storageHandler = configuredStorage;\n this.wallet = new UserWallet(network, options, configuredStorage);\n this.deployer = new ContractDeployer(network, options, configuredStorage);\n this.verifier = new ContractVerifier(network, options, configuredStorage);\n this.multiChainRegistry = new MultichainRegistry(network, this.storageHandler, this.options);\n this._publisher = new ContractPublisher(network, this.options, this.storageHandler);\n }\n get auth() {\n throw new Error(`The sdk.auth namespace has been moved to the @thirdweb-dev/auth package and is no longer available after @thirdweb-dev/sdk >= 3.7.0.\n Please visit https://portal.thirdweb.com/auth for instructions on how to switch to using the new auth package (@thirdweb-dev/auth@3.0.0).\n\n If you still want to use the old @thirdweb-dev/auth@2.0.0 package, you can downgrade the SDK to version 3.6.0.`);\n }\n\n /**\n * Get an instance of a NFT Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const dropContract = await sdk.getDropContract(\"0x1234...\");\n * + const dropContract = await sdk.getContract(\"0x1234...\", \"nft-drop\");\n * ```\n */\n async getNFTDrop(contractAddress) {\n return await this.getContract(contractAddress, \"nft-drop\");\n }\n\n /**\n * Get an instance of a Signature Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const signatureDrop = await sdk.getSignatureDrop(\"0x1234...\");\n * + const signatureDrop = await sdk.getContract(\"0x1234...\", \"signature-drop\");\n * ```\n */\n async getSignatureDrop(contractAddress) {\n return await this.getContract(contractAddress, \"signature-drop\");\n }\n\n /**\n * Get an instance of a NFT Collection Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const signatureDrop = await sdk.getNFTCollection(\"0x1234...\");\n * + const signatureDrop = await sdk.getContract(\"0x1234...\", \"nft-collection\");\n * ```\n */\n async getNFTCollection(contractAddress) {\n return await this.getContract(contractAddress, \"nft-collection\");\n }\n\n /**\n * Get an instance of a Edition Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const editionDrop = await sdk.getEditionDrop(\"0x1234...\");\n * + const editionDrop = await sdk.getContract(\"0x1234...\", \"edition-drop\");\n * ```\n */\n async getEditionDrop(contractAddress) {\n return await this.getContract(contractAddress, \"edition-drop\");\n }\n\n /**\n * Get an instance of a Edition contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const edition = await sdk.getEdition(\"0x1234...\");\n * + const edition = await sdk.getContract(\"0x1234...\", \"edition\");\n * ```\n */\n async getEdition(contractAddress) {\n return await this.getContract(contractAddress, \"edition\");\n }\n\n /**\n * Get an instance of a Token Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const tokenDrop = await sdk.getTokenDrop(\"0x1234...\");\n * + const tokenDrop = await sdk.getContract(\"0x1234...\", \"token-drop\");\n * ```\n */\n async getTokenDrop(contractAddress) {\n return await this.getContract(contractAddress, \"token-drop\");\n }\n\n /**\n * Get an instance of a Token contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const token = await sdk.getToken(\"0x1234...\");\n * + const token = await sdk.getContract(\"0x1234...\", \"token\");\n * ```\n */\n async getToken(contractAddress) {\n return await this.getContract(contractAddress, \"token\");\n }\n\n /**\n * Get an instance of a Vote contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const vote = await sdk.getVote(\"0x1234...\");\n * + const vote = await sdk.getContract(\"0x1234...\", \"vote\");\n * ```\n */\n async getVote(contractAddress) {\n return await this.getContract(contractAddress, \"vote\");\n }\n\n /**\n * Get an instance of a Split contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const split = await sdk.getSplit(\"0x1234...\");\n * + const split = await sdk.getContract(\"0x1234...\", \"split\");\n * ```\n */\n async getSplit(contractAddress) {\n return await this.getContract(contractAddress, \"split\");\n }\n\n /**\n * Get an instance of a Marketplace contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const marketplace = await sdk.getMarketplace(\"0x1234...\");\n * + const marketplace = await sdk.getContract(\"0x1234...\", \"marketplace\");\n * ```\n */\n async getMarketplace(contractAddress) {\n return await this.getContract(contractAddress, \"marketplace\");\n }\n\n /**\n * Get an instance of a Marketplace contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const marketplace = await sdk.getMarketplaceV3(\"0x1234...\");\n * + const marketplace = await sdk.getContract(\"0x1234...\", \"marketplace-v3\");\n * ```\n */\n async getMarketplaceV3(contractAddress) {\n return await this.getContract(contractAddress, \"marketplace-v3\");\n }\n\n /**\n * Get an instance of a Pack contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const pack = await sdk.getPack(\"0x1234...\");\n * + const pack = await sdk.getContract(\"0x1234...\", \"pack\");\n * ```\n */\n async getPack(contractAddress) {\n return await this.getContract(contractAddress, \"pack\");\n }\n\n /**\n * Get an instance of a Pack contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const multiWrap = await sdk.getMultiwrap(\"0x1234...\");\n * + const multiWrap = await sdk.getContract(\"0x1234...\", \"multiwrap\");\n * ```\n */\n async getMultiwrap(contractAddress) {\n return await this.getContract(contractAddress, \"multiwrap\");\n }\n\n /**\n * Get an instance of a Custom ThirdwebContract\n * @param address - the address of the deployed contract\n * @returns the contract\n * @public\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * ```\n */\n\n /**\n * Get an instance of a Custom ThirdwebContract\n * @param address - the address of the deployed contract\n * @param contractType - the {@link ContractType} of the contract to load\n * @returns the contract\n * @public\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\", \"nft-drop\");\n * ```\n */\n\n /**\n * Get an instance of a Custom ThirdwebContract\n * @param address - the address of the deployed contract\n * @param abi - the ABI ({@link ContractInterface}) of the contract to load\n * @returns the contract\n * @public\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\", ABI);\n * ```\n */\n\n async getContract(address, contractTypeOrABI) {\n const resolvedAddress = await resolveAddress(address);\n\n // if we have a contract in the cache we will return it\n // we will do this **without** checking any contract type things for simplicity, this may have to change in the future?\n if (this.contractCache.has(resolvedAddress)) {\n // we know this will be there since we check the has above\n return this.contractCache.get(resolvedAddress);\n }\n if (resolvedAddress in GENERATED_ABI) {\n return await this.getContractFromAbi(resolvedAddress, GENERATED_ABI[resolvedAddress]);\n }\n let newContract;\n\n // if we don't have a contractType or ABI then we will have to resolve it regardless\n // we also handle it being \"custom\" just in case...\n if (!contractTypeOrABI || contractTypeOrABI === \"custom\") {\n try {\n const metadata = await this.getPublisher().fetchCompilerMetadataFromAddress(resolvedAddress);\n newContract = await this.getContractFromAbi(resolvedAddress, metadata.abi);\n } catch (e) {\n // fallback to\n // try resolving the contract type (legacy contracts)\n const resolvedContractType = await this.resolveContractType(resolvedAddress);\n if (resolvedContractType && resolvedContractType !== \"custom\") {\n // otherwise if it's a prebuilt contract we can just use the contract type\n const contractAbi = await PREBUILT_CONTRACTS_MAP[resolvedContractType].getAbi(resolvedAddress, this.getProvider(), this.storage);\n newContract = await this.getContractFromAbi(resolvedAddress, contractAbi);\n } else {\n // we cant fetch the ABI, and we don't know the contract type, throw the original error\n throw e;\n }\n }\n }\n // if it's a builtin contract type we can just use the contract type to initialize the contract instance\n else if (typeof contractTypeOrABI === \"string\" && contractTypeOrABI in PREBUILT_CONTRACTS_MAP) {\n newContract = await PREBUILT_CONTRACTS_MAP[contractTypeOrABI].initialize(this.getSignerOrProvider(), resolvedAddress, this.storage, this.options);\n }\n // otherwise it has to be an ABI\n else {\n newContract = await this.getContractFromAbi(resolvedAddress, contractTypeOrABI);\n }\n\n // set whatever we have on the cache\n this.contractCache.set(resolvedAddress, newContract);\n // return it\n return newContract;\n }\n\n /**\n * @internal\n * @deprecated use {@link getContract} directly instead\n */\n async getBuiltInContract(address, contractType) {\n return await this.getContract(address, contractType);\n }\n\n /**\n * @param contractAddress - the address of the contract to attempt to resolve the contract type for\n * @returns the {@link ContractType} for the given contract address\n *\n */\n async resolveContractType(contractAddress) {\n try {\n const IThirdwebContractABI = (await import('@thirdweb-dev/contracts-js/dist/abis/IThirdwebContract.json')).default;\n const contract = new Contract(await resolveAddress(contractAddress), IThirdwebContractABI,\n // !provider only! - signer can break things here!\n this.getProvider());\n const remoteContractType = utils.toUtf8String(await contract.contractType())\n // eslint-disable-next-line no-control-regex\n .replace(/\\x00/g, \"\");\n return getContractTypeForRemoteName(remoteContractType);\n } catch (err) {\n return \"custom\";\n }\n }\n\n /**\n * Return all the contracts deployed by the specified address\n * @param walletAddress - the deployed address\n * @example\n * ```javascript\n * const contracts = sdk.getContractList(\"{{wallet_address}}\");\n * ```\n */\n async getContractList(walletAddress) {\n // TODO - this only reads from the current registry chain, not the multichain registry\n const addresses = (await (await this.deployer.getRegistry())?.getContractAddresses(await resolveAddress(walletAddress))) || [];\n const chainId = (await this.getProvider().getNetwork()).chainId;\n return await Promise.all(addresses.map(async address => {\n return {\n address: address,\n chainId,\n contractType: () => this.resolveContractType(address),\n metadata: async () => (await this.getContract(address)).metadata.get(),\n extensions: async () => getAllDetectedExtensionNames((await this.getContract(address)).abi)\n };\n }));\n }\n async getMultichainContractList(walletAddress) {\n let chains = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultChains;\n const contracts = await this.multiChainRegistry.getContractAddresses(walletAddress);\n const chainMap = chains.reduce((acc, chain) => {\n acc[chain.chainId] = chain;\n return acc;\n }, {});\n const sdkMap = {};\n return contracts.map(_ref => {\n let {\n address,\n chainId\n } = _ref;\n if (!chainMap[chainId]) {\n // if we don't have the chain in our list of supported chains then we can't resolve the contract type regardless, don't even try to set up the SDK\n return {\n address,\n chainId,\n contractType: async () => \"custom\",\n metadata: async () => ({\n name: \"\"\n }),\n extensions: async () => []\n };\n }\n try {\n let chainSDK = sdkMap[chainId];\n if (!chainSDK) {\n chainSDK = new ThirdwebSDK(chainId, {\n ...this.options,\n // need to disable readonly settings for this to work\n readonlySettings: undefined,\n // @ts-expect-error - zod doesn't like this\n supportedChains: chains\n }, this.storage);\n sdkMap[chainId] = chainSDK;\n }\n return {\n address,\n chainId,\n contractType: () => chainSDK.resolveContractType(address),\n metadata: async () => (await chainSDK.getContract(address)).metadata.get(),\n extensions: async () => getAllDetectedExtensionNames((await chainSDK.getContract(address)).abi)\n };\n } catch (e) {\n return {\n address,\n chainId,\n contractType: async () => \"custom\",\n metadata: async () => ({\n name: \"\"\n }),\n extensions: async () => []\n };\n }\n });\n }\n\n /**\n * Update the active signer or provider for all contracts\n * @param network - the new signer or provider\n */\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.updateContractSignerOrProvider();\n }\n updateContractSignerOrProvider() {\n this.wallet.connect(this.getSignerOrProvider());\n this.deployer.updateSignerOrProvider(this.getSignerOrProvider());\n this._publisher.updateSignerOrProvider(this.getSignerOrProvider());\n this.multiChainRegistry.updateSigner(this.getSignerOrProvider());\n this.verifier.updateSignerOrProvider(this.getSignerOrProvider());\n for (const [, contract] of this.contractCache) {\n contract.onNetworkUpdated(this.getSignerOrProvider());\n }\n }\n\n /**\n * Get an instance of a Custom contract from a json ABI\n * @param address - the address of the deployed contract\n * @param abi - the JSON abi\n * @returns the contract\n * @beta\n * @example\n * ```javascript\n * // Import your ABI from a JSON file\n * import myABI from \"./path/to/myABI.json\";\n *\n * const contract = sdk.getContractFromAbi(\n * \"{{contract_address}}\",\n * // Pass in the \"abi\" field from the JSON file\n * myABI.abi\n * );\n * ```\n */\n async getContractFromAbi(address, abi) {\n const [resolvedAddress, {\n SmartContract\n }] = await Promise.all([resolveAddress(address), import('./smart-contract-9547a4a2.browser.esm.js')]);\n if (this.contractCache.has(resolvedAddress)) {\n return this.contractCache.get(resolvedAddress);\n }\n const [, provider] = getSignerAndProvider(this.getSignerOrProvider(), this.options);\n const parsedABI = typeof abi === \"string\" ? JSON.parse(abi) : abi;\n const contract = new SmartContract(this.getSignerOrProvider(), resolvedAddress, await getCompositeABI(resolvedAddress, AbiSchema.parse(parsedABI), provider, this.options, this.storage), this.storageHandler, this.options, (await provider.getNetwork()).chainId);\n this.contractCache.set(resolvedAddress, contract);\n return contract;\n }\n\n /**\n * Get the native balance of a given address (wallet or contract)\n * @example\n * ```javascript\n * const balance = await sdk.getBalance(\"0x...\");\n * console.log(balance.displayValue);\n * ```\n * @param address - the address to check the balance for\n */\n async getBalance(address) {\n return fetchCurrencyValue(this.getProvider(), NATIVE_TOKEN_ADDRESS, await this.getProvider().getBalance(await resolveAddress(address)));\n }\n\n /**\n * @internal\n */\n getPublisher() {\n return this._publisher;\n }\n}\nfunction addChainToSupportedChains(network, options) {\n if (isChainConfig(network)) {\n options = {\n ...options,\n // @ts-expect-error - we know that the network is assignable despite the readonly mismatch\n supportedChains: [network, ...(options?.supportedChains || [])]\n };\n }\n return options;\n}\nconst THIRDWEB_DEPLOYER = \"0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024\";\n\n/**\n * Handles deploying new contracts\n * @public\n */\nclass ContractDeployer extends RPCConnectionHandler {\n /**\n * @internal\n * should never be accessed directly, use {@link ContractDeployer.getFactory} instead\n */\n\n /**\n * @internal\n * should never be accessed directly, use {@link ContractDeployer.getRegistry} instead\n */\n\n transactionListener = event => {\n if (event.status === \"submitted\") {\n this.events.emit(\"contractDeployed\", {\n status: \"submitted\",\n transactionHash: event.transactionHash\n });\n }\n };\n constructor(network, options, storage) {\n super(network, options);\n this.storage = storage;\n this.events = new EventEmitter();\n // Initialize factory and registry (we don't need to make these calls async)\n this.getFactory();\n this.getRegistry();\n }\n\n /**\n * Deploys an NFT Collection contract\n *\n * @remarks Deploys an NFT Collection contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployNFTCollection({\n * name: \"My Collection\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployNFTCollection = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(NFTCollectionInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new NFTDrop contract\n *\n * @remarks Deploys an NFT Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployNFTDrop({\n * name: \"My Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployNFTDrop = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(NFTDropInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new LoyaltyCard contract\n *\n * @remarks Deploys a LoyaltyCard contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployLoyaltyCard({\n * name: \"My Loyalty Program\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployLoyaltyCard = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n const parsedMetadata = await LoyaltyCardContractDeploy.parseAsync(metadata);\n const contractURI = await this.storage.upload(parsedMetadata);\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const trustedForwarders = getDefaultTrustedForwarders(chainId);\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n const signerAddress = await this.getSigner()?.getAddress();\n const deployArgs = [signerAddress, parsedMetadata.name, parsedMetadata.symbol, contractURI, trustedForwarders, parsedMetadata.primary_sale_recipient, parsedMetadata.fee_recipient, parsedMetadata.seller_fee_basis_points, parsedMetadata.platform_fee_basis_points, parsedMetadata.platform_fee_recipient];\n return await this.deployReleasedContract.prepare(THIRDWEB_DEPLOYER, \"LoyaltyCard\", deployArgs, options);\n });\n\n /**\n * Deploys a new OpenEditionERC721 contract\n *\n * @remarks Deploys a OpenEdition contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployOpenEdition({\n * name: \"My Open Edition\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployOpenEdition = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n const parsedMetadata = await DropErc721ContractSchema.deploy.parseAsync(metadata);\n const contractURI = await this.storage.upload(parsedMetadata);\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const trustedForwarders = getDefaultTrustedForwarders(chainId);\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n const signerAddress = await this.getSigner()?.getAddress();\n const deployArgs = [signerAddress, parsedMetadata.name, parsedMetadata.symbol, contractURI, trustedForwarders, parsedMetadata.primary_sale_recipient, parsedMetadata.fee_recipient, parsedMetadata.seller_fee_basis_points];\n return await this.deployPublishedContract.prepare(THIRDWEB_DEPLOYER, \"OpenEditionERC721\", deployArgs, options);\n });\n\n /**\n * Deploys a new SignatureDrop contract\n *\n * @remarks Deploys a SignatureDrop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deploySignatureDrop({\n * name: \"My Signature Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deploySignatureDrop = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(SignatureDropInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Multiwrap contract\n *\n * @remarks Deploys a Multiwrap contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMultiwrap({\n * name: \"My Multiwrap\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n * @beta\n */\n deployMultiwrap = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(MultiwrapInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Edition contract\n *\n * @remarks Deploys an Edition contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployEdition({\n * name: \"My Edition\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployEdition = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(EditionInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new EditionDrop contract\n *\n * @remarks Deploys an Edition Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployEditionDrop({\n * name: \"My Edition Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployEditionDrop = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(EditionDropInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Token contract\n *\n * @remarks Deploys a Token contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployToken({\n * name: \"My Token\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployToken = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(TokenInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Token Drop contract\n *\n * @remarks Deploys a Token Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployTokenDrop({\n * name: \"My Token Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployTokenDrop = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(TokenDropInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Marketplace contract\n *\n * @remarks Deploys a Marketplace contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMarketplace({\n * name: \"My Marketplace\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployMarketplace = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(MarketplaceInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Marketplace-V3 contract\n *\n * @remarks Deploys a Marketplace-V3 contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMarketplaceV3({\n * name: \"My Marketplace\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployMarketplaceV3 = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(MarketplaceV3Initializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Pack contract\n *\n * @remarks Deploys a Pack contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployPack({\n * name: \"My Pack\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployPack = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(PackInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Split contract\n *\n * @remarks Deploys a Split contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deploySplit({\n * name: \"My Split\",\n * primary_sale_recipient: \"your-address\",\n * recipients: [\n * {\n * address: \"your-address\",\n * sharesBps: 80 * 100, // 80%\n * },\n * {\n * address: \"another-address\",\n * sharesBps: 20 * 100, // 20%\n * },\n * ],\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deploySplit = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(SplitInitializer.contractType, metadata, \"latest\", options);\n });\n\n /**\n * Deploys a new Vote contract\n *\n * @remarks Deploys an Vote contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployVote({\n * name: \"My Vote\",\n * primary_sale_recipient: \"your-address\",\n * voting_token_address: \"your-token-contract-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n deployVote = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n return await this.deployBuiltInContract.prepare(VoteInitializer.contractType, metadata, \"latest\", options);\n });\n deployAirdropERC20 = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n const parsedMetadata = await AirdropContractDeploy.parseAsync(metadata);\n const contractURI = await this.storage.upload(parsedMetadata);\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const trustedForwarders = getDefaultTrustedForwarders(chainId);\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n const signerAddress = await this.getSigner()?.getAddress();\n const deployArgs = [signerAddress, contractURI, trustedForwarders];\n return await this.deployReleasedContract.prepare(THIRDWEB_DEPLOYER, \"AirdropERC20\", deployArgs, options);\n });\n deployAirdropERC721 = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n const parsedMetadata = await AirdropContractDeploy.parseAsync(metadata);\n const contractURI = await this.storage.upload(parsedMetadata);\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const trustedForwarders = getDefaultTrustedForwarders(chainId);\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n const signerAddress = await this.getSigner()?.getAddress();\n const deployArgs = [signerAddress, contractURI, trustedForwarders];\n return await this.deployReleasedContract.prepare(THIRDWEB_DEPLOYER, \"AirdropERC721\", deployArgs, options);\n });\n deployAirdropERC1155 = /* @__PURE__ */buildDeployTransactionFunction(async (metadata, options) => {\n const parsedMetadata = await AirdropContractDeploy.parseAsync(metadata);\n const contractURI = await this.storage.upload(parsedMetadata);\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const trustedForwarders = getDefaultTrustedForwarders(chainId);\n // add default forwarders to any custom forwarders passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders.push(...metadata.trusted_forwarders);\n }\n const signerAddress = await this.getSigner()?.getAddress();\n const deployArgs = [signerAddress, contractURI, trustedForwarders];\n return await this.deployReleasedContract.prepare(THIRDWEB_DEPLOYER, \"AirdropERC1155\", deployArgs, options);\n });\n\n /**\n * Deploys a new contract\n *\n * @internal\n * @param contractType - the type of contract to deploy\n * @param contractMetadata - the metadata to deploy the contract with\n * @param version - the version of the contract to deploy\n * @returns a promise of the address of the newly deployed contract\n */\n deployBuiltInContract = /* @__PURE__ */buildDeployTransactionFunction((() => {\n var _this = this;\n return async function (contractType, contractMetadata) {\n let version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n let options = arguments.length > 3 ? arguments[3] : undefined;\n const signer = _this.getSigner();\n invariant(signer, \"A signer is required to deploy contracts\");\n const parsedMetadata = {\n app_uri: PREBUILT_CONTRACTS_APPURI_MAP[contractType],\n ...(await PREBUILT_CONTRACTS_MAP[contractType].schema.deploy.parseAsync(contractMetadata))\n };\n if (_this.hasLocalFactory()) {\n // old behavior for unit tests, deploy from local factory\n // parse version into the first number of the version string (or undefined if unparseable)\n let parsedVersion = undefined;\n try {\n parsedVersion = parseInt(version);\n if (isNaN(parsedVersion)) {\n parsedVersion = undefined;\n }\n } catch (e) {\n parsedVersion = undefined;\n }\n const factory = await _this.getFactory();\n if (!factory) {\n throw new Error(\"Factory not found\");\n }\n factory.on(EventType.Transaction, _this.transactionListener);\n return factory.deploy.prepare(contractType, parsedMetadata, _this.events, parsedVersion, options, () => {\n factory.off(EventType.Transaction, _this.transactionListener);\n });\n }\n\n // For all other chains, fetch from published contracts\n // resolve contract name from type\n const contractName = getContractName(contractType);\n invariant(contractName, \"Contract name not found\");\n // first upload the contract metadata\n const contractURI = await _this.storage.upload(parsedMetadata);\n // then get the deploy arguments\n const constructorParams = await getDeployArguments(contractType, parsedMetadata, contractURI, signer, _this.storage);\n\n // fetch the publish URI from the ContractPublisher contract\n const publishedContract = await _this.fetchPublishedContractFromPolygon(THIRDWEB_DEPLOYER, contractName, version);\n return _this.deployContractFromUri.prepare(publishedContract.metadataUri, constructorParams, options);\n };\n })());\n\n /**\n * @internal\n * @param contractType - the type of contract to deploy\n */\n async getLatestBuiltInContractVersion(contractType) {\n const factory = await this.getFactory();\n if (!factory) {\n throw new Error(\"Factory not found\");\n }\n return await factory.getLatestVersion(contractType);\n }\n\n /**\n * Deploy any published contract by its name\n * @param publisherAddress - the address of the publisher\n * @param contractName - the name of the contract to deploy\n * @param constructorParams - the constructor params to pass to the contract\n *\n * @deprecated use deployPublishedContract instead\n */\n deployReleasedContract = /* @__PURE__ */buildDeployTransactionFunction((() => {\n var _this2 = this;\n return async function (publisherAddress, contractName, constructorParams) {\n let version = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let options = arguments.length > 4 ? arguments[4] : undefined;\n const publishedContract = await _this2.fetchPublishedContractFromPolygon(publisherAddress, contractName, version);\n return await _this2.deployContractFromUri.prepare(publishedContract.metadataUri, constructorParams, options);\n };\n })());\n\n /**\n * Deploy any published contract by its name\n * @param publisherAddress - the address of the publisher\n * @param contractName - the name of the contract to deploy\n * @param constructorParams - the constructor params to pass to the contract\n * @param version - Optional: the version of the contract to deploy or \"latest\"\n * @param options - Optional: the deploy options\n */\n deployPublishedContract = this.deployReleasedContract;\n\n /**\n * Deploy any published contract by its name\n * @param contractName - the name of the contract to deploy\n * @param constructorParams - the constructor params to pass to the contract\n * @param publisherAddress - the address of the publisher\n * @param version - Optional: the version of the contract to deploy or \"latest\"\n * @param saltForCreate2 - Optional: salt for create2 deployment, will determine deployment address\n */\n async deployPublishedContractDeterministic(contractName, constructorParams) {\n let publisherAddress = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : THIRDWEB_DEPLOYER;\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let saltForCreate2 = arguments.length > 4 ? arguments[4] : undefined;\n const signer = this.getSigner();\n invariant(signer, \"Signer is required\");\n return directDeployDeterministicPublished(contractName, publisherAddress, contractVersion, constructorParams, signer, this.storage, this.options.clientId, this.options.secretKey, saltForCreate2);\n }\n\n /**\n * Predict Create2 address of a contract\n * @param contractName - the name of the contract\n * @param constructorParams - the constructor params to pass to the contract\n * @param publisherAddres -s the address of the publisher\n * @param version - Optional: the version of the contract to deploy or \"latest\"\n * @param saltForCreate2 - Optional: salt for create2 deployment, will determine deployment address\n */\n async predictAddressDeterministic(contractName, constructorParams) {\n let publisherAddress = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : THIRDWEB_DEPLOYER;\n let contractVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n let saltForCreate2 = arguments.length > 4 ? arguments[4] : undefined;\n const provider = this.getProvider();\n invariant(provider, \"Provider is required\");\n return predictAddressDeterministicPublished(contractName, publisherAddress, contractVersion, constructorParams, provider, this.storage, this.options.clientId, this.options.secretKey, saltForCreate2);\n }\n\n /**\n * Deploy a proxy contract of a given implementation via the given factory\n * @param factoryAddress - the address of the factory\n * @param implementationAddress - the address of the implementation\n * @param implementationAbi - the abi of the implementation\n * @param initializerFunction - the initializer function to call\n * @param initializerArgs - the initializer args to pass to the initializer function\n */\n deployViaFactory = /* @__PURE__ */buildTransactionFunction(async (factoryAddress, implementationAddress, implementationAbi, initializerFunction, initializerArgs, saltForProxyDeploy) => {\n const resolvedFactoryAddress = await resolveAddress(factoryAddress);\n const resolvedImplementationAddress = await resolveAddress(implementationAddress);\n const signer = this.getSigner();\n invariant(signer, \"signer is required\");\n // TODO only require factory interface here - IProxyFactory\n const proxyFactory = new ContractFactory(resolvedFactoryAddress, this.getSignerOrProvider(), this.storage, this.options);\n proxyFactory.on(EventType.Transaction, this.transactionListener);\n return await proxyFactory.deployProxyByImplementation.prepare(resolvedImplementationAddress, implementationAbi, initializerFunction, initializerArgs, this.events, saltForProxyDeploy, () => {\n proxyFactory.off(EventType.Transaction, this.transactionListener);\n });\n });\n\n /**\n * Deploy a proxy contract of a given implementation directly\n * @param implementationAddress - the address of the implementation\n * @param implementationAbi - the abi of the implementation\n * @param initializerFunction - the initializer function to call\n * @param initializerArgs - the initializer args to pass to the initializer function\n */\n deployProxy = /* @__PURE__ */buildDeployTransactionFunction(async (implementationAddress, implementationAbi, initializerFunction, initializerArgs) => {\n const resolvedAddress = await resolveAddress(implementationAddress);\n const encodedInitializer = Contract.getInterface(implementationAbi).encodeFunctionData(initializerFunction, initializerArgs);\n const {\n TWProxy__factory\n } = await import('@thirdweb-dev/contracts-js/factories/TWProxy__factory');\n return this.deployContractWithAbi.prepare(TWProxy__factory.abi, TWProxy__factory.bytecode, [resolvedAddress, encodedInitializer]);\n });\n\n /**\n * Deploy a proxy contract of a given implementation via thirdweb's Clone factory\n * @param publishMetadataUri - the uri of the publish metadata\n * @param constructorParamValues - the constructor param values\n * @param deployMetadata - the deploy metadata\n * @param signer - the signer to use\n * @param options - the deploy options\n */\n deployViaAutoFactory = /* @__PURE__ */buildDeployTransactionFunction(async (publishMetadataUri, deployMetadata, signer, initializerFunction, paramValues, options) => {\n // any evm deployment flow\n\n // 1. Deploy CREATE2 factory (if not already exists)\n const create2Factory = await deployCreate2Factory(signer, options);\n\n // 2. get deployment info for any evm\n const deploymentInfo = await getDeploymentInfo(publishMetadataUri, this.storage, this.getProvider(), create2Factory, this.options.clientId, this.options.secretKey);\n const implementationAddress = deploymentInfo.find(i => i.type === \"implementation\")?.transaction.predictedAddress;\n\n // 3. deploy infra + plugins + implementation using a throwaway Deployer contract\n\n // filter out already deployed contracts (data is empty)\n const transactionsToSend = deploymentInfo.filter(i => i.transaction.data && i.transaction.data.length > 0);\n const transactionsforDirectDeploy = transactionsToSend.filter(i => {\n return i.type !== \"infra\";\n }).map(i => i.transaction);\n const transactionsForThrowawayDeployer = transactionsToSend.filter(i => {\n return i.type === \"infra\";\n }).map(i => i.transaction);\n\n // deploy via throwaway deployer, multiple infra contracts in one transaction\n await deployWithThrowawayDeployer(signer, transactionsForThrowawayDeployer, options);\n\n // send each transaction directly to Create2 factory\n // process txns one at a time\n for (const tx of transactionsforDirectDeploy) {\n try {\n await deployContractDeterministic(signer, tx, options);\n } catch (e) {\n console.debug(`Error deploying contract at ${tx.predictedAddress}`, e?.message);\n throw e;\n }\n }\n const resolvedImplementationAddress = await resolveAddress(implementationAddress);\n\n // 4. deploy proxy with TWStatelessFactory (Clone factory) and return address\n const cloneFactory = await computeCloneFactoryAddress(this.getProvider(), this.storage, create2Factory, this.options.clientId, this.options.secretKey);\n options?.notifier?.(\"deploying\", \"proxy\");\n const proxyDeployTransaction = await this.deployViaFactory.prepare(cloneFactory, resolvedImplementationAddress, deployMetadata.compilerMetadata.abi, initializerFunction, paramValues, options?.saltForProxyDeploy);\n options?.notifier?.(\"deployed\", \"proxy\");\n return proxyDeployTransaction;\n });\n\n /**\n * Deploy a proxy contract of a given implementation via a custom factory\n * @param constructorParamValues - the constructor param values\n * @param deployMetadata - the deploy metadata\n * @param signer - the signer to use\n * @param chainId - the chain id to deploy to\n */\n deployViaCustomFactory = /* @__PURE__ */buildDeployTransactionFunction(async (constructorParamValues, deployMetadata, signer, chainId) => {\n const customFactoryAddress = deployMetadata.extendedMetadata?.factoryDeploymentData?.customFactoryInput?.customFactoryAddresses[chainId];\n const resolvedCustomFactoryAddress = await resolveAddress(customFactoryAddress);\n invariant(resolvedCustomFactoryAddress, `customFactoryAddress not found for chainId '${chainId}'`);\n invariant(deployMetadata.extendedMetadata?.factoryDeploymentData?.customFactoryInput?.factoryFunction, `customFactoryFunction not set'`);\n const customFactoryMetadata = await fetchContractMetadataFromAddress(resolvedCustomFactoryAddress, this.getProvider(), this.storage, this.options);\n const factoryFunctionParamTypes = extractFunctionParamsFromAbi(customFactoryMetadata.abi, deployMetadata.extendedMetadata.factoryDeploymentData.customFactoryInput.factoryFunction).map(p => p.type);\n const factoryFunctionparamValues = convertParamValues(factoryFunctionParamTypes, constructorParamValues);\n\n // eslint-disable-next-line prefer-const\n let deployedImplementationAddress;\n const deployTransaction = await Transaction.fromContractInfo({\n contractAddress: resolvedCustomFactoryAddress,\n contractAbi: customFactoryMetadata.abi,\n provider: this.getProvider(),\n signer,\n method: deployMetadata.extendedMetadata.factoryDeploymentData.customFactoryInput.factoryFunction,\n args: factoryFunctionparamValues,\n parse: () => {\n return deployedImplementationAddress;\n },\n storage: this.storage\n });\n deployedImplementationAddress = await deployTransaction.simulate();\n return deployTransaction;\n });\n\n /**\n * @internal\n */\n async getRegistry() {\n // if we already have a registry just return it back\n if (this._registry) {\n return this._registry;\n }\n\n // otherwise get the registry address for the active chain and get a new one\n\n // have to do it like this otherwise we run it over and over and over\n // \"this._registry\" has to be assigned to the promise upfront.\n return this._registry = this.getProvider().getNetwork().then(async _ref2 => {\n let {\n chainId\n } = _ref2;\n const registryAddress = getContractAddressByChainId(chainId, \"twRegistry\");\n if (!registryAddress) {\n return undefined;\n }\n const TWRegistryABI = (await import('@thirdweb-dev/contracts-js/dist/abis/TWRegistry.json')).default;\n return new ContractRegistry(registryAddress, this.getSignerOrProvider(), this.storage, TWRegistryABI, this.options);\n });\n }\n async getFactory() {\n // if we already have a factory just return it back\n if (this._factory) {\n return this._factory;\n }\n\n // otherwise get the factory address for the active chain and get a new one\n\n // have to do it like this otherwise we run it over and over and over\n // \"this._factory\" has to be assigned to the promise upfront.\n return this._factory = this.getProvider().getNetwork().then(async _ref3 => {\n let {\n chainId\n } = _ref3;\n const factoryAddress = getContractAddressByChainId(chainId, \"twFactory\");\n if (!factoryAddress) {\n return undefined;\n }\n const factory = new ContractFactory(factoryAddress, this.getSignerOrProvider(), this.storage, this.options);\n return factory;\n });\n }\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.updateContractSignerOrProvider();\n }\n updateContractSignerOrProvider() {\n // has to be promises now\n this._factory?.then(factory => {\n factory?.updateSignerOrProvider(this.getSignerOrProvider());\n }).catch(() => {\n // ignore\n });\n // has to be promises now\n this._registry?.then(registry => {\n registry?.updateSignerOrProvider(this.getSignerOrProvider());\n }).catch(() => {\n // ignore\n });\n }\n\n /**\n * @internal\n * @param publishMetadataUri - the uri of the publish metadata\n * @param constructorParamValues - the constructor param values\n * @param options - the deploy options\n */\n deployContractFromUri = /* @__PURE__ */buildDeployTransactionFunction(async (publishMetadataUri, constructorParamValues, options) => {\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const {\n compilerMetadata,\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, this.storage);\n const forceDirectDeploy = options?.forceDirectDeploy || false;\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const isNetworkEnabled = extendedMetadata?.networksForDeployment?.networksEnabled.includes(chainId) || extendedMetadata?.networksForDeployment?.allNetworks;\n if (extendedMetadata?.networksForDeployment && !isNetworkEnabled && compilerMetadata.name !== \"AccountFactory\" // ignore network restrictions for simple AccountFactory\n ) {\n throw new Error(`Deployments disabled on this network, with chainId: ${chainId}`);\n }\n if (extendedMetadata && extendedMetadata.factoryDeploymentData && (extendedMetadata.isDeployableViaProxy || extendedMetadata.isDeployableViaFactory || extendedMetadata.deployType && extendedMetadata.deployType !== \"standard\") && !forceDirectDeploy) {\n if (extendedMetadata.deployType === \"customFactory\") {\n return await this.deployViaCustomFactory.prepare(constructorParamValues, {\n compilerMetadata,\n extendedMetadata\n }, signer, chainId);\n } else {\n invariant(extendedMetadata.factoryDeploymentData.implementationInitializerFunction, `implementationInitializerFunction not set'`);\n const initializerParamTypes = extractFunctionParamsFromAbi(compilerMetadata.abi, extendedMetadata.factoryDeploymentData.implementationInitializerFunction).map(p => p.type);\n const paramValues = convertParamValues(initializerParamTypes, constructorParamValues);\n const implementationAddress = extendedMetadata.factoryDeploymentData.implementationAddresses[chainId];\n if (!implementationAddress || extendedMetadata.deployType === \"autoFactory\") {\n return await this.deployViaAutoFactory.prepare(publishMetadataUri, {\n compilerMetadata,\n extendedMetadata\n }, signer, extendedMetadata.factoryDeploymentData.implementationInitializerFunction, paramValues, options);\n }\n const resolvedImplementationAddress = await resolveAddress(implementationAddress);\n invariant(resolvedImplementationAddress, `implementationAddress not found for chainId '${chainId}'`);\n if (extendedMetadata.isDeployableViaFactory) {\n // deploy via a factory (prioritise factory)\n invariant(extendedMetadata.factoryDeploymentData.factoryAddresses, \"isDeployableViaFactory is true so factoryAddresses is required\");\n const factoryAddress = extendedMetadata.factoryDeploymentData.factoryAddresses[chainId];\n invariant(factoryAddress, `isDeployableViaFactory is true and factoryAddress not found for chainId '${chainId}'`);\n const resolvedFactoryAddress = await resolveAddress(factoryAddress);\n return await this.deployViaFactory.prepare(resolvedFactoryAddress, resolvedImplementationAddress, compilerMetadata.abi, extendedMetadata.factoryDeploymentData.implementationInitializerFunction, paramValues, options?.saltForProxyDeploy);\n } else if (extendedMetadata.isDeployableViaProxy) {\n // deploy a proxy directly\n return await this.deployProxy.prepare(resolvedImplementationAddress, compilerMetadata.abi, extendedMetadata.factoryDeploymentData.implementationInitializerFunction, paramValues);\n }\n }\n }\n const bytecode = compilerMetadata.bytecode.startsWith(\"0x\") ? compilerMetadata.bytecode : `0x${compilerMetadata.bytecode}`;\n if (!utils.isHexString(bytecode)) {\n throw new Error(`Contract bytecode is invalid.\\n\\n${bytecode}`);\n }\n const constructorParamTypes = extractConstructorParamsFromAbi(compilerMetadata.abi).map(p => p.type);\n const paramValues = convertParamValues(constructorParamTypes, constructorParamValues);\n return this.deployContractWithAbi.prepare(compilerMetadata.abi, bytecode, paramValues);\n });\n\n /**\n * @internal\n * @param abi - the abi of the contract\n * @param bytecode - the bytecode of the contract\n * @param constructorParams - the constructor params to pass to the contract\n */\n deployContractWithAbi = /* @__PURE__ */buildDeployTransactionFunction(async (abi, bytecode, constructorParams) => {\n const signer = this.getSigner();\n const provider = this.getProvider();\n invariant(signer, \"Signer is required to deploy contracts\");\n const factory = new ContractFactory$1(abi, bytecode).connect(signer);\n return new DeployTransaction({\n args: constructorParams,\n provider,\n signer,\n factory,\n storage: this.storage,\n events: this.events\n });\n });\n\n /**\n * @public\n * @param publishMetadataUri - the uri of the publish metadata\n * @param options - the deploy options\n */\n async getTransactionsForDeploy(publishMetadataUri, options) {\n let transactions = [];\n const provider = this.getProvider();\n invariant(provider, \"A provider is required\");\n const {\n extendedMetadata\n } = await fetchAndCacheDeployMetadata(publishMetadataUri, this.storage);\n const forceDirectDeploy = options?.forceDirectDeploy || false;\n if (extendedMetadata && extendedMetadata.factoryDeploymentData && (extendedMetadata.isDeployableViaProxy || extendedMetadata.isDeployableViaFactory || extendedMetadata.deployType === \"autoFactory\") && !forceDirectDeploy) {\n const chainId = (await this.getProvider().getNetwork()).chainId;\n const implementationAddress = extendedMetadata.factoryDeploymentData.implementationAddresses[chainId];\n if (!implementationAddress || extendedMetadata.deployType === \"autoFactory\") {\n const create2FactoryAddress = await getCreate2FactoryAddress(this.getProvider());\n transactions.push({\n contractType: \"create2Factory\",\n addresses: [create2FactoryAddress]\n });\n const deploymentInfo = await getDeploymentInfo(publishMetadataUri, this.storage, this.getProvider(), create2FactoryAddress, this.options.clientId, this.options.secretKey);\n const transactionsToSend = deploymentInfo.filter(i => i.transaction.data && i.transaction.data.length > 0);\n const transactionsforDirectDeploy = transactionsToSend.filter(i => {\n return i.type !== \"infra\";\n }).map(i => i.transaction);\n transactionsforDirectDeploy.forEach(tx => {\n transactions.push({\n contractType: \"preset\",\n addresses: [tx.predictedAddress]\n });\n });\n const transactionsForThrowawayDeployer = transactionsToSend.filter(i => {\n return i.type === \"infra\";\n }).map(i => i.transaction);\n const transactionBatches = createTransactionBatches(transactionsForThrowawayDeployer);\n transactionBatches.forEach(batch => {\n const addresses = batch.map(tx => tx.predictedAddress);\n transactions.push({\n contractType: \"infra\",\n addresses: addresses\n });\n });\n }\n transactions = (await Promise.all(transactions.map(async tx => {\n const addresses = (await Promise.all(tx.addresses.map(async address => {\n const isDeployed = await isContractDeployed(address, provider);\n return isDeployed ? null : address;\n }))).filter(Boolean);\n return addresses.length > 0 ? tx : null;\n }))).filter(Boolean);\n transactions.push({\n contractType: \"proxy\",\n addresses: []\n });\n } else {\n transactions.push({\n contractType: \"custom\",\n addresses: []\n });\n }\n return transactions;\n }\n\n /**\n * Listen to all deploy transactions from this deployer\n * @param listener - the listener to add\n */\n addDeployListener(listener) {\n this.events.on(\"contractDeployed\", listener);\n }\n\n /**\n * Remove a deploy listener\n * @param listener - the listener to remove\n */\n removeDeployListener(listener) {\n this.events.off(\"contractDeployed\", listener);\n }\n\n /**\n * Remove all deploy listeners\n */\n removeAllDeployListeners() {\n this.events.removeAllListeners(\"contractDeployed\");\n }\n\n // PRIVATE METHODS\n\n async fetchPublishedContractFromPolygon(publisherAddress, contractName, version) {\n const address = await resolveAddress(publisherAddress);\n // TODO don't create a new sdk instance here, instead read from contract directly with provider\n // this will allow moving deployer out of this file and help with tree shaking\n const publishedContract = await new ThirdwebSDK(\"polygon\", {\n clientId: this.options.clientId,\n secretKey: this.options.secretKey\n }, this.storage).getPublisher().getVersion(address, contractName, version);\n if (!publishedContract) {\n throw new Error(`No published contract found for '${contractName}' at version '${version}' by '${address}'`);\n }\n return publishedContract;\n }\n hasLocalFactory() {\n return !!getProcessEnv(\"factoryAddress\");\n }\n}\n\nexport { APPROVED_IMPLEMENTATIONS as A, ContractDeployer as C, LOCAL_NODE_PKEY as L, SUPPORTED_CHAIN_IDS as S, ThirdwebSDK as T, UserWallet as U, getAllDetectedExtensionNames as a, verify as b, checkClientIdOrSecretKey as c, checkVerificationStatus as d, extractFunctionParamsFromAbi as e, computeCloneFactoryAddress as f, getAllDetectedFeatureNames as g, getThirdwebContractAddress as h, isVerifiedOnEtherscan as i, getEncodedConstructorParamsForThirdwebContract as j, deployCreate2Factory as k, directDeployDeterministic as l, directDeployDeterministicWithUri as m, directDeployDeterministicPublished as n, predictAddressDeterministic as o, predictThirdwebContractAddress as p, predictAddressDeterministicWithUri as q, predictAddressDeterministicPublished as r, convertParamValues as s, getDeployArguments as t, getTrustedForwarders as u, verifyThirdwebPrebuiltImplementation as v, getApprovedImplementation as w, getDefaultTrustedForwarders as x };\n","import { al as isFeatureEnabled, bn as AbiSchema, K as fetchContractMetadataFromAddress, z as parseRevertReason, J as getContractMetadataFromCache, as as fetchSourceFilesFromMetadata, y as TransactionError, ao as getCompositeABI, cu as ContractWrapper, aQ as signTypedDataInternal, ds as signEIP2612Permit, aS as CONTRACT_ADDRESSES, aG as computeForwarderAddress, dt as getAndIncrementNonce, du as ForwardRequest, aF as computeEOAForwarderAddress, dv as ChainAwareForwardRequest, aT as getContractAddressByChainId, dw as BiconomyForwarderAbi, _ as getGasPrice, Y as getDefaultGasOverrides } from './index-924d29a2.browser.esm.js';\nimport { Contract, BigNumber, utils, constants } from 'ethers';\nimport invariant from 'tiny-invariant';\n\nfunction buildDeployTransactionFunction(fn) {\n async function executeFn() {\n const tx = await fn(...arguments);\n return tx.execute();\n }\n executeFn.prepare = fn;\n return executeFn;\n}\nfunction buildTransactionFunction(fn) {\n async function executeFn() {\n const tx = await fn(...arguments);\n return tx.execute();\n }\n executeFn.prepare = fn;\n return executeFn;\n}\n\nfunction isRouterContract(abi) {\n const isPluginRouter = isFeatureEnabled(AbiSchema.parse(abi), \"PluginRouter\");\n const isBaseRouter = isFeatureEnabled(AbiSchema.parse(abi), \"DynamicContract\");\n return isBaseRouter || isPluginRouter;\n}\n\nclass TransactionContext {\n constructor(options) {\n this.args = options.args;\n this.overrides = options.overrides || {};\n this.provider = options.provider;\n this.signer = options.signer;\n this.storage = options.storage;\n\n // Connect provider to signer if it isn't already connected\n if (!this.signer.provider) {\n this.signer = this.signer.connect(this.provider);\n }\n }\n get getSigner() {\n return this.signer;\n }\n get getProvider() {\n return this.provider;\n }\n get getStorage() {\n return this.storage;\n }\n getArgs() {\n return this.args;\n }\n getOverrides() {\n return this.overrides;\n }\n getValue() {\n return this.overrides.value || 0;\n }\n setArgs(args) {\n this.args = args;\n return this;\n }\n setOverrides(overrides) {\n this.overrides = overrides;\n return this;\n }\n updateOverrides(overrides) {\n this.overrides = {\n ...this.overrides,\n ...overrides\n };\n return this;\n }\n setValue(value) {\n this.updateOverrides({\n value\n });\n return this;\n }\n setGasLimit(gasLimit) {\n this.updateOverrides({\n gasLimit\n });\n return this;\n }\n setGasPrice(gasPrice) {\n this.updateOverrides({\n gasPrice\n });\n return this;\n }\n setNonce(nonce) {\n this.updateOverrides({\n nonce\n });\n return this;\n }\n setMaxFeePerGas(maxFeePerGas) {\n this.updateOverrides({\n maxFeePerGas\n });\n return this;\n }\n setMaxPriorityFeePerGas(maxPriorityFeePerGas) {\n this.updateOverrides({\n maxPriorityFeePerGas\n });\n return this;\n }\n setType(type) {\n this.updateOverrides({\n type\n });\n return this;\n }\n setAccessList(accessList) {\n this.updateOverrides({\n accessList\n });\n return this;\n }\n setCustomData(customData) {\n this.updateOverrides({\n customData\n });\n return this;\n }\n setCcipReadEnabled(ccipReadEnabled) {\n this.updateOverrides({\n ccipReadEnabled\n });\n return this;\n }\n /**\n * Set a multiple to multiply the gas limit by\n *\n * @example\n * ```js\n * // Set the gas limit multiple to 1.2 (increase by 20%)\n * tx.setGasLimitMultiple(1.2)\n * ```\n */\n setGasLimitMultiple(factor) {\n // If gasLimit override is set, we can just set it synchronously\n if (BigNumber.isBigNumber(this.overrides.gasLimit)) {\n this.overrides.gasLimit = BigNumber.from(Math.floor(BigNumber.from(this.overrides.gasLimit).toNumber() * factor));\n } else {\n // Otherwise, set a gas multiple to use later\n this.gasMultiple = factor;\n }\n }\n\n /**\n * Estimate the total gas cost of this transaction (in both ether and wei)\n */\n async estimateGasCost() {\n const [gasLimit, gasPrice] = await Promise.all([this.estimateGasLimit(), this.getGasPrice()]);\n const gasCost = gasLimit.mul(gasPrice);\n return {\n ether: utils.formatEther(gasCost),\n wei: gasCost\n };\n }\n\n /**\n * Calculates the gas price for transactions (adding a 10% tip buffer)\n */\n async getGasPrice() {\n return getGasPrice(this.provider);\n }\n\n /**\n * Get the address of the transaction signer\n */\n async getSignerAddress() {\n return this.signer.getAddress();\n }\n\n /**\n * Get gas overrides for the transaction\n */\n async getGasOverrides() {\n return getDefaultGasOverrides(this.provider);\n }\n\n /**\n * Calculates the priority fee per gas according (adding a 10% buffer)\n */\n getPreferredPriorityFee(defaultPriorityFeePerGas) {\n const extraTip = defaultPriorityFeePerGas.div(100).mul(10); // + 10%\n const txGasPrice = defaultPriorityFeePerGas.add(extraTip);\n return txGasPrice;\n }\n}\nclass Transaction extends TransactionContext {\n static fromContractWrapper(options) {\n const signer = options.contractWrapper.getSigner();\n if (!signer) {\n throw new Error(\"Cannot create a transaction without a signer. Please ensure that you have a connected signer.\");\n }\n const optionsWithContract = {\n ...options,\n contract: options.contractWrapper.writeContract,\n provider: options.contractWrapper.getProvider(),\n signer,\n gasless: options.contractWrapper.options.gasless,\n storage: options.contractWrapper.storage\n };\n return new Transaction(optionsWithContract);\n }\n static async fromContractInfo(options) {\n const storage = options.storage;\n let contractAbi = options.contractAbi;\n if (!contractAbi) {\n try {\n const metadata = await fetchContractMetadataFromAddress(options.contractAddress, options.provider, storage);\n contractAbi = metadata.abi;\n } catch {\n throw new Error(`Could resolve contract metadata for address ${options.contractAddress}. Please pass the contract ABI manually with the 'contractAbi' option.`);\n }\n }\n const contract = new Contract(options.contractAddress, contractAbi, options.provider);\n const optionsWithContract = {\n ...options,\n storage,\n contract\n };\n return new Transaction(optionsWithContract);\n }\n constructor(options) {\n super({\n args: options.args,\n overrides: options.overrides,\n provider: options.provider,\n signer: options.signer,\n storage: options.storage\n });\n this.method = options.method;\n this.gaslessOptions = options.gasless;\n this.parse = options.parse;\n\n // Always connect the signer to the contract\n this.contract = options.contract.connect(this.signer);\n\n // Create new storage instance if one isn't provided\n this.storage = options.storage;\n }\n getTarget() {\n return this.contract.address;\n }\n getMethod() {\n return this.method;\n }\n getGaslessOptions() {\n return this.gaslessOptions;\n }\n setGaslessOptions(options) {\n this.gaslessOptions = options;\n return this;\n }\n setParse(parse) {\n this.parse = parse;\n return this;\n }\n\n /**\n * Encode the function data for this transaction\n */\n encode() {\n return this.contract.interface.encodeFunctionData(this.method, this.args);\n }\n\n /**\n * Get the signed transaction\n */\n async sign() {\n const populatedTx = await this.populateTransaction();\n const signedTx = await this.contract.signer.signTransaction(populatedTx);\n return signedTx;\n }\n async populateTransaction() {\n const gasOverrides = await this.getGasOverrides();\n const overrides = {\n ...gasOverrides,\n ...this.overrides\n };\n\n // First, if no gasLimit is passed, call estimate gas ourselves\n if (!overrides.gasLimit) {\n overrides.gasLimit = await this.estimateGasLimit();\n }\n const tx = await this.contract.populateTransaction[this.method](...this.args, overrides);\n const populatedTx = await this.contract.signer.populateTransaction(tx);\n return populatedTx;\n }\n\n /**\n * Simulate the transaction on-chain without executing\n */\n async simulate() {\n if (!this.contract.callStatic[this.method]) {\n throw this.functionError();\n }\n try {\n return await this.contract.callStatic[this.method](...this.args, ...(this.overrides.value ? [{\n value: this.overrides.value\n }] : []));\n } catch (err) {\n throw await this.transactionError(err);\n }\n }\n\n /**\n * Estimate the gas limit of this transaction\n */\n async estimateGasLimit() {\n if (!this.contract.estimateGas[this.method]) {\n throw this.functionError();\n }\n try {\n const gasEstimate = await this.contract.estimateGas[this.method](...this.args, this.overrides);\n if (this.gasMultiple) {\n return BigNumber.from(Math.floor(BigNumber.from(gasEstimate).toNumber() * this.gasMultiple));\n }\n return gasEstimate;\n } catch (err) {\n // If gas estimation fails, we'll call static to get a better error message\n await this.simulate();\n\n // If transaction simulation (static call) doesn't throw, then throw a generic error\n throw await this.transactionError(err);\n }\n }\n\n /**\n * Send the transaction without waiting for it to be mined.\n */\n async send() {\n if (!this.contract.functions[this.method]) {\n throw this.functionError();\n }\n if (this.gaslessOptions && (\"openzeppelin\" in this.gaslessOptions || \"biconomy\" in this.gaslessOptions || \"engine\" in this.gaslessOptions)) {\n return this.sendGasless();\n }\n const gasOverrides = await this.getGasOverrides();\n const overrides = {\n ...gasOverrides,\n ...this.overrides\n };\n\n // First, if no gasLimit is passed, call estimate gas ourselves\n if (!overrides.gasLimit) {\n overrides.gasLimit = await this.estimateGasLimit();\n try {\n // for dynamic contracts, add 30% to the gas limit to account for multiple delegate calls\n const abi = JSON.parse(this.contract.interface.format(\"json\"));\n if (isRouterContract(abi)) {\n overrides.gasLimit = overrides.gasLimit.mul(110).div(100);\n }\n } catch (err) {\n console.warn(\"Error raising gas limit\", err);\n }\n }\n\n // Now there should be no gas estimate errors\n try {\n return await this.contract.functions[this.method](...this.args, overrides);\n } catch (err) {\n throw await this.transactionError(err);\n }\n }\n\n /**\n * Send the transaction and wait for it to be mined\n */\n async execute() {\n const tx = await this.send();\n let receipt;\n try {\n receipt = await tx.wait();\n } catch (err) {\n // If tx.wait() fails, it just gives us a generic \"transaction failed\"\n // error. So instead, we need to call static to get an informative error message\n await this.simulate();\n\n // If transaction simulation (static call) doesn't throw, then throw with the message that we have\n throw await this.transactionError(err);\n }\n if (this.parse) {\n return this.parse(receipt);\n }\n return {\n receipt\n };\n }\n\n /**\n * Execute the transaction with gasless\n */\n async sendGasless() {\n const tx = await this.prepareGasless();\n const txHash = await defaultGaslessSendFunction(tx, this.signer, this.provider, this.storage, this.gaslessOptions);\n\n // Need to poll here because ethers.provider.getTransaction lies about the type\n // It can actually return null, which can happen if we're still in gasless API send queue\n let sentTx;\n let iteration = 1;\n while (!sentTx) {\n try {\n sentTx = await this.provider.getTransaction(txHash);\n } catch (err) {\n // some providers can throw an error if the tx is very recent\n }\n // Exponential (ish) backoff for polling\n if (!sentTx) {\n await new Promise(resolve => setTimeout(resolve, Math.min(iteration * 1000, 10000)));\n iteration++;\n }\n\n // Timeout if we still don't have it after a while\n if (iteration > 20) {\n throw new Error(`Unable to retrieve transaction with hash ${txHash}`);\n }\n }\n return sentTx;\n }\n\n /**\n * @internal\n * @returns\n */\n async prepareGasless() {\n invariant(this.gaslessOptions && (\"openzeppelin\" in this.gaslessOptions || \"biconomy\" in this.gaslessOptions || \"engine\" in this.gaslessOptions), \"No gasless options set on this transaction!\");\n const signerAddress = await this.getSignerAddress();\n const args = [...this.args];\n if (this.method === \"multicall\" && Array.isArray(this.args[0]) && args[0].length > 0) {\n args[0] = args[0].map(tx => utils.solidityPack([\"bytes\", \"address\"], [tx, signerAddress]));\n }\n invariant(this.signer, \"Cannot execute gasless transaction without valid signer\");\n const [{\n chainId\n }, from] = await Promise.all([this.provider.getNetwork(), this.overrides.from || signerAddress]);\n const to = this.contract.address;\n const value = this.overrides?.value || 0;\n if (BigNumber.from(value).gt(0)) {\n throw new Error(\"Cannot send native token value with gasless transaction\");\n }\n const data = this.contract.interface.encodeFunctionData(this.method, args);\n let gas = BigNumber.from(0);\n try {\n const gasEstimate = await this.contract.estimateGas[this.method](...args);\n gas = gasEstimate.mul(2);\n } catch (e) {\n // ignore\n }\n\n // in some cases WalletConnect doesn't properly give an estimate for how much gas it would actually use.\n // as a fix, we're setting it to a high arbitrary number (500k) as the gas limit that should cover for most function calls.\n if (gas.lt(100000)) {\n gas = BigNumber.from(500000);\n }\n\n // check for gas override in callOverrides\n if (this.overrides.gasLimit && BigNumber.from(this.overrides.gasLimit).gt(gas)) {\n gas = BigNumber.from(this.overrides.gasLimit);\n }\n return {\n from,\n to,\n data,\n chainId,\n gasLimit: gas,\n functionName: this.method,\n functionArgs: args,\n callOverrides: this.overrides\n };\n }\n functionError() {\n return new Error(`Contract \"${this.contract.address}\" does not have function \"${this.method}\"`);\n }\n\n /**\n * Create a nicely formatted error message with tx metadata and solidity stack trace\n */\n async transactionError(error) {\n const provider = this.provider;\n\n // Get metadata for transaction to populate into error\n const [network, from] = await Promise.all([provider.getNetwork(), this.overrides.from || this.getSignerAddress()]);\n const to = this.contract.address;\n const data = this.encode();\n const value = BigNumber.from(this.overrides.value || 0);\n const rpcUrl = provider.connection?.url;\n\n // Render function signature with arguments filled in\n const functionSignature = this.contract.interface.getFunction(this.method);\n const methodArgs = this.args.map(arg => {\n if (JSON.stringify(arg).length <= 80) {\n return JSON.stringify(arg);\n }\n return JSON.stringify(arg, undefined, 2);\n });\n const joinedArgs = methodArgs.join(\", \").length <= 80 ? methodArgs.join(\", \") : \"\\n\" + methodArgs.map(arg => \" \" + arg.split(\"\\n\").join(\"\\n \")).join(\",\\n\") + \"\\n\";\n const method = `${functionSignature.name}(${joinedArgs})`;\n const hash = error.transactionHash || error.transaction?.hash || error.receipt?.transactionHash;\n\n // Parse the revert reason from the error\n const reason = parseRevertReason(error);\n\n // Get contract sources for stack trace\n let sources = undefined;\n let contractName = undefined;\n try {\n const chainId = (await provider.getNetwork()).chainId;\n const metadata = getContractMetadataFromCache(this.contract.address, chainId);\n if (metadata?.name) {\n contractName = metadata.name;\n }\n if (metadata?.metadata.sources) {\n sources = await fetchSourceFilesFromMetadata(metadata, this.storage);\n }\n } catch (err) {\n // no-op\n }\n return new TransactionError({\n reason,\n from,\n to,\n method,\n data,\n network,\n rpcUrl,\n value,\n hash,\n contractName,\n sources\n }, error);\n }\n}\nclass DeployTransaction extends TransactionContext {\n constructor(options) {\n super(options);\n this.factory = options.factory;\n this.events = options.events;\n }\n encode() {\n return utils.hexlify(utils.concat([this.factory.bytecode, this.factory.interface.encodeDeploy(this.args)]));\n }\n getTarget() {\n return constants.AddressZero;\n }\n getMethod() {\n return \"deploy\";\n }\n async sign() {\n const populatedTx = await this.populateTransaction();\n return this.signer.signTransaction(populatedTx);\n }\n async simulate() {\n const populatedTx = await this.populateTransaction();\n return this.signer.call(populatedTx);\n }\n async estimateGasLimit() {\n try {\n const gasOverrides = await this.getGasOverrides();\n const overrides = {\n ...gasOverrides,\n ...this.overrides\n };\n const populatedTx = this.factory.getDeployTransaction(...this.args, overrides);\n return this.signer.estimateGas(populatedTx);\n } catch (err) {\n // No need to do simulation here, since there can't be revert errors\n throw await this.deployError(err);\n }\n }\n async send() {\n try {\n const populatedTx = await this.populateTransaction();\n return await this.signer.sendTransaction(populatedTx);\n } catch (err) {\n throw await this.deployError(err);\n }\n }\n async execute() {\n const tx = await this.send();\n try {\n await tx.wait();\n } catch (err) {\n // If tx.wait() fails, it just gives us a generic \"transaction failed\"\n // error. So instead, we need to call static to get an informative error message\n await this.simulate();\n\n // If transaction simulation (static call) doesn't throw, then throw with the message that we have\n throw await this.deployError(err);\n }\n const contractAddress = utils.getContractAddress({\n from: tx.from,\n nonce: tx.nonce\n });\n\n // TODO: Remove when we delete events from deploy\n if (this.events) {\n this.events.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress,\n transactionHash: tx.hash\n });\n }\n return contractAddress;\n }\n async populateTransaction() {\n const gasOverrides = await this.getGasOverrides();\n const overrides = {\n ...gasOverrides,\n ...this.overrides\n };\n\n // First, if no gasLimit is passed, call estimate gas ourselves\n if (!overrides.gasLimit) {\n overrides.gasLimit = await this.estimateGasLimit();\n }\n return this.factory.getDeployTransaction(...this.args, overrides);\n }\n\n /**\n * Create a nicely formatted error message with tx metadata and solidity stack trace\n */\n async deployError(error) {\n const provider = this.provider;\n\n // Get metadata for transaction to populate into error\n const [network, from] = await Promise.all([provider.getNetwork(), this.overrides.from || this.getSignerAddress()]);\n const data = this.encode();\n const value = BigNumber.from(this.overrides.value || 0);\n const rpcUrl = provider.connection?.url;\n const methodArgs = this.args.map(arg => {\n if (JSON.stringify(arg).length <= 80) {\n return JSON.stringify(arg);\n }\n return JSON.stringify(arg, undefined, 2);\n });\n const joinedArgs = methodArgs.join(\", \").length <= 80 ? methodArgs.join(\", \") : \"\\n\" + methodArgs.map(arg => \" \" + arg.split(\"\\n\").join(\"\\n \")).join(\",\\n\") + \"\\n\";\n const method = `deployContract(${joinedArgs})`;\n const hash = error.transactionHash || error.transaction?.hash || error.receipt?.transactionHash;\n\n // Parse the revert reason from the error\n const reason = parseRevertReason(error);\n return new TransactionError({\n reason,\n from,\n method,\n data,\n network,\n rpcUrl,\n value,\n hash\n }, error);\n }\n}\nasync function defaultGaslessSendFunction(transaction, signer, provider, storage, gaslessOptions) {\n if (gaslessOptions && \"biconomy\" in gaslessOptions) {\n return biconomySendFunction(transaction, signer, provider, gaslessOptions);\n } else if (gaslessOptions && \"openzeppelin\" in gaslessOptions) {\n return defenderSendFunction(transaction, signer, provider, storage, gaslessOptions);\n }\n return engineSendFunction(transaction, signer, provider, storage, gaslessOptions);\n}\nasync function engineSendFunction(transaction, signer, provider, storage, gaslessOptions) {\n invariant(gaslessOptions && \"engine\" in gaslessOptions, \"calling engine gasless transaction without engine config in the SDK options\");\n const request = await enginePrepareRequest(transaction, signer, provider, storage);\n const res = await fetch(gaslessOptions.engine.relayerUrl, {\n ...request,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await res.json();\n if (data.error) {\n throw new Error(data.error?.message || JSON.stringify(data.error));\n }\n const queueId = data.result.queueId;\n const engineUrl = gaslessOptions.engine.relayerUrl.split(\"/relayer/\")[0];\n const startTime = Date.now();\n while (true) {\n const txRes = await fetch(`${engineUrl}/transaction/status/${queueId}`);\n const txData = await txRes.json();\n if (txData.result.transactionHash) {\n return txData.result.transactionHash;\n }\n\n // Time out after 30s\n if (Date.now() - startTime > 30 * 1000) {\n throw new Error(\"timeout\");\n }\n\n // Poll to check if the transaction was mined\n await new Promise(resolve => setTimeout(resolve, 2000));\n }\n}\nasync function biconomySendFunction(transaction, signer, provider, gaslessOptions) {\n const request = await biconomyPrepareRequest(transaction, signer, provider, gaslessOptions);\n const response = await fetch(\"https://api.biconomy.io/api/v2/meta-tx/native\", request);\n if (response.ok) {\n const resp = await response.json();\n if (!resp.txHash) {\n throw new Error(`relay transaction failed: ${resp.log}`);\n }\n return resp.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n}\nasync function defenderSendFunction(transaction, signer, provider, storage, gaslessOptions) {\n invariant(gaslessOptions && \"openzeppelin\" in gaslessOptions, \"calling openzeppelin gasless transaction without openzeppelin config in the SDK options\");\n const request = await defenderPrepareRequest(transaction, signer, provider, storage, gaslessOptions);\n const response = await fetch(gaslessOptions.openzeppelin.relayerUrl, request);\n if (response.ok) {\n const resp = await response.json();\n if (!resp.result) {\n throw new Error(`Relay transaction failed: ${resp.message}`);\n }\n const result = JSON.parse(resp.result);\n return result.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n}\nasync function enginePrepareRequest(transaction, signer, provider, storage) {\n try {\n const metadata = await fetchContractMetadataFromAddress(transaction.to, provider, storage);\n const chainId = (await provider.getNetwork()).chainId;\n const abi = await getCompositeABI(transaction.to, metadata.abi, provider, {}, storage);\n const contract = new ContractWrapper(signer, transaction.to, abi, {}, storage);\n if (abi.find(item => item.name === \"executeMetaTransaction\")) {\n const name = await contract.call(\"name\", []);\n const domain = {\n name,\n version: \"1\",\n salt: \"0x\" + chainId.toString(16).padStart(64, \"0\"),\n // Use 64 length hex chain id as salt\n verifyingContract: transaction.to\n };\n const types = {\n MetaTransaction: [{\n name: \"nonce\",\n type: \"uint256\"\n }, {\n name: \"from\",\n type: \"address\"\n }, {\n name: \"functionSignature\",\n type: \"bytes\"\n }]\n };\n const nonce = await contract.call(\"getNonce\", [transaction.from]);\n const message = {\n nonce: nonce,\n from: transaction.from,\n functionSignature: transaction.data\n };\n const {\n signature\n } = await signTypedDataInternal(signer, domain, types, message);\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"execute-meta-transaction\",\n request: {\n from: transaction.from,\n to: transaction.to,\n data: transaction.data\n },\n signature\n })\n };\n }\n } catch {\n // no-op\n }\n if (transaction.functionName === \"approve\" && transaction.functionArgs.length === 2) {\n const spender = transaction.functionArgs[0];\n const amount = transaction.functionArgs[1];\n // TODO: support DAI permit by signDAIPermit\n const {\n message: permit,\n signature: sig\n } = await signEIP2612Permit(signer, transaction.to, transaction.from, spender, amount);\n const message = {\n to: transaction.to,\n owner: permit.owner,\n spender: permit.spender,\n value: BigNumber.from(permit.value).toString(),\n nonce: BigNumber.from(permit.nonce).toString(),\n deadline: BigNumber.from(permit.deadline).toString()\n };\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"permit\",\n request: message,\n signature: sig\n })\n };\n } else {\n const forwarderAddress = CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarder || (await computeForwarderAddress(provider, storage));\n const ForwarderABI = (await import('@thirdweb-dev/contracts-js/dist/abis/Forwarder.json')).default;\n const forwarder = new Contract(forwarderAddress, ForwarderABI, provider);\n const nonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from]);\n const domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n chainId: transaction.chainId,\n verifyingContract: forwarderAddress\n };\n const types = {\n ForwardRequest\n };\n const message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data\n };\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n const signature = sig;\n return {\n method: \"POST\",\n body: JSON.stringify({\n type: \"forward\",\n request: message,\n signature,\n forwarderAddress\n })\n };\n }\n}\nasync function defenderPrepareRequest(transaction, signer, provider, storage, gaslessOptions) {\n invariant(gaslessOptions && \"openzeppelin\" in gaslessOptions, \"calling openzeppelin gasless transaction without openzeppelin config in the SDK options\");\n invariant(signer, \"provider is not set\");\n invariant(provider, \"provider is not set\");\n const forwarderAddress = gaslessOptions.openzeppelin.relayerForwarderAddress || (gaslessOptions.openzeppelin.useEOAForwarder ? CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarderEOA || (await computeEOAForwarderAddress(provider, storage)) : CONTRACT_ADDRESSES[transaction.chainId]?.openzeppelinForwarder || (await computeForwarderAddress(provider, storage)));\n const ForwarderABI = (await import('@thirdweb-dev/contracts-js/dist/abis/Forwarder.json')).default;\n const forwarder = new Contract(forwarderAddress, ForwarderABI, provider);\n const nonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from]);\n let domain;\n let types;\n let message;\n if (gaslessOptions.experimentalChainlessSupport) {\n domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest: ChainAwareForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data,\n chainid: BigNumber.from(transaction.chainId).toString()\n };\n } else {\n domain = {\n name: gaslessOptions.openzeppelin.domainName,\n version: gaslessOptions.openzeppelin.domainVersion,\n chainId: transaction.chainId,\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data\n };\n }\n let signature;\n\n // if the executing function is \"approve\" and matches with erc20 approve signature\n // and if the token supports permit, then we use permit for gasless instead of approve.\n if (transaction.functionName === \"approve\" && transaction.functionArgs.length === 2) {\n const spender = transaction.functionArgs[0];\n const amount = transaction.functionArgs[1];\n // TODO: support DAI permit by signDAIPermit\n const {\n message: permit,\n signature: sig\n } = await signEIP2612Permit(signer, transaction.to, transaction.from, spender, amount);\n const {\n r,\n s,\n v\n } = utils.splitSignature(sig);\n message = {\n to: transaction.to,\n owner: permit.owner,\n spender: permit.spender,\n value: BigNumber.from(permit.value).toString(),\n nonce: BigNumber.from(permit.nonce).toString(),\n deadline: BigNumber.from(permit.deadline).toString(),\n r,\n s,\n v\n };\n signature = sig;\n } else {\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n signature = sig;\n }\n let messageType = \"forward\";\n\n // if has owner property then it's permit :)\n if (message?.owner) {\n messageType = \"permit\";\n }\n return {\n method: \"POST\",\n body: JSON.stringify({\n request: message,\n signature,\n forwarderAddress,\n type: messageType\n })\n };\n}\nasync function prepareGaslessRequest(tx) {\n const gaslessTx = await tx.prepareGasless();\n const gaslessOptions = tx.getGaslessOptions();\n if (gaslessOptions && \"biconomy\" in gaslessOptions) {\n const request = await biconomyPrepareRequest(gaslessTx, tx.getSigner, tx.getProvider, gaslessOptions);\n return {\n url: \"https://api.biconomy.io/api/v2/meta-tx/native\",\n ...request\n };\n } else {\n invariant(gaslessOptions && \"openzeppelin\" in gaslessOptions, \"calling openzeppelin gasless transaction without openzeppelin config in the SDK options\");\n const request = await defenderPrepareRequest(gaslessTx, tx.getSigner, tx.getProvider, tx.getStorage, gaslessOptions);\n return {\n url: gaslessOptions.openzeppelin.relayerUrl,\n ...request\n };\n }\n}\nasync function biconomyPrepareRequest(transaction, signer, provider, gaslessOptions) {\n invariant(gaslessOptions && \"biconomy\" in gaslessOptions, \"calling biconomySendFunction without biconomy\");\n invariant(signer && provider, \"signer and provider must be set\");\n const forwarder = new Contract(getContractAddressByChainId(transaction.chainId, \"biconomyForwarder\"), BiconomyForwarderAbi, provider);\n const batchId = 0;\n const batchNonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from, batchId]);\n const request = {\n from: transaction.from,\n to: transaction.to,\n token: constants.AddressZero,\n txGas: transaction.gasLimit.toNumber(),\n tokenGasPrice: \"0\",\n batchId,\n batchNonce: batchNonce.toNumber(),\n deadline: Math.floor(Date.now() / 1000 + (gaslessOptions && \"biconomy\" in gaslessOptions && gaslessOptions.biconomy?.deadlineSeconds || 3600)),\n data: transaction.data\n };\n const hashToSign = utils.arrayify(utils.solidityKeccak256([\"address\", \"address\", \"address\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"bytes32\"], [request.from, request.to, request.token, request.txGas, request.tokenGasPrice, request.batchId, request.batchNonce, request.deadline, utils.keccak256(request.data)]));\n const signature = await signer.signMessage(hashToSign);\n return {\n method: \"POST\",\n body: JSON.stringify({\n from: transaction.from,\n apiId: gaslessOptions.biconomy.apiId,\n params: [request, signature],\n to: transaction.to,\n gasLimit: transaction.gasLimit.toHexString()\n }),\n headers: {\n \"x-api-key\": gaslessOptions.biconomy.apiKey,\n \"Content-Type\": \"application/json;charset=utf-8\"\n }\n };\n}\n\nexport { DeployTransaction as D, Transaction as T, defenderSendFunction as a, biconomySendFunction as b, buildTransactionFunction as c, defaultGaslessSendFunction as d, engineSendFunction as e, buildDeployTransactionFunction as f, prepareGaslessRequest as p };\n","import CIDTool from 'cid-tool';\nimport { sha256HexSync } from '@thirdweb-dev/crypto';\nimport FormData from 'form-data';\nimport { v4 } from 'uuid';\n\nfunction getProcessEnv(key) {\n let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n if (typeof process !== \"undefined\") {\n if (process.env[key]) {\n return process.env[key];\n }\n }\n return defaultValue;\n}\n\nconst TW_HOSTNAME_SUFFIX = \".ipfscdn.io\";\nconst TW_STAGINGHOSTNAME_SUFFIX = \".thirdwebstorage-staging.com\";\nconst TW_GATEWAY_URLS = [`https://{clientId}${TW_HOSTNAME_SUFFIX}/ipfs/{cid}/{path}`];\n\n/**\n * @internal\n * @param url - the url to check\n * @returns\n */\nfunction isTwGatewayUrl(url) {\n const hostname = new URL(url).hostname;\n const isProd = hostname.endsWith(TW_HOSTNAME_SUFFIX);\n if (isProd) {\n return true;\n }\n // fall back to also handle staging urls\n return hostname.endsWith(TW_STAGINGHOSTNAME_SUFFIX);\n}\nconst PUBLIC_GATEWAY_URLS = [\"https://{cid}.ipfs.cf-ipfs.com/{path}\", \"https://{cid}.ipfs.dweb.link/{path}\", \"https://ipfs.io/ipfs/{cid}/{path}\", \"https://cloudflare-ipfs.com/ipfs/{cid}/{path}\", \"https://{cid}.ipfs.w3s.link/{path}\", \"https://w3s.link/ipfs/{cid}/{path}\", \"https://nftstorage.link/ipfs/{cid}/{path}\", \"https://gateway.pinata.cloud/ipfs/{cid}/{path}\"];\n\n/**\n * @internal\n */\nconst DEFAULT_GATEWAY_URLS = {\n // Note: Gateway URLs should have trailing slashes (we clean this on user input)\n \"ipfs://\": [...TW_GATEWAY_URLS, ...PUBLIC_GATEWAY_URLS]\n};\n\n/**\n * @internal\n */\nconst TW_UPLOAD_SERVER_URL = getProcessEnv(\"CUSTOM_UPLOAD_SERVER_URL\", \"https://storage.thirdweb.com\");\n\n/**\n * @internal\n */\nconst PINATA_IPFS_URL = `https://api.pinata.cloud/pinning/pinFileToIPFS`;\n\n/**\n * @internal\n */\nfunction parseGatewayUrls(gatewayUrls) {\n if (Array.isArray(gatewayUrls)) {\n return {\n \"ipfs://\": gatewayUrls\n };\n }\n return gatewayUrls || {};\n}\n\n/**\n * @internal\n */\nfunction getGatewayUrlForCid(gatewayUrl, cid, clientId) {\n const parts = cid.split(\"/\");\n const hash = convertCidToV1(parts[0]);\n const filePath = parts.slice(1).join(\"/\");\n let url = gatewayUrl;\n\n // If the URL contains {cid} or {path} tokens, replace them with the CID and path\n // Both tokens must be present for the URL to be valid\n if (gatewayUrl.includes(\"{cid}\") && gatewayUrl.includes(\"{path}\")) {\n url = url.replace(\"{cid}\", hash).replace(\"{path}\", filePath);\n }\n // If the URL contains only the {cid} token, replace it with the CID\n else if (gatewayUrl.includes(\"{cid}\")) {\n url = url.replace(\"{cid}\", hash);\n }\n // If those tokens don't exist, use the canonical gateway URL format\n else {\n url += `${hash}/${filePath}`;\n }\n // if the URL contains the {clientId} token, replace it with the client ID\n if (gatewayUrl.includes(\"{clientId}\")) {\n if (!clientId) {\n throw new Error(\"Cannot use {clientId} in gateway URL without providing a client ID\");\n }\n url = url.replace(\"{clientId}\", clientId);\n }\n return url;\n}\n\n/**\n * @internal\n */\nfunction prepareGatewayUrls(gatewayUrls, clientId, secretKey) {\n const allGatewayUrls = {\n ...DEFAULT_GATEWAY_URLS,\n ...gatewayUrls\n };\n for (const key of Object.keys(allGatewayUrls)) {\n const cleanedGatewayUrls = allGatewayUrls[key].map(url => {\n // inject clientId when present\n if (clientId && url.includes(\"{clientId}\")) {\n return url.replace(\"{clientId}\", clientId);\n } else if (secretKey && url.includes(\"{clientId}\")) {\n // should only be used on Node.js in a backend/script context\n if (typeof window !== \"undefined\") {\n throw new Error(\"Cannot use secretKey in browser context\");\n }\n const hashedSecretKey = sha256HexSync(secretKey);\n const derivedClientId = hashedSecretKey.slice(0, 32);\n return url.replace(\"{clientId}\", derivedClientId);\n } else if (url.includes(\"{clientId}\")) {\n // if no client id passed, filter out the url\n return undefined;\n } else {\n return url;\n }\n }).filter(url => url !== undefined);\n allGatewayUrls[key] = cleanedGatewayUrls;\n }\n return allGatewayUrls;\n}\n\n/**\n * @internal\n */\nfunction convertCidToV1(cid) {\n let normalized;\n try {\n const hash = cid.split(\"/\")[0];\n normalized = CIDTool.base32(hash);\n } catch (e) {\n throw new Error(`The CID ${cid} is not valid.`);\n }\n return normalized;\n}\n\n/**\n * @internal\n */\nfunction isBrowser() {\n return typeof window !== \"undefined\";\n}\n\n/**\n * @internal\n */\nfunction isFileInstance(data) {\n return global.File && data instanceof File;\n}\n\n/**\n * @internal\n */\nfunction isBufferInstance(data) {\n return global.Buffer && data instanceof Buffer;\n}\n\n/**\n * @internal\n */\nfunction isBufferOrStringWithName(data) {\n return !!(data && data.name && data.data && typeof data.name === \"string\" && (typeof data.data === \"string\" || isBufferInstance(data.data)));\n}\nfunction isFileOrBuffer(data) {\n return isFileInstance(data) || isBufferInstance(data) || isBufferOrStringWithName(data);\n}\n\n/**\n * @internal\n */\nfunction isFileBufferOrStringEqual(input1, input2) {\n if (isFileInstance(input1) && isFileInstance(input2)) {\n // if both are File types, compare the name, size, and last modified date (best guess that these are the same files)\n if (input1.name === input2.name && input1.lastModified === input2.lastModified && input1.size === input2.size) {\n return true;\n }\n } else if (isBufferInstance(input1) && isBufferInstance(input2)) {\n // buffer gives us an easy way to compare the contents!\n\n return input1.equals(input2);\n } else if (isBufferOrStringWithName(input1) && isBufferOrStringWithName(input2)) {\n // first check the names\n if (input1.name === input2.name) {\n // if the data for both is a string, compare the strings\n if (typeof input1.data === \"string\" && typeof input2.data === \"string\") {\n return input1.data === input2.data;\n } else if (isBufferInstance(input1.data) && isBufferInstance(input2.data)) {\n // otherwise we know it's buffers, so compare the buffers\n return input1.data.equals(input2.data);\n }\n }\n }\n // otherwise if we have not found a match, return false\n return false;\n}\n\n/**\n * @internal\n */\nfunction parseCidAndPath(gatewayUrl, uri) {\n const regexString = gatewayUrl.replace(\"{cid}\", \"(?[^/]+)\").replace(\"{path}\", \"(?[^?#]+)\");\n const regex = new RegExp(regexString);\n const match = uri.match(regex);\n if (match) {\n const hash = match.groups?.hash;\n const path = match.groups?.path;\n const queryString = uri.includes(\"?\") ? uri.substring(uri.indexOf(\"?\") + 1) : \"\";\n return {\n hash,\n path,\n query: queryString\n };\n }\n}\n\n/**\n * @internal\n */\nfunction replaceGatewayUrlWithScheme(uri, gatewayUrls) {\n for (const scheme of Object.keys(gatewayUrls)) {\n for (const gatewayUrl of gatewayUrls[scheme]) {\n // If the url is a tokenized url, we need to convert it to a canonical url\n // Otherwise, we just need to check if the url is a prefix of the uri\n if (gatewayUrl.includes(\"{cid}\")) {\n // Given the url is a tokenized url, we need to lift the cid and the path from the uri\n const parsed = parseCidAndPath(gatewayUrl, uri);\n if (parsed?.hash && parsed?.path) {\n const queryString = parsed?.query ? `?${parsed?.query}` : \"\";\n return `${scheme}${parsed?.hash}/${parsed?.path}${queryString}`;\n } else {\n // If we can't lift the cid and path from the uri, we can't replace the gateway url, return the orig string\n return uri;\n }\n } else if (uri.startsWith(gatewayUrl)) {\n return uri.replace(gatewayUrl, scheme);\n }\n }\n }\n return uri;\n}\n\n/**\n * @internal\n */\nfunction replaceSchemeWithGatewayUrl(uri, gatewayUrls) {\n let index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let clientId = arguments.length > 3 ? arguments[3] : undefined;\n const scheme = Object.keys(gatewayUrls).find(s => uri.startsWith(s));\n const schemeGatewayUrls = scheme ? gatewayUrls[scheme] : [];\n if (!scheme && index > 0 || scheme && index >= schemeGatewayUrls.length) {\n return undefined;\n }\n if (!scheme) {\n return uri;\n }\n const path = uri.replace(scheme, \"\");\n try {\n const gatewayUrl = getGatewayUrlForCid(schemeGatewayUrls[index], path, clientId);\n return gatewayUrl;\n } catch (err) {\n console.warn(`The IPFS uri: ${path} is not valid.`);\n return undefined;\n }\n}\n\n/**\n * @internal\n */\nfunction replaceObjectGatewayUrlsWithSchemes(data, gatewayUrls) {\n if (typeof data === \"string\") {\n return replaceGatewayUrlWithScheme(data, gatewayUrls);\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (isFileOrBuffer(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectGatewayUrlsWithSchemes(entry, gatewayUrls));\n }\n return Object.fromEntries(Object.entries(data).map(_ref => {\n let [key, value] = _ref;\n return [key, replaceObjectGatewayUrlsWithSchemes(value, gatewayUrls)];\n }));\n }\n return data;\n}\n\n/**\n * @internal\n */\nfunction replaceObjectSchemesWithGatewayUrls(data, gatewayUrls, clientId) {\n if (typeof data === \"string\") {\n return replaceSchemeWithGatewayUrl(data, gatewayUrls, 0, clientId);\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (isFileOrBuffer(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectSchemesWithGatewayUrls(entry, gatewayUrls, clientId));\n }\n return Object.fromEntries(Object.entries(data).map(_ref2 => {\n let [key, value] = _ref2;\n return [key, replaceObjectSchemesWithGatewayUrls(value, gatewayUrls, clientId)];\n }));\n }\n return data;\n}\n\n/**\n * @internal\n */\nfunction extractObjectFiles(data) {\n let files = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n // If item is a FileOrBuffer add it to our list of files\n if (isFileOrBuffer(data)) {\n files.push(data);\n return files;\n }\n if (typeof data === \"object\") {\n if (!data) {\n return files;\n }\n if (Array.isArray(data)) {\n data.forEach(entry => extractObjectFiles(entry, files));\n } else {\n Object.keys(data).map(key => extractObjectFiles(data[key], files));\n }\n }\n return files;\n}\n\n/**\n * @internal\n */\nfunction replaceObjectFilesWithUris(data, uris) {\n if (isFileOrBuffer(data)) {\n if (uris.length) {\n data = uris.shift();\n return data;\n } else {\n console.warn(\"Not enough URIs to replace all files in object.\");\n }\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectFilesWithUris(entry, uris));\n } else {\n return Object.fromEntries(Object.entries(data).map(_ref3 => {\n let [key, value] = _ref3;\n return [key, replaceObjectFilesWithUris(value, uris)];\n }));\n }\n }\n return data;\n}\n\nvar pkg = {\n\tname: \"@thirdweb-dev/storage\",\n\tversion: \"2.0.7\",\n\tmain: \"dist/thirdweb-dev-storage.cjs.js\",\n\tmodule: \"dist/thirdweb-dev-storage.esm.js\",\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: \"./dist/thirdweb-dev-storage.esm.js\",\n\t\t\t\"default\": \"./dist/thirdweb-dev-storage.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\"\n\t},\n\trepository: \"https://github.com/thirdweb-dev/js/tree/main/packages/storage\",\n\tauthor: \"thirdweb eng \",\n\tlicense: \"Apache-2.0\",\n\tsideEffects: false,\n\tscripts: {\n\t\tformat: \"prettier --write 'src/**/*'\",\n\t\tlint: \"eslint src/ && bunx publint --strict --level warning\",\n\t\tfix: \"eslint src/ --fix\",\n\t\t\"generate-docs\": \"api-extractor run --local && api-documenter markdown -i ./temp -o ./docs\",\n\t\tclean: \"rm -rf dist/\",\n\t\tbuild: \"tsc && preconstruct build\",\n\t\t\"test:all\": \"NODE_ENV=test SWC_NODE_PROJECT=./tsconfig.test.json mocha --timeout 30000 --parallel './test/**/*.test.ts'\",\n\t\ttest: \"pnpm test:all\",\n\t\t\"test:single\": \"NODE_ENV=test SWC_NODE_PROJECT=./tsconfig.test.json mocha --timeout 30000\",\n\t\tpush: \"yalc push\",\n\t\ttypedoc: \"node scripts/typedoc.mjs\"\n\t},\n\tfiles: [\n\t\t\"dist/\"\n\t],\n\tpreconstruct: {\n\t\texports: true\n\t},\n\tdevDependencies: {\n\t\t\"@babel/preset-env\": \"^7.22.9\",\n\t\t\"@babel/preset-typescript\": \"^7.22.5\",\n\t\t\"@microsoft/api-documenter\": \"^7.22.30\",\n\t\t\"@microsoft/api-extractor\": \"^7.36.3\",\n\t\t\"@microsoft/tsdoc\": \"^0.14.1\",\n\t\t\"@preconstruct/cli\": \"2.7.0\",\n\t\t\"@swc-node/register\": \"^1.6.6\",\n\t\t\"@thirdweb-dev/tsconfig\": \"workspace:*\",\n\t\t\"@types/chai\": \"^4.3.5\",\n\t\t\"@types/mocha\": \"^10.0.0\",\n\t\t\"@types/uuid\": \"^9.0.5\",\n\t\t\"@typescript-eslint/eslint-plugin\": \"^6.2.0\",\n\t\t\"@typescript-eslint/parser\": \"^6.2.0\",\n\t\tchai: \"^4.3.6\",\n\t\teslint: \"^8.45.0\",\n\t\t\"eslint-config-thirdweb\": \"workspace:*\",\n\t\t\"eslint-plugin-tsdoc\": \"^0.2.16\",\n\t\tesm: \"^3.2.25\",\n\t\tmocha: \"^10.2.0\",\n\t\trimraf: \"^3.0.2\",\n\t\ttypescript: \"^5.1.6\",\n\t\t\"typedoc-gen\": \"workspace:*\"\n\t},\n\tdependencies: {\n\t\t\"cid-tool\": \"^3.0.0\",\n\t\t\"form-data\": \"^4.0.0\",\n\t\tuuid: \"^9.0.1\",\n\t\t\"@thirdweb-dev/crypto\": \"workspace:*\"\n\t},\n\tengines: {\n\t\tnode: \">=18\"\n\t}\n};\n\n/**\n * Default downloader used - handles downloading from all schemes specified in the gateway URLs configuration.\n *\n * @example\n * ```jsx\n * // Can instantiate the downloader with the default gateway URLs\n * const downloader = new StorageDownloader();\n *\n * // client id if used in client-side applications\n * const clientId = \"your-client-id\";\n * const storage = new ThirdwebStorage({ clientId, downloader });\n *\n * // secret key if used in server-side applications\n * const secretKey = \"your-secret-key\";\n * const storage = new ThirdwebStorage({ secretKey, downloader });\n * ```\n *\n * @public\n */\nclass StorageDownloader {\n DEFAULT_TIMEOUT_IN_SECONDS = 60;\n DEFAULT_MAX_RETRIES = 3;\n constructor(options) {\n this.secretKey = options.secretKey;\n this.clientId = options.clientId;\n this.defaultTimeout = options.timeoutInSeconds || this.DEFAULT_TIMEOUT_IN_SECONDS;\n }\n async download(uri, gatewayUrls, options) {\n let attempts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n const maxRetries = options?.maxRetries || this.DEFAULT_MAX_RETRIES;\n if (attempts > maxRetries) {\n console.error(\"[FAILED_TO_DOWNLOAD_ERROR] Failed to download from URI - too many attempts failed.\");\n // return a 404 response to avoid retrying\n return new Response(JSON.stringify({\n error: \"Not Found\"\n }), {\n status: 404,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n\n // Replace recognized scheme with the highest priority gateway URL that hasn't already been attempted\n let resolvedUri = replaceSchemeWithGatewayUrl(uri, gatewayUrls, attempts, this.clientId);\n // If every gateway URL we know about for the designated scheme has been tried (via recursion) and failed, throw an error\n if (!resolvedUri) {\n console.error(\"[FAILED_TO_DOWNLOAD_ERROR] Unable to download from URI - all gateway URLs failed to respond.\");\n return new Response(JSON.stringify({\n error: \"Not Found\"\n }), {\n status: 404,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } else if (attempts > 0) {\n console.warn(`Retrying download with backup gateway URL: ${resolvedUri}`);\n }\n let headers = {};\n if (isTwGatewayUrl(resolvedUri)) {\n const bundleId = typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ? globalThis.APP_BUNDLE_ID : undefined;\n if (this.secretKey) {\n headers = {\n \"x-secret-key\": this.secretKey\n };\n } else if (this.clientId) {\n if (!resolvedUri.includes(\"bundleId\")) {\n resolvedUri = resolvedUri + (bundleId ? `?bundleId=${bundleId}` : \"\");\n }\n headers[\"x-client-Id\"] = this.clientId;\n }\n // if we have a authorization token on global context then add that to the headers\n if (typeof globalThis !== \"undefined\" && \"TW_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_AUTH_TOKEN === \"string\") {\n headers = {\n ...headers,\n authorization: `Bearer ${globalThis.TW_AUTH_TOKEN}`\n };\n }\n if (typeof globalThis !== \"undefined\" && \"TW_CLI_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_CLI_AUTH_TOKEN === \"string\") {\n headers = {\n ...headers,\n authorization: `Bearer ${globalThis.TW_CLI_AUTH_TOKEN}`\n };\n headers[\"x-authorize-wallet\"] = \"true\";\n }\n headers[\"x-sdk-version\"] = pkg.version;\n headers[\"x-sdk-name\"] = pkg.name;\n headers[\"x-sdk-platform\"] = bundleId ? \"react-native\" : isBrowser() ? window.bridge !== undefined ? \"webGL\" : \"browser\" : \"node\";\n }\n if (isTooManyRequests(resolvedUri)) {\n // skip the request if we're getting too many request error from the gateway\n return this.download(uri, gatewayUrls, options, attempts + 1);\n }\n const controller = new AbortController();\n const timeoutInSeconds = options?.timeoutInSeconds || this.defaultTimeout;\n const timeout = setTimeout(() => controller.abort(), timeoutInSeconds * 1000);\n const resOrErr = await fetch(resolvedUri, {\n headers,\n signal: controller.signal\n }).catch(err => err);\n // if we get here clear the timeout\n if (timeout) {\n clearTimeout(timeout);\n }\n if (!(\"status\" in resOrErr)) {\n // early exit if we don't have a status code\n throw new Error(`Request timed out after ${timeoutInSeconds} seconds. ${isTwGatewayUrl(resolvedUri) ? \"You can update the timeoutInSeconds option to increase the timeout.\" : \"You're using a public IPFS gateway, pass in a clientId or secretKey for a reliable IPFS gateway.\"}`);\n }\n\n // if the request is good we can skip everything else\n if (resOrErr.ok) {\n return resOrErr;\n }\n if (resOrErr.status === 429) {\n // track that we got a too many requests error\n tooManyRequestsBackOff(resolvedUri, resOrErr);\n // Since the current gateway failed, recursively try the next one we know about\n return this.download(uri, gatewayUrls, options, attempts + 1);\n }\n if (resOrErr.status === 410) {\n // Don't retry if the content is blocklisted\n console.error(`Request to ${resolvedUri} failed because this content seems to be blocklisted. Search VirusTotal for this URL to confirm: ${resolvedUri} `);\n return resOrErr;\n }\n console.warn(`Request to ${resolvedUri} failed with status ${resOrErr.status} - ${resOrErr.statusText}`);\n\n // if the status is 404 and we're using a thirdweb gateway url, return the response as is\n if (resOrErr.status === 404 && isTwGatewayUrl(resolvedUri)) {\n return resOrErr;\n }\n\n // these are the only errors that we want to retry, everything else we should just return the error as is\n // 408 - Request Timeout\n // 429 - Too Many Requests\n // 5xx - Server Errors\n if (resOrErr.status !== 408 && resOrErr.status !== 429 && resOrErr.status < 500) {\n return resOrErr;\n }\n\n // Since the current gateway failed, recursively try the next one we know about\n return this.download(uri, gatewayUrls, options, attempts + 1);\n }\n}\nconst TOO_MANY_REQUESTS_TRACKER = new Map();\nfunction isTooManyRequests(gatewayUrl) {\n return TOO_MANY_REQUESTS_TRACKER.has(gatewayUrl);\n}\nconst TIMEOUT_MAP = new Map();\nfunction tooManyRequestsBackOff(gatewayUrl, response) {\n // if we already have a timeout for this gateway url, clear it\n if (TIMEOUT_MAP.has(gatewayUrl)) {\n clearTimeout(TIMEOUT_MAP.get(gatewayUrl));\n }\n const retryAfter = response.headers.get(\"Retry-After\");\n let backOff = 5000;\n if (retryAfter) {\n const retryAfterSeconds = parseInt(retryAfter);\n if (!isNaN(retryAfterSeconds)) {\n backOff = retryAfterSeconds * 1000;\n }\n }\n\n // track that we got a too many requests error\n TOO_MANY_REQUESTS_TRACKER.set(gatewayUrl, true);\n TIMEOUT_MAP.set(gatewayUrl, setTimeout(() => TOO_MANY_REQUESTS_TRACKER.delete(gatewayUrl), backOff));\n}\n\n/**\n * Default uploader used - handles uploading arbitrary data to IPFS\n *\n * @example\n * ```jsx\n * // Can instantiate the uploader with default configuration and your client ID when used in client-side applications\n * const uploader = new StorageUploader();\n * const clientId = \"your-client-id\";\n * const storage = new ThirdwebStorage({ clientId, uploader });\n *\n * // Can instantiate the uploader with default configuration and your secret key when used in server-side applications\n * const uploader = new StorageUploader();\n * const secretKey = \"your-secret-key\";\n * const storage = new ThirdwebStorage({ secretKey, uploader });\n *\n * // Or optionally, can pass configuration\n * const options = {\n * // Upload objects with resolvable URLs\n * uploadWithGatewayUrl: true,\n * }\n * const uploader = new StorageUploader(options);\n * const clientId = \"your-client-id\";\n * const storage = new ThirdwebStorage({ clientId, uploader });\n * ```\n *\n * @public\n */\nclass IpfsUploader {\n constructor(options) {\n this.uploadWithGatewayUrl = options?.uploadWithGatewayUrl || false;\n this.uploadServerUrl = options?.uploadServerUrl || TW_UPLOAD_SERVER_URL;\n this.clientId = options?.clientId;\n this.secretKey = options?.secretKey;\n }\n async uploadBatch(data, options) {\n if (options?.uploadWithoutDirectory && data.length > 1) {\n throw new Error(\"[UPLOAD_WITHOUT_DIRECTORY_ERROR] Cannot upload more than one file or object without directory!\");\n }\n const formData = new FormData();\n const {\n form,\n fileNames\n } = this.buildFormData(formData, data, options);\n if (isBrowser()) {\n return this.uploadBatchBrowser(form, fileNames, options);\n } else {\n return this.uploadBatchNode(form, fileNames, options);\n }\n }\n buildFormData(form, files, options) {\n const fileNameToFileMap = new Map();\n const fileNames = [];\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n let fileName = \"\";\n let fileData = file;\n if (isFileInstance(file)) {\n if (options?.rewriteFileNames) {\n let extensions = \"\";\n if (file.name) {\n const extensionStartIndex = file.name.lastIndexOf(\".\");\n if (extensionStartIndex > -1) {\n extensions = file.name.substring(extensionStartIndex);\n }\n }\n fileName = `${i + options.rewriteFileNames.fileStartNumber}${extensions}`;\n } else {\n fileName = `${file.name}`;\n }\n } else if (isBufferOrStringWithName(file)) {\n fileData = file.data;\n if (options?.rewriteFileNames) {\n fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n } else {\n fileName = `${file.name}`;\n }\n } else {\n if (options?.rewriteFileNames) {\n fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n } else {\n fileName = `${i}`;\n }\n }\n\n // If we don't want to wrap with directory, adjust the filepath\n const filepath = options?.uploadWithoutDirectory ? `files` : `files/${fileName}`;\n if (fileNameToFileMap.has(fileName)) {\n // if the file in the map is the same as the file we are already looking at then just skip and continue\n if (isFileBufferOrStringEqual(fileNameToFileMap.get(fileName), file)) {\n // we add it to the filenames array so that we can return the correct number of urls,\n fileNames.push(fileName);\n // but then we skip because we don't need to upload it multiple times\n continue;\n }\n // otherwise if file names are the same but they are not the same file then we should throw an error (trying to upload to differnt files but with the same names)\n throw new Error(`[DUPLICATE_FILE_NAME_ERROR] File name ${fileName} was passed for more than one different file.`);\n }\n\n // add it to the map so that we can check for duplicates\n fileNameToFileMap.set(fileName, file);\n // add it to the filenames array so that we can return the correct number of urls\n fileNames.push(fileName);\n if (!isBrowser()) {\n form.append(\"file\", fileData, {\n filepath\n });\n } else {\n // browser does blob things, filepath is parsed differently on browser vs node.\n // pls pinata?\n form.append(\"file\", new Blob([fileData]), filepath);\n }\n }\n const metadata = {\n name: `Storage SDK`,\n keyvalues: {\n ...options?.metadata\n }\n };\n form.append(\"pinataMetadata\", JSON.stringify(metadata));\n if (options?.uploadWithoutDirectory) {\n form.append(\"pinataOptions\", JSON.stringify({\n wrapWithDirectory: false\n }));\n }\n return {\n form,\n // encode the file names on the way out (which is what the upload backend expects)\n fileNames: fileNames.map(fName => encodeURIComponent(fName))\n };\n }\n async uploadBatchBrowser(form, fileNames, options) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n let timer = setTimeout(() => {\n xhr.abort();\n reject(new Error(\"Request to upload timed out! No upload progress received in 30s\"));\n }, 30000);\n xhr.upload.addEventListener(\"loadstart\", () => {\n console.log(`[${Date.now()}] [IPFS] Started`);\n });\n xhr.upload.addEventListener(\"progress\", event => {\n console.log(`[IPFS] Progress Event ${event.loaded}/${event.total}`);\n clearTimeout(timer);\n if (event.loaded < event.total) {\n timer = setTimeout(() => {\n xhr.abort();\n reject(new Error(\"Request to upload timed out! No upload progress received in 30s\"));\n }, 30000);\n } else {\n console.log(`[${Date.now()}] [IPFS] Uploaded files. Waiting for response.`);\n }\n if (event.lengthComputable && options?.onProgress) {\n options?.onProgress({\n progress: event.loaded,\n total: event.total\n });\n }\n });\n xhr.addEventListener(\"load\", () => {\n console.log(`[${Date.now()}] [IPFS] Load`);\n clearTimeout(timer);\n if (xhr.status >= 200 && xhr.status < 300) {\n let body;\n try {\n body = JSON.parse(xhr.responseText);\n } catch (err) {\n return reject(new Error(\"Failed to parse JSON from upload response\"));\n }\n const cid = body.IpfsHash;\n if (!cid) {\n throw new Error(\"Failed to get IPFS hash from upload response\");\n }\n if (options?.uploadWithoutDirectory) {\n return resolve([`ipfs://${cid}`]);\n } else {\n return resolve(fileNames.map(n => `ipfs://${cid}/${n}`));\n }\n }\n return reject(new Error(`Upload failed with status ${xhr.status} - ${xhr.responseText}`));\n });\n xhr.addEventListener(\"error\", () => {\n console.log(\"[IPFS] Load\");\n clearTimeout(timer);\n if (xhr.readyState !== 0 && xhr.readyState !== 4 || xhr.status === 0) {\n return reject(new Error(\"Upload failed due to a network error.\"));\n }\n return reject(new Error(\"Unknown upload error occured\"));\n });\n xhr.open(\"POST\", `${this.uploadServerUrl}/ipfs/upload`);\n if (this.secretKey) {\n xhr.setRequestHeader(\"x-secret-key\", this.secretKey);\n } else if (this.clientId) {\n xhr.setRequestHeader(\"x-client-id\", this.clientId);\n }\n const bundleId = typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ? globalThis.APP_BUNDLE_ID : undefined;\n if (bundleId) {\n xhr.setRequestHeader(\"x-bundle-id\", bundleId);\n }\n xhr.setRequestHeader(\"x-sdk-version\", pkg.version);\n xhr.setRequestHeader(\"x-sdk-name\", pkg.name);\n xhr.setRequestHeader(\"x-sdk-platform\", bundleId ? \"react-native\" : isBrowser() ? window.bridge !== undefined ? \"webGL\" : \"browser\" : \"node\");\n\n // if we have a authorization token on global context then add that to the headers, this is for the dashboard.\n if (typeof globalThis !== \"undefined\" && \"TW_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_AUTH_TOKEN === \"string\") {\n xhr.setRequestHeader(\"authorization\", `Bearer ${globalThis.TW_AUTH_TOKEN}`);\n }\n\n // CLI auth token\n if (typeof globalThis !== \"undefined\" && \"TW_CLI_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_CLI_AUTH_TOKEN === \"string\") {\n xhr.setRequestHeader(\"authorization\", `Bearer ${globalThis.TW_CLI_AUTH_TOKEN}`);\n xhr.setRequestHeader(\"x-authorize-wallet\", `true`);\n }\n xhr.send(form);\n });\n }\n async uploadBatchNode(form, fileNames, options) {\n if (options?.onProgress) {\n console.warn(\"The onProgress option is only supported in the browser\");\n }\n const headers = {};\n if (this.secretKey) {\n headers[\"x-secret-key\"] = this.secretKey;\n } else if (this.clientId) {\n headers[\"x-client-id\"] = this.clientId;\n }\n\n // if we have a bundle id on global context then add that to the headers\n if (typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis) {\n headers[\"x-bundle-id\"] = globalThis.APP_BUNDLE_ID;\n }\n\n // if we have a authorization token on global context then add that to the headers, this is for the dashboard.\n if (typeof globalThis !== \"undefined\" && \"TW_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_AUTH_TOKEN === \"string\") {\n headers[\"authorization\"] = `Bearer ${globalThis.TW_AUTH_TOKEN}`;\n }\n\n // CLI auth token\n if (typeof globalThis !== \"undefined\" && \"TW_CLI_AUTH_TOKEN\" in globalThis && typeof globalThis.TW_CLI_AUTH_TOKEN === \"string\") {\n headers[\"authorization\"] = `Bearer ${globalThis.TW_CLI_AUTH_TOKEN}`;\n headers[\"x-authorize-wallet\"] = \"true\";\n }\n const res = await fetch(`${this.uploadServerUrl}/ipfs/upload`, {\n method: \"POST\",\n headers: {\n ...headers,\n ...form.getHeaders()\n },\n body: form.getBuffer()\n });\n if (!res.ok) {\n if (res.status === 401) {\n throw new Error(\"Unauthorized - You don't have permission to use this service.\");\n }\n throw new Error(`Failed to upload files to IPFS - ${res.status} - ${res.statusText} - ${await res.text()}`);\n }\n const body = await res.json();\n const cid = body.IpfsHash;\n if (!cid) {\n throw new Error(\"Failed to upload files to IPFS - Bad CID\");\n }\n if (options?.uploadWithoutDirectory) {\n return [`ipfs://${cid}`];\n } else {\n return fileNames.map(name => `ipfs://${cid}/${name}`);\n }\n }\n}\n\n/**\n * Upload and download files from decentralized storage systems.\n *\n * @example\n * ```jsx\n * // Create a default storage class with a client ID when used in client-side applications\n * const storage = new ThirdwebStorage({ clientId: \"your-client-id\" });\n *\n * // Create a default storage class with a secret key when used in server-side applications\n * const storage = new ThirdwebStorage({ secretKey: \"your-secret-key\" });\n *\n * You can get a clientId and secretKey from https://thirdweb.com/create-api-key\n *\n * // Upload any file or JSON object\n * const uri = await storage.upload(data);\n * const result = await storage.download(uri);\n *\n * // Or configure a custom uploader, downloader, and gateway URLs\n * const gatewayUrls = {\n * // We define a mapping of schemes to gateway URLs\n * \"ipfs://\": [\n * \"https://ipfs.thirdwebcdn.com/ipfs/\",\n * \"https://cloudflare-ipfs.com/ipfs/\",\n * \"https://ipfs.io/ipfs/\",\n * ],\n * };\n * const downloader = new StorageDownloader();\n * const uploader = new IpfsUploader();\n * const clientId = \"your-client-id\";\n * const storage = new ThirdwebStorage({ clientId, uploader, downloader, gatewayUrls });\n * ```\n *\n * @public\n */\nclass ThirdwebStorage {\n constructor(options) {\n this.uploader = options?.uploader || new IpfsUploader({\n clientId: options?.clientId,\n secretKey: options?.secretKey,\n uploadServerUrl: options?.uploadServerUrl\n });\n this.downloader = options?.downloader || new StorageDownloader({\n secretKey: options?.secretKey,\n clientId: options?.clientId\n });\n this.gatewayUrls = prepareGatewayUrls(parseGatewayUrls(options?.gatewayUrls), options?.clientId, options?.secretKey);\n this.clientId = options?.clientId;\n }\n\n /**\n * Resolve any scheme on a URL to get a retrievable URL for the data\n *\n * @param url - The URL to resolve the scheme of\n * @returns The URL with its scheme resolved\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const url = storage.resolveScheme(uri);\n * console.log(url);\n * ```\n */\n resolveScheme(url) {\n return replaceSchemeWithGatewayUrl(url, this.gatewayUrls, 0, this.clientId);\n }\n\n /**\n * Downloads arbitrary data from any URL scheme.\n *\n * @param url - The URL of the data to download\n * @returns The response object fetched from the resolved URL\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const data = await storage.download(uri);\n * ```\n */\n async download(url, options) {\n return this.downloader.download(url, this.gatewayUrls, options);\n }\n\n /**\n * Downloads JSON data from any URL scheme.\n * Resolves any URLs with schemes to retrievable gateway URLs.\n *\n * @param url - The URL of the JSON data to download\n * @returns The JSON data fetched from the resolved URL\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const json = await storage.downloadJSON(uri);\n * ```\n */\n async downloadJSON(url, options) {\n const res = await this.download(url, options);\n\n // If we get a JSON object, recursively replace any schemes with gatewayUrls\n const json = await res.json();\n return replaceObjectSchemesWithGatewayUrls(json, this.gatewayUrls, this.clientId);\n }\n\n /**\n * Upload arbitrary file or JSON data using the configured decentralized storage system.\n * Automatically uploads any file data within JSON objects and replaces them with hashes.\n *\n * @param data - Arbitrary file or JSON data to upload\n * @param options - Options to pass through to the storage uploader class\n * @returns - The URI of the uploaded data\n *\n * @example\n * ```jsx\n * // Upload file data\n * const file = readFileSync(\"../file.jpg\");\n * const fileUri = await storage.upload(file);\n *\n * // Or upload a JSON object\n * const json = { name: \"JSON\", image: file };\n * const jsonUri = await storage.upload(json);\n * ```\n */\n async upload(data, options) {\n const [uri] = await this.uploadBatch([data], options);\n return uri;\n }\n\n /**\n * Batch upload arbitrary file or JSON data using the configured decentralized storage system.\n * Automatically uploads any file data within JSON objects and replaces them with hashes.\n *\n * @param data - Array of arbitrary file or JSON data to upload\n * @param options - Options to pass through to the storage uploader class\n * @returns - The URIs of the uploaded data\n *\n * @example\n * ```jsx\n * // Upload an array of file data\n * const files = [\n * readFileSync(\"../file1.jpg\"),\n * readFileSync(\"../file2.jpg\"),\n * ];\n * const fileUris = await storage.uploadBatch(files);\n *\n * // Upload an array of JSON objects\n * const objects = [\n * { name: \"JSON 1\", image: files[0] },\n * { name: \"JSON 2\", image: files[1] },\n * ];\n * const jsonUris = await storage.uploadBatch(objects);\n * ```\n */\n async uploadBatch(data, options) {\n data = data.filter(item => item !== undefined);\n if (!data.length) {\n return [];\n }\n const isFileArray = data.map(item => isFileOrBuffer(item) || typeof item === \"string\").every(item => !!item);\n let uris = [];\n\n // If data is an array of files, pass it through to upload directly\n if (isFileArray) {\n uris = await this.uploader.uploadBatch(data, options);\n } else {\n // Otherwise it is an array of JSON objects, so we have to prepare it first\n const metadata = (await this.uploadAndReplaceFilesWithHashes(data, options)).map(item => {\n if (typeof item === \"string\") {\n return item;\n }\n return JSON.stringify(item);\n });\n uris = await this.uploader.uploadBatch(metadata, options);\n }\n if (options?.uploadWithGatewayUrl || this.uploader.uploadWithGatewayUrl) {\n return uris.map(uri => this.resolveScheme(uri));\n } else {\n return uris;\n }\n }\n getGatewayUrls() {\n return this.gatewayUrls;\n }\n async uploadAndReplaceFilesWithHashes(data, options) {\n let cleaned = data;\n // Replace any gateway URLs with their hashes\n cleaned = replaceObjectGatewayUrlsWithSchemes(cleaned, this.gatewayUrls);\n\n // Recurse through data and extract files to upload\n const files = extractObjectFiles(cleaned);\n if (files.length) {\n // Upload all files that came from the object\n const uris = await this.uploader.uploadBatch(files, options);\n\n // Recurse through data and replace files with hashes\n cleaned = replaceObjectFilesWithUris(cleaned, uris);\n }\n if (options?.uploadWithGatewayUrl || this.uploader.uploadWithGatewayUrl) {\n // If flag is set, replace all schemes with their preferred gateway URL\n // Ex: used for Solana, where services don't resolve schemes for you, so URLs must be usable by default\n cleaned = replaceObjectSchemesWithGatewayUrls(cleaned, this.gatewayUrls, this.clientId);\n }\n return cleaned;\n }\n}\n\n/**\n * @internal\n */\nclass MockDownloader {\n gatewayUrls = DEFAULT_GATEWAY_URLS;\n constructor(storage) {\n this.storage = storage;\n }\n async download(url) {\n const [cid, name] = url.includes(\"mock://\") ? url.replace(\"mock://\", \"\").split(\"/\") : url.replace(\"ipfs://\", \"\").split(\"/\");\n const data = name ? this.storage[cid][name] : this.storage[cid];\n return {\n async json() {\n return Promise.resolve(JSON.parse(data));\n },\n async text() {\n return Promise.resolve(data);\n }\n };\n }\n}\n\n/**\n * @internal\n */\nclass MockUploader {\n constructor(storage) {\n this.storage = storage;\n }\n async uploadBatch(data, options) {\n const cid = v4();\n const uris = [];\n this.storage[cid] = {};\n let index = options?.rewriteFileNames?.fileStartNumber || 0;\n for (const file of data) {\n let contents;\n if (isFileInstance(file)) {\n contents = await file.text();\n } else if (isBufferInstance(file)) {\n contents = file.toString();\n } else if (typeof file === \"string\") {\n contents = file;\n } else {\n contents = isBufferInstance(file.data) ? file.data.toString() : file.data;\n const name = file.name ? file.name : `file_${index}`;\n this.storage[cid][name] = contents;\n uris.push(`mock://${cid}/${name}`);\n continue;\n }\n this.storage[cid][index.toString()] = contents;\n uris.push(`mock://${cid}/${index}`);\n index += 1;\n }\n return uris;\n }\n}\n\nexport { DEFAULT_GATEWAY_URLS, IpfsUploader, MockDownloader, MockUploader, PINATA_IPFS_URL, StorageDownloader, TW_UPLOAD_SERVER_URL, ThirdwebStorage, convertCidToV1, extractObjectFiles, getGatewayUrlForCid, isBrowser, isBufferInstance, isBufferOrStringWithName, isFileBufferOrStringEqual, isFileInstance, isFileOrBuffer, isTwGatewayUrl, parseGatewayUrls, prepareGatewayUrls, replaceGatewayUrlWithScheme, replaceObjectFilesWithUris, replaceObjectGatewayUrlsWithSchemes, replaceObjectSchemesWithGatewayUrls, replaceSchemeWithGatewayUrl };\n","/**\n * @internal\n */\nfunction assertWindowEthereum(w) {\n return typeof w !== \"undefined\" && !!w && \"ethereum\" in w;\n}\n\nexport { assertWindowEthereum as a };\n","import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from './classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from './classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport { defaultChains, updateChainRPCs } from '@thirdweb-dev/chains';\nimport { AbstractWallet } from '../evm/wallets/abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\n\nconst PREFIX = \"__TW__\";\nclass AsyncLocalStorage {\n constructor(name) {\n this.name = name;\n }\n getItem(key) {\n return new Promise(res => {\n res(localStorage.getItem(`${PREFIX}/${this.name}/${key}`));\n });\n }\n setItem(key, value) {\n return new Promise((res, rej) => {\n try {\n localStorage.setItem(`${PREFIX}/${this.name}/${key}`, value);\n res();\n } catch (e) {\n rej(e);\n }\n });\n }\n removeItem(key) {\n return new Promise(res => {\n localStorage.removeItem(`${PREFIX}/${this.name}/${key}`);\n res();\n });\n }\n}\n/**\n * @internal\n */\nfunction createAsyncLocalStorage(name) {\n return new AsyncLocalStorage(name);\n}\n\n/**\n * @internal\n */\nconst DEFAULT_DAPP_META = {\n name: \"thirdweb powered dApp\",\n url: \"https://thirdweb.com\",\n description: \"thirdweb powered dApp\",\n logoUrl: \"https://thirdweb.com/favicon.ico\",\n isDarkMode: true\n};\n\nlet walletAnalyticsEnabled = true;\nfunction isWalletAnalyticsEnabled() {\n return walletAnalyticsEnabled;\n}\nfunction setWalletAnalyticsEnabled(enabled) {\n walletAnalyticsEnabled = enabled;\n}\n\nconst ANALYTICS_ENDPOINT = \"https://c.thirdweb.com/event\";\nfunction track(args) {\n if (!isWalletAnalyticsEnabled()) {\n return;\n }\n const {\n clientId,\n walletType,\n walletAddress,\n source,\n action\n } = args;\n const body = {\n source,\n action,\n walletAddress,\n walletType\n };\n // don't block on analytic calls\n fetch(ANALYTICS_ENDPOINT, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-client-id\": clientId\n },\n body: JSON.stringify(body)\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nvar _connectParams = /*#__PURE__*/new WeakMap();\nvar _connect = /*#__PURE__*/new WeakSet();\nvar _trackConnection = /*#__PURE__*/new WeakSet();\nvar _subscribeToEvents = /*#__PURE__*/new WeakSet();\nclass AbstractClientWallet extends AbstractWallet {\n getMeta() {\n return this.constructor.meta;\n }\n constructor(walletId, options) {\n super();\n _classPrivateMethodInitSpec(this, _subscribeToEvents);\n _classPrivateMethodInitSpec(this, _trackConnection);\n _classPrivateMethodInitSpec(this, _connect);\n _classPrivateFieldInitSpec(this, _connectParams, {\n writable: true,\n value: void 0\n });\n this.walletId = walletId;\n this.options = options;\n this.chains = (options?.chains || defaultChains).map(c => updateChainRPCs(c, options?.clientId));\n this.dappMetadata = options?.dappMetadata || DEFAULT_DAPP_META;\n this.walletStorage = options?.walletStorage || createAsyncLocalStorage(this.walletId);\n }\n /**\n * tries to auto connect to the wallet\n */\n async autoConnect(connectOptions) {\n // remove chainId when autoconnecting to prevent switch-network popup on page load\n const options = connectOptions ? {\n ...connectOptions,\n chainId: undefined\n } : undefined;\n return _classPrivateMethodGet(this, _connect, _connect2).call(this, true, options);\n }\n\n /**\n * connect to the wallet\n */\n async connect(connectOptions) {\n _classPrivateFieldSet(this, _connectParams, connectOptions);\n const address = await _classPrivateMethodGet(this, _connect, _connect2).call(this, false, connectOptions);\n if (!address) {\n throw new Error(\"Failed to connect to the wallet.\");\n }\n return address;\n }\n getConnectParams() {\n return _classPrivateFieldGet(this, _connectParams);\n }\n getOptions() {\n return this.options;\n }\n async getSigner() {\n const connector = await this.getConnector();\n if (!connector) {\n throw new Error(\"Wallet not connected\");\n }\n return await connector.getSigner();\n }\n async disconnect() {\n const connector = await this.getConnector();\n if (connector) {\n await connector.disconnect();\n this.emit(\"disconnect\");\n connector.removeAllListeners();\n }\n }\n async switchChain(chainId) {\n const connector = await this.getConnector();\n if (!connector) {\n throw new Error(\"Wallet not connected\");\n }\n if (!connector.switchChain) {\n throw new Error(\"Wallet does not support switching chains\");\n }\n return await connector.switchChain(chainId);\n }\n async updateChains(chains) {\n this.chains = chains.map(c => {\n return updateChainRPCs(c, this.options?.clientId);\n });\n const connector = await this.getConnector();\n connector.updateChains(this.chains);\n }\n\n /**\n * If the wallet uses a personal wallet under the hood, return it\n */\n getPersonalWallet() {\n return undefined;\n }\n}\nasync function _connect2(isAutoConnect, connectOptions) {\n const connector = await this.getConnector();\n _classPrivateMethodGet(this, _subscribeToEvents, _subscribeToEvents2).call(this, connector);\n const isConnected = await connector.isConnected();\n\n // if already connected, return the address and setup listeners\n if (isConnected) {\n const address = await connector.getAddress();\n connector.setupListeners();\n\n // ensure that connector is connected to the correct chain\n if (connectOptions?.chainId) {\n await connector.switchChain(connectOptions?.chainId);\n }\n this.emit(\"connect\", {\n address,\n chainId: await this.getChainId()\n });\n _classPrivateMethodGet(this, _trackConnection, _trackConnection2).call(this, address);\n return address;\n }\n if (isAutoConnect) {\n throw new Error(\"Failed to auto connect to the wallet.\");\n }\n try {\n const address = await connector.connect(connectOptions);\n _classPrivateMethodGet(this, _trackConnection, _trackConnection2).call(this, address);\n return address;\n } catch (error) {\n throw new Error(error.message);\n }\n}\nfunction _trackConnection2(address) {\n track({\n clientId: this.options?.clientId || \"\",\n source: \"connectWallet\",\n action: \"connect\",\n walletType: this.walletId,\n walletAddress: address\n });\n}\nasync function _subscribeToEvents2(connector) {\n // subscribe to connector for events\n connector.on(\"connect\", data => {\n this.emit(\"connect\", {\n address: data.account,\n chainId: data.chain?.id\n });\n });\n connector.on(\"change\", data => {\n this.emit(\"change\", {\n address: data.account,\n chainId: data.chain?.id\n });\n });\n connector.on(\"message\", data => {\n this.emit(\"message\", data);\n });\n connector.on(\"disconnect\", async () => {\n this.emit(\"disconnect\");\n });\n connector.on(\"error\", error => this.emit(\"error\", error));\n}\n\nexport { AsyncLocalStorage as A, DEFAULT_DAPP_META as D, AbstractClientWallet as a, createAsyncLocalStorage as c, isWalletAnalyticsEnabled as i, setWalletAnalyticsEnabled as s };\n","function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\n\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n _classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\n\nexport { _classPrivateFieldInitSpec as _, _classPrivateFieldSet as a, _classPrivateFieldGet as b, _checkPrivateRedeclaration as c };\n","import { c as _checkPrivateRedeclaration } from './classPrivateFieldSet-a5db7c83.browser.esm.js';\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) {\n _checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return fn;\n}\n\nexport { _classPrivateMethodInitSpec as _, _classPrivateMethodGet as a };\n","import EventEmitter from 'eventemitter3';\n\nclass Connector extends EventEmitter {}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n\nclass WagmiAdapter extends Connector {\n constructor(wagmiConnector) {\n super();\n this.wagmiConnector = wagmiConnector;\n }\n async connect(args) {\n this.setupConnectorListeners();\n const result = await this.wagmiConnector.connect(args);\n return result.account;\n }\n disconnect() {\n this.wagmiConnector.removeAllListeners(\"connect\");\n this.wagmiConnector.removeAllListeners(\"change\");\n return this.wagmiConnector.disconnect();\n }\n isConnected() {\n return this.wagmiConnector.isAuthorized();\n }\n getAddress() {\n return this.wagmiConnector.getAccount();\n }\n getSigner() {\n return this.wagmiConnector.getSigner();\n }\n getProvider() {\n return this.wagmiConnector.getProvider();\n }\n async switchChain(chainId) {\n if (!this.wagmiConnector.switchChain) {\n throw new Error(\"Switch chain not supported\");\n }\n await this.wagmiConnector.switchChain(chainId);\n }\n setupConnectorListeners() {\n this.wagmiConnector.addListener(\"connect\", data => {\n this.emit(\"connect\", data);\n });\n this.wagmiConnector.addListener(\"change\", data => {\n this.emit(\"change\", data);\n });\n this.wagmiConnector.addListener(\"disconnect\", () => {\n this.emit(\"disconnect\");\n });\n }\n async setupListeners() {\n this.setupConnectorListeners();\n await this.wagmiConnector.setupListeners();\n }\n updateChains(chains) {\n this.wagmiConnector.updateChains(chains);\n }\n}\n\nexport { Connector as C, WagmiAdapter as W };\n","const ENTRYPOINT_ADDRESS = \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\"; // v0.6\nconst ERC6551_REGISTRY = \"0x02101dfB77FDE026414827Fdc604ddAF224F0921\";\nconst ACCOUNT_CORE_ABI = [{\n type: \"constructor\",\n name: \"\",\n inputs: [{\n type: \"address\",\n name: \"_entrypoint\",\n internalType: \"contract IEntryPoint\"\n }, {\n type: \"address\",\n name: \"_factory\",\n internalType: \"address\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"event\",\n name: \"AdminUpdated\",\n inputs: [{\n type: \"address\",\n name: \"signer\",\n indexed: true,\n internalType: \"address\"\n }, {\n type: \"bool\",\n name: \"isAdmin\",\n indexed: false,\n internalType: \"bool\"\n }],\n outputs: [],\n anonymous: false\n}, {\n type: \"event\",\n name: \"ContractURIUpdated\",\n inputs: [{\n type: \"string\",\n name: \"prevURI\",\n indexed: false,\n internalType: \"string\"\n }, {\n type: \"string\",\n name: \"newURI\",\n indexed: false,\n internalType: \"string\"\n }],\n outputs: [],\n anonymous: false\n}, {\n type: \"event\",\n name: \"Initialized\",\n inputs: [{\n type: \"uint8\",\n name: \"version\",\n indexed: false,\n internalType: \"uint8\"\n }],\n outputs: [],\n anonymous: false\n}, {\n type: \"event\",\n name: \"SignerPermissionsUpdated\",\n inputs: [{\n type: \"address\",\n name: \"authorizingSigner\",\n indexed: true,\n internalType: \"address\"\n }, {\n type: \"address\",\n name: \"targetSigner\",\n indexed: true,\n internalType: \"address\"\n }, {\n type: \"tuple\",\n name: \"permissions\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"permissionStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"permissionEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"bytes32\",\n name: \"uid\",\n internalType: \"bytes32\"\n }],\n indexed: false,\n internalType: \"struct IAccountPermissions.SignerPermissionRequest\"\n }],\n outputs: [],\n anonymous: false\n}, {\n type: \"function\",\n name: \"addDeposit\",\n inputs: [],\n outputs: [],\n stateMutability: \"payable\"\n}, {\n type: \"function\",\n name: \"contractURI\",\n inputs: [],\n outputs: [{\n type: \"string\",\n name: \"\",\n internalType: \"string\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"entryPoint\",\n inputs: [],\n outputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"contract IEntryPoint\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"execute\",\n inputs: [{\n type: \"address\",\n name: \"_target\",\n internalType: \"address\"\n }, {\n type: \"uint256\",\n name: \"_value\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"_calldata\",\n internalType: \"bytes\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"executeBatch\",\n inputs: [{\n type: \"address[]\",\n name: \"_target\",\n internalType: \"address[]\"\n }, {\n type: \"uint256[]\",\n name: \"_value\",\n internalType: \"uint256[]\"\n }, {\n type: \"bytes[]\",\n name: \"_calldata\",\n internalType: \"bytes[]\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"factory\",\n inputs: [],\n outputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getAllActiveSigners\",\n inputs: [],\n outputs: [{\n type: \"tuple[]\",\n name: \"signers\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"startTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"endTimestamp\",\n internalType: \"uint128\"\n }],\n internalType: \"struct IAccountPermissions.SignerPermissions[]\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getAllAdmins\",\n inputs: [],\n outputs: [{\n type: \"address[]\",\n name: \"\",\n internalType: \"address[]\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getAllSigners\",\n inputs: [],\n outputs: [{\n type: \"tuple[]\",\n name: \"signers\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"startTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"endTimestamp\",\n internalType: \"uint128\"\n }],\n internalType: \"struct IAccountPermissions.SignerPermissions[]\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getDeposit\",\n inputs: [],\n outputs: [{\n type: \"uint256\",\n name: \"\",\n internalType: \"uint256\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getNonce\",\n inputs: [],\n outputs: [{\n type: \"uint256\",\n name: \"\",\n internalType: \"uint256\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"getPermissionsForSigner\",\n inputs: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }],\n outputs: [{\n type: \"tuple\",\n name: \"\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"startTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"endTimestamp\",\n internalType: \"uint128\"\n }],\n internalType: \"struct IAccountPermissions.SignerPermissions\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"initialize\",\n inputs: [{\n type: \"address\",\n name: \"_defaultAdmin\",\n internalType: \"address\"\n }, {\n type: \"bytes\",\n name: \"\",\n internalType: \"bytes\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"isActiveSigner\",\n inputs: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }],\n outputs: [{\n type: \"bool\",\n name: \"\",\n internalType: \"bool\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"isAdmin\",\n inputs: [{\n type: \"address\",\n name: \"_account\",\n internalType: \"address\"\n }],\n outputs: [{\n type: \"bool\",\n name: \"\",\n internalType: \"bool\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"isValidSignature\",\n inputs: [{\n type: \"bytes32\",\n name: \"_hash\",\n internalType: \"bytes32\"\n }, {\n type: \"bytes\",\n name: \"_signature\",\n internalType: \"bytes\"\n }],\n outputs: [{\n type: \"bytes4\",\n name: \"magicValue\",\n internalType: \"bytes4\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"isValidSigner\",\n inputs: [{\n type: \"address\",\n name: \"_signer\",\n internalType: \"address\"\n }, {\n type: \"tuple\",\n name: \"_userOp\",\n components: [{\n type: \"address\",\n name: \"sender\",\n internalType: \"address\"\n }, {\n type: \"uint256\",\n name: \"nonce\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"initCode\",\n internalType: \"bytes\"\n }, {\n type: \"bytes\",\n name: \"callData\",\n internalType: \"bytes\"\n }, {\n type: \"uint256\",\n name: \"callGasLimit\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"verificationGasLimit\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"preVerificationGas\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"maxFeePerGas\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"maxPriorityFeePerGas\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"paymasterAndData\",\n internalType: \"bytes\"\n }, {\n type: \"bytes\",\n name: \"signature\",\n internalType: \"bytes\"\n }],\n internalType: \"struct UserOperation\"\n }],\n outputs: [{\n type: \"bool\",\n name: \"\",\n internalType: \"bool\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"multicall\",\n inputs: [{\n type: \"bytes[]\",\n name: \"data\",\n internalType: \"bytes[]\"\n }],\n outputs: [{\n type: \"bytes[]\",\n name: \"results\",\n internalType: \"bytes[]\"\n }],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"onERC1155BatchReceived\",\n inputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"uint256[]\",\n name: \"\",\n internalType: \"uint256[]\"\n }, {\n type: \"uint256[]\",\n name: \"\",\n internalType: \"uint256[]\"\n }, {\n type: \"bytes\",\n name: \"\",\n internalType: \"bytes\"\n }],\n outputs: [{\n type: \"bytes4\",\n name: \"\",\n internalType: \"bytes4\"\n }],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"onERC1155Received\",\n inputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"uint256\",\n name: \"\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"\",\n internalType: \"bytes\"\n }],\n outputs: [{\n type: \"bytes4\",\n name: \"\",\n internalType: \"bytes4\"\n }],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"onERC721Received\",\n inputs: [{\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"address\",\n name: \"\",\n internalType: \"address\"\n }, {\n type: \"uint256\",\n name: \"\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"\",\n internalType: \"bytes\"\n }],\n outputs: [{\n type: \"bytes4\",\n name: \"\",\n internalType: \"bytes4\"\n }],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"setAdmin\",\n inputs: [{\n type: \"address\",\n name: \"_account\",\n internalType: \"address\"\n }, {\n type: \"bool\",\n name: \"_isAdmin\",\n internalType: \"bool\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"setContractURI\",\n inputs: [{\n type: \"string\",\n name: \"_uri\",\n internalType: \"string\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"setPermissionsForSigner\",\n inputs: [{\n type: \"tuple\",\n name: \"_req\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"permissionStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"permissionEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"bytes32\",\n name: \"uid\",\n internalType: \"bytes32\"\n }],\n internalType: \"struct IAccountPermissions.SignerPermissionRequest\"\n }, {\n type: \"bytes\",\n name: \"_signature\",\n internalType: \"bytes\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"supportsInterface\",\n inputs: [{\n type: \"bytes4\",\n name: \"interfaceId\",\n internalType: \"bytes4\"\n }],\n outputs: [{\n type: \"bool\",\n name: \"\",\n internalType: \"bool\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"validateUserOp\",\n inputs: [{\n type: \"tuple\",\n name: \"userOp\",\n components: [{\n type: \"address\",\n name: \"sender\",\n internalType: \"address\"\n }, {\n type: \"uint256\",\n name: \"nonce\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"initCode\",\n internalType: \"bytes\"\n }, {\n type: \"bytes\",\n name: \"callData\",\n internalType: \"bytes\"\n }, {\n type: \"uint256\",\n name: \"callGasLimit\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"verificationGasLimit\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"preVerificationGas\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"maxFeePerGas\",\n internalType: \"uint256\"\n }, {\n type: \"uint256\",\n name: \"maxPriorityFeePerGas\",\n internalType: \"uint256\"\n }, {\n type: \"bytes\",\n name: \"paymasterAndData\",\n internalType: \"bytes\"\n }, {\n type: \"bytes\",\n name: \"signature\",\n internalType: \"bytes\"\n }],\n internalType: \"struct UserOperation\"\n }, {\n type: \"bytes32\",\n name: \"userOpHash\",\n internalType: \"bytes32\"\n }, {\n type: \"uint256\",\n name: \"missingAccountFunds\",\n internalType: \"uint256\"\n }],\n outputs: [{\n type: \"uint256\",\n name: \"validationData\",\n internalType: \"uint256\"\n }],\n stateMutability: \"nonpayable\"\n}, {\n type: \"function\",\n name: \"verifySignerPermissionRequest\",\n inputs: [{\n type: \"tuple\",\n name: \"req\",\n components: [{\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }, {\n type: \"address[]\",\n name: \"approvedTargets\",\n internalType: \"address[]\"\n }, {\n type: \"uint256\",\n name: \"nativeTokenLimitPerTransaction\",\n internalType: \"uint256\"\n }, {\n type: \"uint128\",\n name: \"permissionStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"permissionEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityStartTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"uint128\",\n name: \"reqValidityEndTimestamp\",\n internalType: \"uint128\"\n }, {\n type: \"bytes32\",\n name: \"uid\",\n internalType: \"bytes32\"\n }],\n internalType: \"struct IAccountPermissions.SignerPermissionRequest\"\n }, {\n type: \"bytes\",\n name: \"signature\",\n internalType: \"bytes\"\n }],\n outputs: [{\n type: \"bool\",\n name: \"success\",\n internalType: \"bool\"\n }, {\n type: \"address\",\n name: \"signer\",\n internalType: \"address\"\n }],\n stateMutability: \"view\"\n}, {\n type: \"function\",\n name: \"withdrawDepositTo\",\n inputs: [{\n type: \"address\",\n name: \"withdrawAddress\",\n internalType: \"address payable\"\n }, {\n type: \"uint256\",\n name: \"amount\",\n internalType: \"uint256\"\n }],\n outputs: [],\n stateMutability: \"nonpayable\"\n}, {\n type: \"receive\",\n name: \"\",\n inputs: [],\n outputs: [],\n stateMutability: \"payable\"\n}];\n\nexport { ACCOUNT_CORE_ABI as A, ERC6551_REGISTRY as E, ENTRYPOINT_ADDRESS as a };\n","// excerpt from https://docs.gnosis-safe.io/backend/available-services\nconst CHAIN_ID_TO_GNOSIS_SERVER_URL = {\n // mainnet\n 1: \"https://safe-transaction-mainnet.safe.global\",\n // goerli\n 5: \"https://safe-transaction-goerli.safe.global\",\n // optimism\n 10: \"https://safe-transaction-optimism.safe.global\",\n // bsc\n 56: \"https://safe-transaction-bsc.safe.global\",\n // gnosis\n 100: \"https://safe-transaction-gnosis-chain.safe.global\",\n // polygon\n 137: \"https://safe-transaction-polygon.safe.global\",\n // avalanche\n 43114: \"https://safe-transaction-avalanche.safe.global\",\n // arbitrum\n 42161: \"https://safe-transaction-arbitrum.safe.global\",\n // celo\n 42220: \"https://safe-transaction-celo.safe.global\",\n // base goerli\n 84531: \"https://safe-transaction-base-testnet.safe.global\",\n // aurora\n 1313161554: \"https://safe-transaction-aurora.safe.global\"\n};\n\n/**\n * @internal\n */\nconst SafeSupportedChainsSet = /* @__PURE__ */(() => new Set(Object.keys(CHAIN_ID_TO_GNOSIS_SERVER_URL).map(Number)))();\n\nexport { CHAIN_ID_TO_GNOSIS_SERVER_URL as C, SafeSupportedChainsSet as S };\n","function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nexport { _defineProperty as _ };\n","import { getPaperOriginUrl, ChainToPublicRpc } from '@paperxyz/sdk-common-utilities';\nimport { _ as _defineProperty } from './defineProperty-c8ecdc07.browser.esm.js';\nimport { Signer, getDefaultProvider } from 'ethers';\nimport { defineReadOnly } from 'ethers/lib/utils';\n\n/**\n * @internal\n */\nconst EMBEDDED_WALLET_PATH = \"/sdk/2022-08-12/embedded-wallet\";\n/**\n * @internal\n */\nconst GET_IFRAME_BASE_URL = () => `${getPaperOriginUrl().replace(\"withpaper.com\", \"embedded-wallet.thirdweb.com\")}`;\n/**\n * @internal\n */\nconst WALLET_USER_DETAILS_LOCAL_STORAGE_NAME = clientId => `thirdwebEwsWalletUserDetails-${clientId}`;\n\n/**\n * @internal\n */\nconst WALLET_USER_ID_LOCAL_STORAGE_NAME = clientId => `thirdwebEwsWalletUserId-${clientId}`;\n\n/**\n * @internal\n */\nconst AUTH_TOKEN_LOCAL_STORAGE_PREFIX = \"walletToken\";\n\n/**\n * @internal\n */\nconst AUTH_TOKEN_LOCAL_STORAGE_NAME = clientId => {\n return `${AUTH_TOKEN_LOCAL_STORAGE_PREFIX}-${clientId}`;\n};\n\n/**\n * @internal\n */\nconst DEVICE_SHARE_LOCAL_STORAGE_PREFIX = \"a\";\n\n/**\n * @internal\n */\nconst DEVICE_SHARE_LOCAL_STORAGE_NAME = (clientId, userId) => `${DEVICE_SHARE_LOCAL_STORAGE_PREFIX}-${clientId}-${userId}`;\n\n/**\n * @internal\n */\nconst DEVICE_SHARE_LOCAL_STORAGE_NAME_DEPRECATED = clientId => `${DEVICE_SHARE_LOCAL_STORAGE_PREFIX}-${clientId}`;\n\nlet RecoveryShareManagement = /*#__PURE__*/function (RecoveryShareManagement) {\n RecoveryShareManagement[\"USER_MANAGED\"] = \"USER_MANAGED\";\n RecoveryShareManagement[\"CLOUD_MANAGED\"] = \"AWS_MANAGED\";\n return RecoveryShareManagement;\n}({});\nlet AuthProvider = /*#__PURE__*/function (AuthProvider) {\n AuthProvider[\"COGNITO\"] = \"Cognito\";\n AuthProvider[\"GOOGLE\"] = \"Google\";\n AuthProvider[\"EMAIL_OTP\"] = \"EmailOtp\";\n AuthProvider[\"CUSTOM_JWT\"] = \"CustomJWT\";\n AuthProvider[\"CUSTOM_AUTH_ENDPOINT\"] = \"CustomAuthEndpoint\";\n AuthProvider[\"FACEBOOK\"] = \"Facebook\";\n AuthProvider[\"APPLE\"] = \"Apple\";\n return AuthProvider;\n}({});\n\n/**\n * @internal\n */\n\n// TODO: Clean up tech debt of random type Objects\n// E.g. StoredTokenType is really not used anywhere but it exists as this object for legacy reason\n\n// Class constructor types\n// types for class constructors still a little messy right now.\n// Open to PRs from whoever sees this and knows of a cleaner way to handle things\n// Auth Types\n// Embedded Wallet Types\nlet UserWalletStatus = /*#__PURE__*/function (UserWalletStatus) {\n UserWalletStatus[\"LOGGED_OUT\"] = \"Logged Out\";\n UserWalletStatus[\"LOGGED_IN_WALLET_UNINITIALIZED\"] = \"Logged In, Wallet Uninitialized\";\n UserWalletStatus[\"LOGGED_IN_NEW_DEVICE\"] = \"Logged In, New Device\";\n UserWalletStatus[\"LOGGED_IN_WALLET_INITIALIZED\"] = \"Logged In, Wallet Initialized\";\n return UserWalletStatus;\n}({});\n\n/**\n * @internal\n */\n\n// ! Types seem repetitive, but the name should identify which goes where\n// this is the return type from the EmbeddedWallet Class getUserWalletStatus method iframe call\n// this is the return type from the EmbeddedWallet Class getUserWalletStatus method\n\nconst data = new Map();\nclass LocalStorage {\n constructor(_ref) {\n let {\n clientId\n } = _ref;\n this.isSupported = !!window.localStorage;\n this.clientId = clientId;\n }\n async getItem(key) {\n if (this.isSupported) {\n return window.localStorage.getItem(key);\n } else {\n return data.get(key) ?? null;\n }\n }\n async setItem(key, value) {\n if (this.isSupported) {\n return window.localStorage.setItem(key, value);\n } else {\n data.set(key, value);\n }\n }\n async removeItem(key) {\n const item = await this.getItem(key);\n if (this.isSupported && item) {\n window.localStorage.removeItem(key);\n return true;\n }\n return false;\n }\n async saveAuthCookie(cookie) {\n await this.setItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.clientId), cookie);\n }\n async getAuthCookie() {\n return this.getItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.clientId));\n }\n async removeAuthCookie() {\n return this.removeItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.clientId));\n }\n async saveDeviceShare(share, userId) {\n await this.saveWalletUserId(userId);\n await this.setItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.clientId, userId), share);\n }\n async getDeviceShare() {\n const userId = await this.getWalletUserId();\n if (userId) {\n return this.getItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.clientId, userId));\n }\n return null;\n }\n async removeDeviceShare() {\n const userId = await this.getWalletUserId();\n if (userId) {\n return this.removeItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.clientId, userId));\n }\n return false;\n }\n async getWalletUserId() {\n return this.getItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.clientId));\n }\n async saveWalletUserId(userId) {\n await this.setItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.clientId), userId);\n }\n async removeWalletUserId() {\n return this.removeItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.clientId));\n }\n}\n\nfunction sleep(seconds) {\n return new Promise(resolve => {\n setTimeout(resolve, seconds * 1000);\n });\n}\nconst iframeBaseStyle = {\n height: \"100%\",\n width: \"100%\",\n border: \"none\",\n backgroundColor: \"transparent\",\n colorScheme: \"light\",\n position: \"fixed\",\n top: \"0px\",\n right: \"0px\",\n zIndex: \"2147483646\",\n display: \"none\"\n};\n\n// Global var to help track iframe state\nconst isIframeLoaded = new Map();\nclass IframeCommunicator {\n constructor(_ref) {\n let {\n link,\n iframeId,\n container = document.body,\n iframeStyles,\n onIframeInitialize\n } = _ref;\n _defineProperty(this, \"POLLING_INTERVAL_SECONDS\", 1.4);\n this.iframeBaseUrl = GET_IFRAME_BASE_URL();\n\n // Creating the IFrame element for communication\n let iframe = document.getElementById(iframeId);\n const hrefLink = new URL(link);\n const sdkVersion = \"2.2.1\";\n hrefLink.searchParams.set(\"sdkVersion\", sdkVersion);\n if (!iframe || iframe.src !== hrefLink.href) {\n // ! Do not update the hrefLink here or it'll cause multiple re-renders\n if (!iframe) {\n iframe = document.createElement(\"iframe\");\n const mergedIframeStyles = {\n ...iframeBaseStyle,\n ...iframeStyles\n };\n Object.assign(iframe.style, mergedIframeStyles);\n iframe.setAttribute(\"id\", iframeId);\n iframe.setAttribute(\"fetchpriority\", \"high\");\n container.appendChild(iframe);\n }\n iframe.src = hrefLink.href;\n iframe.setAttribute(\"data-version\", sdkVersion);\n const onIframeLoaded = event => {\n if (event.data.eventType === \"ewsIframeLoaded\") {\n window.removeEventListener(\"message\", onIframeLoaded);\n if (!iframe) {\n console.warn(\"thirdweb Iframe not found\");\n return;\n }\n this.onIframeLoadHandler(iframe, onIframeInitialize)();\n }\n };\n window.addEventListener(\"message\", onIframeLoaded);\n }\n this.iframe = iframe;\n }\n async onIframeLoadedInitVariables() {\n return {};\n }\n onIframeLoadHandler(iframe, onIframeInitialize) {\n return async () => {\n const promise = new Promise(async (res, rej) => {\n const channel = new MessageChannel();\n channel.port1.onmessage = event => {\n const {\n data\n } = event;\n channel.port1.close();\n if (!data.success) {\n return rej(new Error(data.error));\n }\n isIframeLoaded.set(iframe.src, true);\n if (onIframeInitialize) {\n onIframeInitialize();\n }\n return res(true);\n };\n const INIT_IFRAME_EVENT = \"initIframe\";\n iframe?.contentWindow?.postMessage(\n // ? We initialise the iframe with a bunch\n // of useful information so that we don't have to pass it\n // through in each of the future call. This would be where we do it.\n {\n eventType: INIT_IFRAME_EVENT,\n data: await this.onIframeLoadedInitVariables()\n }, this.iframeBaseUrl, [channel.port2]);\n });\n await promise;\n };\n }\n async call(_ref2) {\n let {\n procedureName,\n params,\n showIframe = false\n } = _ref2;\n while (!isIframeLoaded.get(this.iframe.src)) {\n await sleep(this.POLLING_INTERVAL_SECONDS);\n }\n if (showIframe) {\n this.iframe.style.display = \"block\";\n // magic number to let the display render before performing the animation of the modal in\n await sleep(0.005);\n }\n const promise = new Promise((res, rej) => {\n const channel = new MessageChannel();\n channel.port1.onmessage = async event => {\n const {\n data\n } = event;\n channel.port1.close();\n if (showIframe) {\n // magic number to let modal fade out before hiding it\n await sleep(0.1);\n this.iframe.style.display = \"none\";\n }\n if (!data.success) {\n rej(new Error(data.error));\n } else {\n res(data.data);\n }\n };\n this.iframe.contentWindow?.postMessage({\n eventType: procedureName,\n data: params\n }, this.iframeBaseUrl, [channel.port2]);\n });\n return promise;\n }\n\n /**\n * This has to be called by any iframe that will be removed from the DOM.\n * Use to make sure that we reset the global loaded state of the particular iframe.src\n */\n destroy() {\n isIframeLoaded.delete(this.iframe.src);\n }\n}\n\nclass EmbeddedWalletIframeCommunicator extends IframeCommunicator {\n constructor(_ref) {\n let {\n clientId,\n customizationOptions\n } = _ref;\n super({\n iframeId: EMBEDDED_WALLET_IFRAME_ID,\n link: createEmbeddedWalletIframeLink({\n clientId,\n path: EMBEDDED_WALLET_PATH,\n queryParams: customizationOptions\n }).href,\n container: document.body\n });\n this.clientId = clientId;\n }\n async onIframeLoadedInitVariables() {\n const localStorage = new LocalStorage({\n clientId: this.clientId\n });\n return {\n authCookie: await localStorage.getAuthCookie(),\n deviceShareStored: await localStorage.getDeviceShare(),\n walletUserId: await localStorage.getWalletUserId(),\n clientId: this.clientId\n };\n }\n}\n\n// This is the URL and ID tag of the iFrame that we communicate with\nfunction createEmbeddedWalletIframeLink(_ref2) {\n let {\n clientId,\n path,\n queryParams\n } = _ref2;\n const embeddedWalletUrl = new URL(`${path}`, GET_IFRAME_BASE_URL());\n if (queryParams) {\n for (const queryKey of Object.keys(queryParams)) {\n embeddedWalletUrl.searchParams.set(queryKey, queryParams[queryKey]?.toString() || \"\");\n }\n }\n embeddedWalletUrl.searchParams.set(\"clientId\", clientId);\n return embeddedWalletUrl;\n}\nconst EMBEDDED_WALLET_IFRAME_ID = \"thirdweb-embedded-wallet-iframe\";\n\nclass AbstractLogin {\n /**\n * Used to manage the user's auth states. This should not be instantiated directly.\n * Call {@link EmbeddedWalletSdk.auth} instead.\n *\n */\n constructor(_ref) {\n let {\n querier,\n preLogin,\n postLogin,\n clientId\n } = _ref;\n this.LoginQuerier = querier;\n this.preLogin = preLogin;\n this.postLogin = postLogin;\n this.clientId = clientId;\n }\n async sendEmailLoginOtp(_ref2) {\n let {\n email\n } = _ref2;\n await this.preLogin();\n const result = await this.LoginQuerier.call({\n procedureName: \"sendThirdwebEmailLoginOtp\",\n params: {\n email\n }\n });\n return result;\n }\n}\n\nclass BaseLogin extends AbstractLogin {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"closeWindow\", _ref => {\n let {\n isWindowOpenedByFn,\n win,\n closeOpenedWindow\n } = _ref;\n if (isWindowOpenedByFn) {\n win?.close();\n } else {\n if (win && closeOpenedWindow) {\n closeOpenedWindow(win);\n } else if (win) {\n win.close();\n }\n }\n });\n }\n async getOauthLoginUrl(authProvider) {\n const result = await this.LoginQuerier.call({\n procedureName: \"getHeadlessOauthLoginLink\",\n params: {\n authProvider\n }\n });\n return result;\n }\n async loginWithModal() {\n await this.preLogin();\n const result = await this.LoginQuerier.call({\n procedureName: \"loginWithThirdwebModal\",\n params: undefined,\n showIframe: true\n });\n return this.postLogin(result);\n }\n async loginWithEmailOtp(_ref2) {\n let {\n email\n } = _ref2;\n await this.preLogin();\n const result = await this.LoginQuerier.call({\n procedureName: \"loginWithThirdwebModal\",\n params: {\n email\n },\n showIframe: true\n });\n return this.postLogin(result);\n }\n getOauthPopUpSizing(authProvider) {\n switch (authProvider) {\n case AuthProvider.FACEBOOK:\n return \"width=715, height=555\";\n default:\n return \"width=350, height=500\";\n }\n }\n async loginWithOauth(args) {\n let win = args?.openedWindow;\n let isWindowOpenedByFn = false;\n if (!win) {\n win = window.open(\"\", \"Login\", this.getOauthPopUpSizing(args.oauthProvider));\n isWindowOpenedByFn = true;\n }\n if (!win) {\n throw new Error(\"Something went wrong opening pop-up\");\n }\n // logout the user\n // fetch the url to open the login window from iframe\n const [{\n loginLink\n }] = await Promise.all([this.getOauthLoginUrl(args.oauthProvider), this.preLogin()]);\n win.location.href = loginLink;\n // listen to result from the login window\n const result = await new Promise((resolve, reject) => {\n // detect when the user closes the login window\n const pollTimer = window.setInterval(async () => {\n if (!win) {\n return;\n }\n if (win.closed) {\n clearInterval(pollTimer);\n window.removeEventListener(\"message\", messageListener);\n reject(new Error(\"User closed login window\"));\n }\n }, 1000);\n const messageListener = async event => {\n if (event.origin !== GET_IFRAME_BASE_URL()) {\n return;\n }\n if (typeof event.data !== \"object\") {\n reject(new Error(\"Invalid event data\"));\n return;\n }\n switch (event.data.eventType) {\n case \"userLoginSuccess\":\n {\n window.removeEventListener(\"message\", messageListener);\n clearInterval(pollTimer);\n this.closeWindow({\n isWindowOpenedByFn,\n win,\n closeOpenedWindow: args?.closeOpenedWindow\n });\n if (event.data.authResult) {\n resolve(event.data.authResult);\n }\n break;\n }\n case \"userLoginFailed\":\n {\n window.removeEventListener(\"message\", messageListener);\n clearInterval(pollTimer);\n this.closeWindow({\n isWindowOpenedByFn,\n win,\n closeOpenedWindow: args?.closeOpenedWindow\n });\n reject(new Error(event.data.error));\n break;\n }\n case \"injectDeveloperClientId\":\n {\n win?.postMessage({\n eventType: \"injectDeveloperClientIdResult\",\n developerClientId: this.clientId,\n authOption: args.oauthProvider\n }, GET_IFRAME_BASE_URL());\n break;\n }\n }\n };\n window.addEventListener(\"message\", messageListener);\n });\n return this.postLogin({\n storedToken: {\n ...result.storedToken,\n shouldStoreCookieString: true\n },\n walletDetails: {\n ...result.walletDetails,\n isIframeStorageEnabled: false\n }\n });\n }\n async loginWithCustomJwt(_ref3) {\n let {\n encryptionKey,\n jwt\n } = _ref3;\n await this.preLogin();\n const result = await this.LoginQuerier.call({\n procedureName: \"loginWithCustomJwt\",\n params: {\n encryptionKey,\n jwt\n }\n });\n return this.postLogin(result);\n }\n async loginWithCustomAuthEndpoint(_ref4) {\n let {\n encryptionKey,\n payload\n } = _ref4;\n await this.preLogin();\n const result = await this.LoginQuerier.call({\n procedureName: \"loginWithCustomAuthEndpoint\",\n params: {\n encryptionKey,\n payload\n }\n });\n return this.postLogin(result);\n }\n async verifyEmailLoginOtp(_ref5) {\n let {\n email,\n otp,\n recoveryCode\n } = _ref5;\n const result = await this.LoginQuerier.call({\n procedureName: \"verifyThirdwebEmailLoginOtp\",\n params: {\n email,\n otp,\n recoveryCode\n }\n });\n return this.postLogin(result);\n }\n}\n\nclass Auth {\n /**\n * Used to manage the user's auth states. This should not be instantiated directly.\n * Call {@link EmbeddedWalletSdk.auth} instead.\n */\n constructor(_ref) {\n let {\n clientId,\n querier,\n onAuthSuccess\n } = _ref;\n this.clientId = clientId;\n this.AuthQuerier = querier;\n this.localStorage = new LocalStorage({\n clientId\n });\n this.onAuthSuccess = onAuthSuccess;\n this.BaseLogin = new BaseLogin({\n postLogin: async result => {\n return this.postLogin(result);\n },\n preLogin: async () => {\n await this.preLogin();\n },\n querier: querier,\n clientId\n });\n }\n async preLogin() {\n await this.logout();\n }\n async postLogin(_ref2) {\n let {\n storedToken,\n walletDetails\n } = _ref2;\n if (storedToken.shouldStoreCookieString) {\n await this.localStorage.saveAuthCookie(storedToken.cookieString);\n }\n const initializedUser = await this.onAuthSuccess({\n storedToken,\n walletDetails\n });\n return initializedUser;\n }\n\n /**\n * Used to log the user into their thirdweb wallet on your platform via a myriad of auth providers\n *\n * @example\n * ```typescript\n * const thirdwebEmbeddedWallet = new EmbeddedWalletSdk({clientId: \"YOUR_CLIENT_ID\", chain: \"Polygon\"})\n * try {\n * const user = await thirdwebEmbeddedWallet.auth.loginWithModal();\n * // user is now logged in\n * } catch (e) {\n * // User closed modal or something else went wrong during the authentication process\n * console.error(e)\n * }\n * ```\n *\n * @returns `{{user: InitializedUser}}` An InitializedUser object. See {@link EmbeddedWalletSdk.getUser} for more\n */\n async loginWithModal() {\n return this.BaseLogin.loginWithModal();\n }\n\n /**\n * Used to log the user into their thirdweb wallet using email OTP\n *\n * @example\n * ```typescript\n * // Basic Flow\n * const thirdwebEmbeddedWallet = new EmbeddedWalletSdk({clientId: \"\", chain: \"Polygon\"});\n * try {\n * // prompts user to enter the code they received\n * const user = await thirdwebEmbeddedWallet.auth.loginWithThirdwebEmailOtp({ email : \"you@example.com\" });\n * // user is now logged in\n * } catch (e) {\n * // User closed the OTP modal or something else went wrong during the authentication process\n * console.error(e)\n * }\n * ```\n *\n * @param args - args.email: We will send the email an OTP that needs to be entered in order for them to be logged in.\n * @returns `{{user: InitializedUser}}` An InitializedUser object. See {@link EmbeddedWalletSdk.getUser} for more\n */\n async loginWithEmailOtp(args) {\n return this.BaseLogin.loginWithEmailOtp(args);\n }\n async loginWithCustomJwt(args) {\n return this.BaseLogin.loginWithCustomJwt(args);\n }\n async loginWithCustomAuthEndpoint(args) {\n return this.BaseLogin.loginWithCustomAuthEndpoint(args);\n }\n async loginWithOauth(args) {\n return this.BaseLogin.loginWithOauth(args);\n }\n\n /**\n * A headless way to send the users at the passed email an OTP code.\n * You need to then call {@link Auth.verifyEmailLoginOtp} in order to complete the login process\n *\n * @example\n * ```typescript\n * const thirdwebEmbeddedWallet = new EmbeddedWalletSdk({clientId: \"\", chain: \"Polygon\"});\n * // sends user an OTP code\n * try {\n * await thirdwebEmbeddedWallet.auth.sendEmailLoginOtp({ email : \"you@example.com\" });\n * } catch(e) {\n * // Error Sending user's email an OTP code\n * console.error(e);\n * }\n *\n * // Then when your user is ready to verify their OTP\n * try {\n * const user = await thirdwebEmbeddedWallet.auth.verifyEmailLoginOtp({ email: \"you@example.com\", otp: \"6-DIGIT_CODE_HERE\" });\n * } catch(e) {\n * // Error verifying the OTP code\n * console.error(e)\n * }\n * ```\n *\n * @param param0 - param0.email We will send the email an OTP that needs to be entered in order for them to be logged in.\n * @returns `{{ isNewUser: boolean }}` IsNewUser indicates if the user is a new user to your platform\n */\n async sendEmailLoginOtp(_ref3) {\n let {\n email\n } = _ref3;\n return this.BaseLogin.sendEmailLoginOtp({\n email\n });\n }\n\n /**\n * Used to verify the otp that the user receives from thirdweb\n *\n * See {@link Auth.sendEmailLoginOtp} for how the headless call flow looks like. Simply swap out the calls to `loginWithThirdwebEmailOtp` with `verifyThirdwebEmailLoginOtp`\n *\n * @param args - props.email We will send the email an OTP that needs to be entered in order for them to be logged in.\n * props.otp The code that the user received in their email\n * @returns `{{user: InitializedUser}}` An InitializedUser object containing the user's status, wallet, authDetails, and more\n */\n async verifyEmailLoginOtp(args) {\n return this.BaseLogin.verifyEmailLoginOtp(args);\n }\n\n /**\n * Logs any existing user out of their wallet.\n * @returns `{{success: boolean}}` true if a user is successfully logged out. false if there's no user currently logged in.\n */\n async logout() {\n const {\n success\n } = await this.AuthQuerier.call({\n procedureName: \"logout\",\n params: undefined\n });\n const isRemoveAuthCookie = await this.localStorage.removeAuthCookie();\n const isRemoveUserId = await this.localStorage.removeWalletUserId();\n return {\n success: success || isRemoveAuthCookie || isRemoveUserId\n };\n }\n}\n\nclass EthersSigner extends Signer {\n constructor(_ref) {\n let {\n provider,\n clientId,\n querier\n } = _ref;\n super();\n _defineProperty(this, \"DEFAULT_ETHEREUM_CHAIN_ID\", 5);\n this.clientId = clientId;\n this.querier = querier;\n // we try to extract a url if possible\n this.endpoint = provider.connection?.url;\n defineReadOnly(this, \"provider\", provider);\n }\n async getAddress() {\n const {\n address\n } = await this.querier.call({\n procedureName: \"getAddress\",\n params: undefined\n });\n return address;\n }\n async signMessage(message) {\n const {\n signedMessage\n } = await this.querier.call({\n procedureName: \"signMessage\",\n params: {\n message,\n chainId: (await this.provider?.getNetwork())?.chainId ?? this.DEFAULT_ETHEREUM_CHAIN_ID,\n rpcEndpoint: this.endpoint\n }\n });\n return signedMessage;\n }\n async signTransaction(transaction) {\n const {\n signedTransaction\n } = await this.querier.call({\n procedureName: \"signTransaction\",\n params: {\n transaction,\n chainId: (await this.provider?.getNetwork())?.chainId ?? this.DEFAULT_ETHEREUM_CHAIN_ID,\n rpcEndpoint: this.endpoint\n }\n });\n return signedTransaction;\n }\n async _signTypedData(domain, types, message) {\n const {\n signedTypedData\n } = await this.querier.call({\n procedureName: \"signTypedDataV4\",\n params: {\n domain,\n types,\n message,\n chainId: (await this.provider?.getNetwork())?.chainId ?? this.DEFAULT_ETHEREUM_CHAIN_ID,\n rpcEndpoint: this.endpoint\n }\n });\n return signedTypedData;\n }\n connect(provider) {\n return new EthersSigner({\n clientId: this.clientId,\n provider,\n querier: this.querier\n });\n }\n}\n\nclass EmbeddedWallet {\n /**\n * Not meant to be initialized directly. Call {@link initializeUser} to get an instance\n */\n constructor(_ref) {\n let {\n clientId,\n chain,\n querier\n } = _ref;\n this.clientId = clientId;\n this.chain = chain;\n this.walletManagerQuerier = querier;\n this.localStorage = new LocalStorage({\n clientId\n });\n }\n\n /**\n * @internal\n * Used to set-up the user device in the case that they are using incognito\n * @returns `{walletAddress : string }` The user's wallet details\n */\n async postWalletSetUp(_ref2) {\n let {\n deviceShareStored,\n walletAddress,\n isIframeStorageEnabled,\n walletUserId\n } = _ref2;\n if (!isIframeStorageEnabled) {\n await this.localStorage.saveDeviceShare(deviceShareStored, walletUserId);\n }\n return {\n walletAddress\n };\n }\n\n /**\n * @internal\n * Gets the various status states of the user\n * @example\n * ```typescript\n * const userStatus = await Paper.getUserWalletStatus();\n * switch (userStatus.status) {\n * case UserWalletStatus.LOGGED_OUT: {\n * // User is logged out, call one of the auth methods on Paper.auth to authenticate the user\n * break;\n * }\n * case UserWalletStatus.LOGGED_IN_WALLET_UNINITIALIZED: {\n * // User is logged in, but does not have a wallet associated with it\n * // you also have access to the user's details\n * userStatus.user.authDetails;\n * break;\n * }\n * case UserWalletStatus.LOGGED_IN_NEW_DEVICE: {\n * // User is logged in and created a wallet already, but is missing the device shard\n * // You have access to:\n * userStatus.user.authDetails;\n * userStatus.user.walletAddress;\n * break;\n * }\n * case UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED: {\n * // user is logged in and wallet is all set up.\n * // You have access to:\n * userStatus.user.authDetails;\n * userStatus.user.walletAddress;\n * userStatus.user.wallet;\n * break;\n * }\n *}\n *```\n * @returns `{GetUserWalletStatusFnReturnType}` an object to containing various information on the user statuses\n */\n async getUserWalletStatus() {\n const userStatus = await this.walletManagerQuerier.call({\n procedureName: \"getUserStatus\",\n params: undefined\n });\n if (userStatus.status === UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED) {\n return {\n status: UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED,\n ...userStatus.user,\n wallet: this\n };\n } else if (userStatus.status === UserWalletStatus.LOGGED_IN_NEW_DEVICE) {\n return {\n status: UserWalletStatus.LOGGED_IN_WALLET_UNINITIALIZED,\n ...userStatus.user\n };\n } else if (userStatus.status === UserWalletStatus.LOGGED_IN_WALLET_UNINITIALIZED) {\n return {\n status: UserWalletStatus.LOGGED_IN_WALLET_UNINITIALIZED,\n ...userStatus.user\n };\n } else {\n // Logged out\n return {\n status: userStatus.status\n };\n }\n }\n\n /**\n * Switches the chain that the user wallet is currently on.\n *\n * @example\n * ```typescript\n * // user wallet will be set to Polygon\n * const Paper = new ThirdwebEmbeddedWalletSdk({clientId: \"\", chain: \"Polygon\"});\n * const user = await Paper.initializeUser();\n * // Switch the user wallet to Mumbai\n * await user.wallet.setChain({ chain: \"Mumbai\" });\n * ```\n * @param param0 - The chain that we are changing the user wallet too\n */\n async setChain(_ref3) {\n let {\n chain\n } = _ref3;\n this.chain = chain;\n }\n\n /**\n * Returns an Ethers.Js compatible signer that you can use in conjunction with the rest of dApp\n * @example\n * ```typescript\n * const Paper = new ThirdwebEmbeddedWalletSdk({clientId: \"\", chain: \"Polygon\"});\n * const user = await Paper.getUser();\n * if (user.status === UserStatus.LOGGED_IN_WALLET_INITIALIZED) {\n * // returns a signer on the Polygon mainnet\n * const signer = await user.getEthersJsSigner();\n * // returns a signer on the specified RPC endpoints\n * const signer = await user.getEthersJsSigner({rpcEndpoint: \"https://eth-rpc.gateway.pokt.network\"});\n * }\n * ```\n * @param network - object with the rpc url where calls will be routed through\n * @throws If attempting to call the function without the user wallet initialize on their current device. This should never happen if call {@link ThirdwebEmbeddedWalletSdk.initializeUser} before accessing this function\n * @returns A signer that is compatible with Ether.js. Defaults to the public rpc on the chain specified when initializing the {@link ThirdwebEmbeddedWalletSdk} instance\n */\n async getEthersJsSigner(network) {\n const signer = new EthersSigner({\n clientId: this.clientId,\n provider: getDefaultProvider(network?.rpcEndpoint ?? ChainToPublicRpc[this.chain]),\n querier: this.walletManagerQuerier\n });\n return signer;\n }\n}\n\nclass EmbeddedWalletSdk {\n /**\n * Used to manage the Auth state of the user.\n */\n\n isClientIdLegacyPaper(clientId) {\n if (clientId.indexOf(\"-\") > 0 && clientId.length === 36) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @example\n * `const thirdwebEmbeddedWallet = new EmbeddedWalletSdk({ clientId: \"\", chain: \"Goerli\" });`\n * @param param0 - EmbeddedWalletConstructorType\n */\n constructor(_ref) {\n let {\n clientId,\n chain,\n styles,\n onAuthSuccess\n } = _ref;\n if (this.isClientIdLegacyPaper(clientId)) {\n throw new Error(\"You are using a legacy clientId. Please use the clientId found on the thirdweb dashboard settings page\");\n }\n this.clientId = clientId;\n this.querier = new EmbeddedWalletIframeCommunicator({\n clientId,\n customizationOptions: styles\n });\n this.wallet = new EmbeddedWallet({\n clientId,\n chain,\n querier: this.querier\n });\n this.auth = new Auth({\n clientId,\n querier: this.querier,\n onAuthSuccess: async authResult => {\n onAuthSuccess?.(authResult);\n await this.wallet.postWalletSetUp({\n ...authResult.walletDetails,\n walletUserId: authResult.storedToken.authDetails.userWalletId\n });\n await this.querier.call({\n procedureName: \"initIframe\",\n params: {\n deviceShareStored: authResult.walletDetails.deviceShareStored,\n clientId: this.clientId,\n walletUserId: authResult.storedToken.authDetails.userWalletId,\n authCookie: authResult.storedToken.cookieString\n }\n });\n return {\n user: {\n status: UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED,\n authDetails: authResult.storedToken.authDetails,\n wallet: this.wallet,\n walletAddress: authResult.walletDetails.walletAddress\n }\n };\n }\n });\n }\n\n /**\n * Gets the usr if they are logged in\n * @example\n * ```js\n * const user = await thirdwebEmbeddedWallet.getUser();\n * switch (user.status) {\n * case UserWalletStatus.LOGGED_OUT: {\n * // User is logged out, call one of the auth methods on thirdwebEmbeddedWallet.auth to authenticate the user\n * break;\n * }\n * case UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED: {\n * // user is logged in and wallet is all set up.\n * // You have access to:\n * user.status;\n * user.authDetails;\n * user.walletAddress;\n * user.wallet;\n * break;\n * }\n * }\n * ```\n * @returns GetUser - an object to containing various information on the user statuses\n */\n async getUser() {\n return this.wallet.getUserWalletStatus();\n }\n}\n\nexport { AUTH_TOKEN_LOCAL_STORAGE_NAME as A, DEVICE_SHARE_LOCAL_STORAGE_NAME as D, EmbeddedWalletSdk as E, RecoveryShareManagement as R, UserWalletStatus as U, WALLET_USER_DETAILS_LOCAL_STORAGE_NAME as W, DEVICE_SHARE_LOCAL_STORAGE_NAME_DEPRECATED as a, WALLET_USER_ID_LOCAL_STORAGE_NAME as b, AuthProvider as c };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedCoin98Provider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (window.coin98) {\n return window.ethereum;\n }\n }\n}\n\nexport { getInjectedCoin98Provider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedCoreWalletProvider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum && window.avalanche) {\n return window.avalanche;\n }\n }\n}\n\nexport { getInjectedCoreWalletProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedCryptoDefiWalletProvider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum && window.deficonnectProvider) {\n return window.deficonnectProvider;\n }\n }\n}\n\nexport { getInjectedCryptoDefiWalletProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedMetamaskProvider() {\n function getReady(ethereum) {\n const isMetaMask = !!ethereum?.isMetaMask;\n if (!isMetaMask) {\n return;\n }\n // Brave tries to make itself look like MetaMask\n // Could also try RPC `web3_clientVersion` if following is unreliable\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {\n return;\n }\n if (ethereum.isRainbow) {\n return;\n }\n if (ethereum.isPhantom) {\n return;\n }\n if (ethereum.isAvalanche) {\n return;\n }\n if (ethereum.isBitKeep) {\n return;\n }\n if (ethereum.isMathWallet) {\n return;\n }\n if (ethereum.isZerion) {\n return;\n }\n if (ethereum.isKuCoinWallet) {\n return;\n }\n if (ethereum.isPortal) {\n return;\n }\n if (ethereum.isTokenPocket) {\n return;\n }\n if (ethereum.isTokenary) {\n return;\n }\n return ethereum;\n }\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum?.providers) {\n return globalThis.window.ethereum.providers.find(getReady);\n }\n return getReady(globalThis.window.ethereum);\n }\n}\n\nexport { getInjectedMetamaskProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedOKXProvider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum && window.okxwallet) {\n return window.okxwallet;\n }\n }\n}\n\nexport { getInjectedOKXProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\nfunction getInjectedOneKeyProvider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.$onekey && globalThis.window.$onekey.ethereum) {\n return globalThis.window.$onekey.ethereum;\n }\n }\n}\n\nexport { getInjectedOneKeyProvider as g };\n","/**\n * @internal\n */\nfunction getInjectedPhantomProvider() {\n const provider = window.phantom?.ethereum;\n if (provider?.isPhantom) {\n return provider;\n }\n}\n\nexport { getInjectedPhantomProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedRabbyProvider() {\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum && window.rabby) {\n return window.rabby;\n }\n }\n}\n\nexport { getInjectedRabbyProvider as g };\n","import { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\n\n/**\n * @internal\n */\nfunction getInjectedRainbowProvider() {\n function getReady(ethereum) {\n const isRainbow = !!ethereum?.isRainbow;\n if (!isRainbow) {\n return;\n }\n // Brave tries to make itself look like MetaMask\n // Could also try RPC `web3_clientVersion` if following is unreliable\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {\n return;\n }\n if (ethereum.isPhantom) {\n return;\n }\n if (ethereum.isAvalanche) {\n return;\n }\n if (ethereum.isBitKeep) {\n return;\n }\n if (ethereum.isMathWallet) {\n return;\n }\n if (ethereum.isZerion) {\n return;\n }\n if (ethereum.isKuCoinWallet) {\n return;\n }\n if (ethereum.isPortal) {\n return;\n }\n if (ethereum.isTokenPocket) {\n return;\n }\n if (ethereum.isTokenary) {\n return;\n }\n return ethereum;\n }\n if (assertWindowEthereum(globalThis.window)) {\n if (globalThis.window.ethereum?.providers) {\n return globalThis.window.ethereum.providers.find(getReady);\n }\n return getReady(globalThis.window.ethereum);\n }\n}\n\nexport { getInjectedRainbowProvider as g };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedOKXProvider } from '../../../../dist/getInjectedOKXProvider-7f8b38ec.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass OKXWallet extends AbstractClientWallet {\n get walletName() {\n return \"OKX\";\n }\n constructor(options) {\n super(OKXWallet.id, options);\n this.isInjected = !!getInjectedOKXProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if OKX is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the OKX app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n OKXConnector\n } = await import('../../../connectors/okx/dist/thirdweb-dev-wallets-evm-connectors-okx.browser.esm.js');\n this.OKXConnector = new OKXConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.OKXConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n async switchAccount() {\n if (!this.OKXConnector) {\n throw new Error(\"Can not switch Account\");\n }\n await this.OKXConnector.switchAccount();\n }\n}\n_defineProperty(OKXWallet, \"id\", walletIds.okx);\n\nexport { OKXWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedCoreWalletProvider } from '../../../../dist/getInjectedCoreWalletProvider-ac484273.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass CoreWallet extends AbstractClientWallet {\n get walletName() {\n return \"Core wallet\";\n }\n constructor(options) {\n super(CoreWallet.id, options);\n this.isInjected = !!getInjectedCoreWalletProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if Core wallet is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the Core app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n CoreWalletConnector\n } = await import('../../../connectors/core-wallet/dist/thirdweb-dev-wallets-evm-connectors-core-wallet.browser.esm.js');\n this.CoreWalletConnector = new CoreWalletConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.CoreWalletConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n async switchAccount() {\n if (!this.CoreWalletConnector) {\n throw new Error(\"Can not switch Account\");\n }\n await this.CoreWalletConnector.switchAccount();\n }\n}\n_defineProperty(CoreWallet, \"id\", walletIds.coreWallet);\n\nexport { CoreWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedOneKeyProvider } from '../../../../dist/getInjectedOneKeyProvider-0923fbdd.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass OneKeyWallet extends AbstractClientWallet {\n get walletName() {\n return \"Core wallet\";\n }\n constructor(options) {\n super(OneKeyWallet.id, options);\n this.isInjected = !!getInjectedOneKeyProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if OneKey wallet is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the OneKey app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n OneKeyConnector\n } = await import('../../../connectors/onekey/dist/thirdweb-dev-wallets-evm-connectors-onekey.browser.esm.js');\n this.OneKeyConnector = new OneKeyConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.OneKeyConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(OneKeyWallet, \"id\", walletIds.coreWallet);\n\nexport { OneKeyWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedCryptoDefiWalletProvider } from '../../../../dist/getInjectedCryptoDefiWalletProvider-9dfc0146.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass CryptoDefiWallet extends AbstractClientWallet {\n get walletName() {\n return \"Crypto Defi wallet\";\n }\n constructor(options) {\n super(CryptoDefiWallet.id, options);\n this.isInjected = !!getInjectedCryptoDefiWalletProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if Defi wallet is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the Defi app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n CryptoDefiWalletConnector\n } = await import('../../../connectors/crypto-defi-wallet/dist/thirdweb-dev-wallets-evm-connectors-crypto-defi-wallet.browser.esm.js');\n this.CryptoDefiWalletConnector = new CryptoDefiWalletConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.CryptoDefiWalletConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(CryptoDefiWallet, \"id\", walletIds.coreWallet);\n\nexport { CryptoDefiWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedRabbyProvider } from '../../../../dist/getInjectedRabbyProvider-8aa8e671.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass RabbyWallet extends AbstractClientWallet {\n get walletName() {\n return \"Rabby wallet\";\n }\n constructor(options) {\n super(RabbyWallet.id, options);\n this.isInjected = !!getInjectedRabbyProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if Rabby wallet is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the Rabby app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n RabbyConnector\n } = await import('../../../connectors/rabby/dist/thirdweb-dev-wallets-evm-connectors-rabby.browser.esm.js');\n this.RabbyConnector = new RabbyConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.RabbyConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(RabbyWallet, \"id\", walletIds.rabby);\n\nexport { RabbyWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedCoin98Provider } from '../../../../dist/getInjectedCoin98Provider-7ac39dfc.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass Coin98Wallet extends AbstractClientWallet {\n get walletName() {\n return \"Coin98 wallet\";\n }\n constructor(options) {\n super(Coin98Wallet.id, options);\n this.isInjected = !!getInjectedCoin98Provider();\n }\n async getConnector() {\n if (!this.connector) {\n // if Coin98 wallet is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the Coin98 app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n Coin98Connector\n } = await import('../../../connectors/coin98/dist/thirdweb-dev-wallets-evm-connectors-coin98.browser.esm.js');\n this.Coin98Connector = new Coin98Connector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.connector = new WagmiAdapter(this.Coin98Connector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * wallet.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(Coin98Wallet, \"id\", walletIds.coin98);\n\nexport { Coin98Wallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { Ethereum, getValidChainRPCs } from '@thirdweb-dev/chains';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\nclass EmbeddedWallet extends AbstractClientWallet {\n /**\n * Sends a verification email to the provided email address.\n *\n * @param email - The email address to which the verification email will be sent.\n * @param clientId - Your thirdweb client ID\n * @returns Information on the user's status and whether they are a new user.\n *\n * @example\n * ```typescript\n * sendVerificationEmail({ email: 'test@example.com', clientId: 'yourClientId' })\n * .then(() => console.log('Verification email sent successfully.'))\n * .catch(error => console.error('Failed to send verification email:', error));\n * ```\n */\n static async sendVerificationEmail(options) {\n const wallet = new EmbeddedWallet({\n chain: Ethereum,\n clientId: options.clientId\n });\n return wallet.sendVerificationEmail({\n email: options.email\n });\n }\n get walletName() {\n return \"Embedded Wallet\";\n }\n constructor(options) {\n super(EmbeddedWallet.id, {\n ...options\n });\n try {\n this.chain = {\n ...options.chain,\n rpc: getValidChainRPCs(options.chain, options.clientId)\n };\n } catch {\n this.chain = options.chain;\n }\n }\n async getConnector() {\n if (!this.connector) {\n // import the connector dynamically\n const {\n EmbeddedWalletConnector\n } = await import('../../../connectors/embedded-wallet/dist/thirdweb-dev-wallets-evm-connectors-embedded-wallet.browser.esm.js');\n this.connector = new EmbeddedWalletConnector({\n clientId: this.options?.clientId ?? \"\",\n chain: this.chain,\n chains: this.chains,\n onAuthSuccess: this.options?.onAuthSuccess\n });\n }\n return this.connector;\n }\n autoConnect(connectOptions) {\n if (!connectOptions) {\n throw new Error(\"Can't autoconnect embedded wallet\");\n }\n // override autoconnect logic for embedded wallet\n // can just call connect since we should have the authResult persisted already\n return this.connect(connectOptions);\n }\n getConnectParams() {\n const connectParams = super.getConnectParams();\n if (!connectParams) {\n return undefined;\n }\n\n // TODO (ews) omit non serializable/autoconnect-able\n return {\n chainId: connectParams.chainId,\n authResult: {\n user: connectParams.authResult.user\n }\n };\n }\n async getEmail() {\n const connector = await this.getConnector();\n return connector.getEmail();\n }\n async getEmbeddedWalletSDK() {\n const connector = await this.getConnector();\n return connector.getEmbeddedWalletSDK();\n }\n\n // TODO move to connect/auth callback\n async getRecoveryInformation() {\n const connector = await this.getConnector();\n return connector.getRecoveryInformation();\n }\n async sendVerificationEmail(_ref) {\n let {\n email\n } = _ref;\n const connector = await this.getConnector();\n return connector.sendVerificationEmail({\n email\n });\n }\n async authenticate(params) {\n const connector = await this.getConnector();\n const authResult = connector.authenticate(params);\n try {\n await this.walletStorage.setItem(LAST_USED_AUTH_STRATEGY, params.strategy);\n } catch {\n // noop\n }\n return authResult;\n }\n async getLastUsedAuthStrategy() {\n try {\n return await this.walletStorage.getItem(LAST_USED_AUTH_STRATEGY);\n } catch {\n return null;\n }\n }\n}\n_defineProperty(EmbeddedWallet, \"id\", walletIds.embeddedWallet);\n_defineProperty(EmbeddedWallet, \"meta\", {\n name: \"Embedded Wallet\",\n iconURL: \"ipfs://QmNx2evQa6tcQs9VTd3YaDm31ckfStvgRGKFGELahUmrbV/emailIcon.svg\"\n});\nconst LAST_USED_AUTH_STRATEGY = \"lastUsedAuthStrategy\";\n\nexport { EmbeddedWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass InjectedWallet extends AbstractClientWallet {\n get walletName() {\n return \"Injected Wallet\";\n }\n constructor(options) {\n super(InjectedWallet.id, options);\n }\n async getConnector() {\n if (!this.connector) {\n // import the connector dynamically\n const {\n InjectedConnector\n } = await import('../../../connectors/injected/dist/thirdweb-dev-wallets-evm-connectors-injected.browser.esm.js');\n this.connector = new WagmiAdapter(new InjectedConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n }));\n }\n return this.connector;\n }\n}\n_defineProperty(InjectedWallet, \"id\", \"injected\");\n\nexport { InjectedWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { SmartWallet } from '../../smart-wallet/dist/thirdweb-dev-wallets-evm-wallets-smart-wallet.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { E as ERC6551_REGISTRY } from '../../../../dist/constants-1ba9df2b.browser.esm.js';\nimport '../../../../dist/base-80191bd0.browser.esm.js';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\n/**\n * A smart wallet controlled by the holder of a particular NFT.\n */\nclass TokenBoundSmartWallet extends SmartWallet {\n get walletName() {\n return \"Token Bound Smart Wallet\";\n }\n constructor(options) {\n super({\n ...options,\n factoryAddress: options.registryAddress || ERC6551_REGISTRY\n });\n this.tbaOptions = options;\n }\n async getConnector() {\n if (!this.tbaConnector) {\n const {\n TokenBoundSmartWalletConnector\n } = await import('../../../connectors/token-bound-smart-wallet/dist/thirdweb-dev-wallets-evm-connectors-token-bound-smart-wallet.browser.esm.js');\n this.tbaConnector = new TokenBoundSmartWalletConnector(this.tbaOptions);\n }\n return this.tbaConnector;\n }\n}\n_defineProperty(TokenBoundSmartWallet, \"meta\", {\n name: \"Token Bound Smart Wallet\",\n iconURL: \"ipfs://QmeAJVqn17aDNQhjEU3kcWVZCFBrfta8LzaDGkS8Egdiyk/smart-wallet.svg\"\n});\n_defineProperty(TokenBoundSmartWallet, \"id\", walletIds.tokenBoundSmartWallet);\n\nexport { TokenBoundSmartWallet };\n","import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from './classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from './classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport { Core } from '@walletconnect/core';\nimport { Web3Wallet } from '@walletconnect/web3wallet';\nimport { utils } from 'ethers';\nimport EventEmitter from 'eventemitter3';\nimport { T as TW_WC_PROJECT_ID, W as WC_RELAY_URL, E as EIP155_SIGNING_METHODS } from './wc-fbb7ab15.browser.esm.js';\nexport { E as EIP155_SIGNING_METHODS } from './wc-fbb7ab15.browser.esm.js';\nimport { formatJsonRpcResult } from '@walletconnect/jsonrpc-utils';\nexport { a as AbstractClientWallet, A as AsyncLocalStorage, D as DEFAULT_DAPP_META, c as createAsyncLocalStorage, i as isWalletAnalyticsEnabled, s as setWalletAnalyticsEnabled } from './base-80191bd0.browser.esm.js';\nexport { w as walletIds } from './walletIds-afeb5af2.browser.esm.js';\nexport { W as WagmiConnector } from './WagmiConnector-2f14002d.browser.esm.js';\nexport { A as AddChainError, C as ChainNotConfiguredError, P as ProviderRpcError, S as SwitchChainError, U as UserRejectedRequestError } from './errors-ec4e53e9.browser.esm.js';\nexport { n as normalizeChainId } from './normalizeChainId-1fb9aedf.browser.esm.js';\nexport { C as Connector, W as WagmiAdapter } from './connector-05689d68.browser.esm.js';\nexport { OKXWallet } from '../evm/wallets/okx/dist/thirdweb-dev-wallets-evm-wallets-okx.browser.esm.js';\nexport { g as getInjectedOKXProvider } from './getInjectedOKXProvider-7f8b38ec.browser.esm.js';\nexport { CoreWallet } from '../evm/wallets/core-wallet/dist/thirdweb-dev-wallets-evm-wallets-core-wallet.browser.esm.js';\nexport { g as getInjectedCoreWalletProvider } from './getInjectedCoreWalletProvider-ac484273.browser.esm.js';\nexport { OneKeyWallet } from '../evm/wallets/onekey/dist/thirdweb-dev-wallets-evm-wallets-onekey.browser.esm.js';\nexport { g as getInjectedOneKeyProvider } from './getInjectedOneKeyProvider-0923fbdd.browser.esm.js';\nexport { CryptoDefiWallet } from '../evm/wallets/crypto-defi-wallet/dist/thirdweb-dev-wallets-evm-wallets-crypto-defi-wallet.browser.esm.js';\nexport { g as getInjectedCryptoDefiWalletProvider } from './getInjectedCryptoDefiWalletProvider-9dfc0146.browser.esm.js';\nexport { RabbyWallet } from '../evm/wallets/rabby/dist/thirdweb-dev-wallets-evm-wallets-rabby.browser.esm.js';\nexport { g as getInjectedRabbyProvider } from './getInjectedRabbyProvider-8aa8e671.browser.esm.js';\nexport { Coin98Wallet } from '../evm/wallets/coin98/dist/thirdweb-dev-wallets-evm-wallets-coin98.browser.esm.js';\nexport { g as getInjectedCoin98Provider } from './getInjectedCoin98Provider-7ac39dfc.browser.esm.js';\nexport { g as getInjectedMetamaskProvider } from './getInjectedMetamaskProvider-90084de7.browser.esm.js';\nexport { g as getInjectedPhantomProvider } from './getInjectedPhantomProvider-95eb3d4f.browser.esm.js';\nexport { g as getInjectedRainbowProvider } from './getInjectedRainbowProvider-ecc48a30.browser.esm.js';\nexport { g as getInjectedCoinbaseProvider } from './getInjectedCoinbaseProvider-a1001768.browser.esm.js';\nexport { a as assertWindowEthereum } from './assertWindowEthereum-f5a6356c.browser.esm.js';\nexport { E as EngineSigner, a as EngineWallet } from './engine-26521d6a.browser.esm.js';\nexport { PaperWallet } from '../evm/wallets/paper-wallet/dist/thirdweb-dev-wallets-evm-wallets-paper-wallet.browser.esm.js';\nexport { BloctoWallet } from '../evm/wallets/blocto/dist/thirdweb-dev-wallets-evm-wallets-blocto.browser.esm.js';\nexport { CoinbaseWallet } from '../evm/wallets/coinbase-wallet/dist/thirdweb-dev-wallets-evm-wallets-coinbase-wallet.browser.esm.js';\nexport { EmbeddedWallet } from '../evm/wallets/embedded-wallet/dist/thirdweb-dev-wallets-evm-wallets-embedded-wallet.browser.esm.js';\nexport { EthersWallet } from '../evm/wallets/ethers/dist/thirdweb-dev-wallets-evm-wallets-ethers.browser.esm.js';\nexport { FrameWallet } from '../evm/wallets/frame/dist/thirdweb-dev-wallets-evm-wallets-frame.browser.esm.js';\nexport { InjectedWallet } from '../evm/wallets/injected/dist/thirdweb-dev-wallets-evm-wallets-injected.browser.esm.js';\nexport { LocalWallet, isValidPrivateKey } from '../evm/wallets/local-wallet/dist/thirdweb-dev-wallets-evm-wallets-local-wallet.browser.esm.js';\nexport { SignerWallet } from '../evm/wallets/signer/dist/thirdweb-dev-wallets-evm-wallets-signer.browser.esm.js';\nexport { MagicLink } from '../evm/wallets/magic/dist/thirdweb-dev-wallets-evm-wallets-magic.browser.esm.js';\nexport { MetaMaskWallet } from '../evm/wallets/metamask/dist/thirdweb-dev-wallets-evm-wallets-metamask.browser.esm.js';\nexport { PhantomWallet } from '../evm/wallets/phantom/dist/thirdweb-dev-wallets-evm-wallets-phantom.browser.esm.js';\nexport { PrivateKeyWallet } from '../evm/wallets/private-key/dist/thirdweb-dev-wallets-evm-wallets-private-key.browser.esm.js';\nexport { RainbowWallet } from '../evm/wallets/rainbow-wallet/dist/thirdweb-dev-wallets-evm-wallets-rainbow-wallet.browser.esm.js';\nexport { S as SafeSupportedChainsSet } from './constants-e71c81af.browser.esm.js';\nexport { SafeWallet } from '../evm/wallets/safe/dist/thirdweb-dev-wallets-evm-wallets-safe.browser.esm.js';\nexport { SmartWallet, getAllSigners, getAllSmartWallets, getSmartWalletAddress, isSmartWalletDeployed } from '../evm/wallets/smart-wallet/dist/thirdweb-dev-wallets-evm-wallets-smart-wallet.browser.esm.js';\nexport { TrustWallet } from '../evm/wallets/trust/dist/thirdweb-dev-wallets-evm-wallets-trust.browser.esm.js';\nexport { WalletConnect } from '../evm/wallets/wallet-connect/dist/thirdweb-dev-wallets-evm-wallets-wallet-connect.browser.esm.js';\nexport { WalletConnectV1 } from '../evm/wallets/wallet-connect-v1/dist/thirdweb-dev-wallets-evm-wallets-wallet-connect-v1.browser.esm.js';\nexport { ZerionWallet } from '../evm/wallets/zerion/dist/thirdweb-dev-wallets-evm-wallets-zerion.browser.esm.js';\nexport { TokenBoundSmartWallet } from '../evm/wallets/token-bound-smart-wallet/dist/thirdweb-dev-wallets-evm-wallets-token-bound-smart-wallet.browser.esm.js';\nexport { A as AUTH_TOKEN_LOCAL_STORAGE_NAME, c as AuthProvider, D as DEVICE_SHARE_LOCAL_STORAGE_NAME, a as DEVICE_SHARE_LOCAL_STORAGE_NAME_DEPRECATED, E as EmbeddedWalletSdk, R as RecoveryShareManagement, U as UserWalletStatus, W as WALLET_USER_DETAILS_LOCAL_STORAGE_NAME, b as WALLET_USER_ID_LOCAL_STORAGE_NAME } from './embedded-wallet-8b5fb8bd.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../evm/wallets/abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport './defineProperty-c8ecdc07.browser.esm.js';\nimport '@thirdweb-dev/sdk';\nimport 'buffer';\nimport '@thirdweb-dev/crypto';\nimport './constants-1ba9df2b.browser.esm.js';\nimport '@paperxyz/sdk-common-utilities';\nimport 'ethers/lib/utils';\n\nconst PREFIX = \"__TW__\";\nclass LocalStorage {\n constructor(name) {\n this.name = name;\n }\n getItem(key) {\n return localStorage.getItem(`${PREFIX}/${this.name}/${key}`);\n }\n setItem(key, value) {\n return localStorage.setItem(`${PREFIX}/${this.name}/${key}`, value);\n }\n removeItem(key) {\n return localStorage.removeItem(`${PREFIX}/${this.name}/${key}`);\n }\n}\n\n/**\n * @internal\n */\nfunction createLocalStorage(name) {\n return new LocalStorage(name);\n}\n\n// connect dapp support through wcv2 protocol\n\nclass WalletConnectHandler extends EventEmitter {\n constructor(wallet) {\n super();\n this.wallet = wallet;\n }\n}\n\nvar _core = /*#__PURE__*/new WeakMap();\nvar _wcWallet = /*#__PURE__*/new WeakMap();\nvar _session = /*#__PURE__*/new WeakMap();\nvar _wcMetadata = /*#__PURE__*/new WeakMap();\nvar _activeProposal = /*#__PURE__*/new WeakMap();\nvar _activeRequestEvent = /*#__PURE__*/new WeakMap();\nvar _setupWalletConnectEventsListeners = /*#__PURE__*/new WeakSet();\nvar _getSignParamsMessage = /*#__PURE__*/new WeakSet();\nclass WalletConnectV2Handler extends WalletConnectHandler {\n constructor(options, wallet) {\n super(wallet);\n /**\n * Gets message from various signing request methods by filtering out\n * a value that is not an address (thus is a message).\n * If it is a hex string, it gets converted to utf8 string\n */\n _classPrivateMethodInitSpec(this, _getSignParamsMessage);\n _classPrivateMethodInitSpec(this, _setupWalletConnectEventsListeners);\n _classPrivateFieldInitSpec(this, _core, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _wcWallet, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _session, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _wcMetadata, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _activeProposal, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _activeRequestEvent, {\n writable: true,\n value: void 0\n });\n const defaultWCReceiverConfig = {\n walletConnectWalletMetadata: {\n name: \"Thirdweb Smart Wallet\",\n description: \"Thirdweb Smart Wallet\",\n url: \"https://thirdweb.com\",\n icons: [\"https://thirdweb.com/favicon.ico\"]\n },\n walletConnectV2ProjectId: TW_WC_PROJECT_ID,\n walletConnectV2RelayUrl: WC_RELAY_URL,\n ...(options?.walletConnectReceiver === true ? {} : options?.walletConnectReceiver)\n };\n _classPrivateFieldSet(this, _wcMetadata, defaultWCReceiverConfig.walletConnectWalletMetadata);\n _classPrivateFieldSet(this, _core, new Core({\n projectId: defaultWCReceiverConfig.walletConnectV2ProjectId,\n relayUrl: defaultWCReceiverConfig.walletConnectV2RelayUrl\n }));\n }\n async init() {\n _classPrivateFieldSet(this, _wcWallet, await Web3Wallet.init({\n core: _classPrivateFieldGet(this, _core),\n metadata: _classPrivateFieldGet(this, _wcMetadata)\n }));\n const sessions = _classPrivateFieldGet(this, _wcWallet).getActiveSessions();\n const keys = Object.keys(sessions);\n if (keys[0]) {\n _classPrivateFieldSet(this, _session, sessions[keys[0]]);\n }\n _classPrivateMethodGet(this, _setupWalletConnectEventsListeners, _setupWalletConnectEventsListeners2).call(this);\n }\n async connectApp(wcUri) {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before connecting an app.\");\n }\n await _classPrivateFieldGet(this, _wcWallet).core.pairing.pair({\n uri: wcUri\n });\n }\n async approveSession() {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before making session requests.\");\n }\n if (!_classPrivateFieldGet(this, _activeProposal)) {\n throw new Error(\"Please, pass a valid proposal.\");\n }\n const account = await this.wallet.getAddress();\n const {\n id,\n params\n } = _classPrivateFieldGet(this, _activeProposal);\n const {\n requiredNamespaces,\n relays\n } = params;\n const namespaces = {};\n Object.keys(requiredNamespaces).forEach(key => {\n const accounts = [];\n const namespace = requiredNamespaces[key];\n if (namespace) {\n namespace.chains?.map(chain => {\n accounts.push(`${chain}:${account}`);\n });\n namespaces[key] = {\n accounts,\n methods: namespace.methods,\n events: namespace.events\n };\n }\n });\n _classPrivateFieldSet(this, _session, await _classPrivateFieldGet(this, _wcWallet).approveSession({\n id,\n relayProtocol: relays[0]?.protocol,\n namespaces\n }));\n this.emit(\"session_approved\");\n }\n async rejectSession() {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before making session requests.\");\n }\n if (!_classPrivateFieldGet(this, _activeProposal)) {\n throw new Error(\"Please, pass a valid proposal.\");\n }\n const {\n id\n } = _classPrivateFieldGet(this, _activeProposal);\n await _classPrivateFieldGet(this, _wcWallet).rejectSession({\n id,\n reason: {\n message: \"User rejected methods.\",\n code: 5002\n }\n });\n }\n async approveEIP155Request() {\n if (!_classPrivateFieldGet(this, _activeRequestEvent)) {\n return;\n }\n const {\n topic,\n params,\n id\n } = _classPrivateFieldGet(this, _activeRequestEvent);\n const {\n request\n } = params;\n let response;\n switch (request.method) {\n case EIP155_SIGNING_METHODS.PERSONAL_SIGN:\n case EIP155_SIGNING_METHODS.ETH_SIGN:\n const message = _classPrivateMethodGet(this, _getSignParamsMessage, _getSignParamsMessage2).call(this, request.params);\n const signedMessage = await this.wallet.signMessage(message || \"\"); // TODO: handle empty message\n\n response = formatJsonRpcResult(id, signedMessage);\n break;\n // case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA:\n // case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3:\n // case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4:\n // const {\n // domain,\n // types,\n // message: data,\n // } = getSignTypedDataParamsData(request.params);\n // // https://github.com/ethers-io/ethers.js/issues/687#issuecomment-714069471\n // delete types.EIP712Domain;\n // const signedData = await wallet._signTypedData(domain, types, data);\n // return formatJsonRpcResult(id, signedData);\n case EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION:\n const signer = await this.wallet.getSigner();\n const sendTransaction = request.params[0];\n const tx = await signer.sendTransaction(sendTransaction);\n const {\n transactionHash\n } = await tx.wait();\n response = formatJsonRpcResult(id, transactionHash);\n break;\n case EIP155_SIGNING_METHODS.ETH_SIGN_TRANSACTION:\n const signerSign = await this.wallet.getSigner();\n const signTransaction = request.params[0];\n const signature = await signerSign.signTransaction(signTransaction);\n response = formatJsonRpcResult(id, signature);\n break;\n default:\n const error = {\n id,\n jsonrpc: \"2.0\",\n error: {\n message: \"Invalid event.\",\n code: 1002\n }\n };\n return _classPrivateFieldGet(this, _wcWallet)?.respondSessionRequest({\n topic,\n response: error\n });\n }\n return _classPrivateFieldGet(this, _wcWallet)?.respondSessionRequest({\n topic,\n response\n });\n }\n async rejectEIP155Request() {\n if (!_classPrivateFieldGet(this, _activeRequestEvent)) {\n return;\n }\n const {\n topic,\n id\n } = _classPrivateFieldGet(this, _activeRequestEvent);\n const response = {\n id,\n jsonrpc: \"2.0\",\n error: {\n message: \"User rejected methods.\",\n code: 5002\n }\n };\n return _classPrivateFieldGet(this, _wcWallet)?.respondSessionRequest({\n topic,\n response\n });\n }\n getActiveSessions() {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before getting sessions.\");\n }\n const sessions = _classPrivateFieldGet(this, _wcWallet).getActiveSessions();\n const sessionKeys = Object.keys(sessions);\n if (!sessions || sessionKeys.length === 0) {\n return [];\n }\n const thisSessions = [];\n for (const sessionKey of sessionKeys) {\n const session = sessions[sessionKey];\n if (session) {\n const topic = session.topic;\n const peerMeta = session.peer.metadata;\n thisSessions.push({\n topic,\n peer: {\n metadata: peerMeta\n }\n });\n }\n }\n return thisSessions;\n }\n disconnectSession() {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before disconnecting sessions.\");\n }\n if (!_classPrivateFieldGet(this, _session)) {\n return Promise.resolve();\n }\n const params = {\n topic: _classPrivateFieldGet(this, _session).topic,\n reason: {\n message: \"User disconnected.\",\n code: 6000\n }\n };\n return _classPrivateFieldGet(this, _wcWallet)?.disconnectSession(params);\n }\n}\nfunction _setupWalletConnectEventsListeners2() {\n if (!_classPrivateFieldGet(this, _wcWallet)) {\n throw new Error(\"Please, init the wallet before making session requests.\");\n }\n _classPrivateFieldGet(this, _wcWallet).on(\"session_proposal\", proposal => {\n _classPrivateFieldSet(this, _activeProposal, proposal);\n this.emit(\"session_proposal\", {\n proposer: {\n metadata: proposal.params.proposer.metadata\n }\n });\n });\n _classPrivateFieldGet(this, _wcWallet).on(\"session_delete\", session => {\n _classPrivateFieldSet(this, _session, undefined);\n _classPrivateFieldSet(this, _activeProposal, undefined);\n this.emit(\"session_delete\", {\n topic: session.topic\n });\n });\n _classPrivateFieldGet(this, _wcWallet).on(\"session_request\", async requestEvent => {\n if (!_classPrivateFieldGet(this, _session)) {\n return;\n }\n const {\n params: requestParams\n } = requestEvent;\n const {\n request\n } = requestParams;\n const {\n params\n } = request;\n switch (request.method) {\n case EIP155_SIGNING_METHODS.ETH_SIGN:\n case EIP155_SIGNING_METHODS.PERSONAL_SIGN:\n _classPrivateFieldSet(this, _activeRequestEvent, requestEvent);\n const message = params[0];\n const decodedMessage = new TextDecoder().decode(utils.arrayify(message));\n const paramsCopy = [...params];\n paramsCopy[0] = decodedMessage;\n this.emit(\"session_request\", {\n topic: _classPrivateFieldGet(this, _session).topic,\n params: paramsCopy,\n peer: {\n metadata: _classPrivateFieldGet(this, _session).peer.metadata\n },\n method: request.method\n });\n return;\n case EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION:\n case EIP155_SIGNING_METHODS.ETH_SIGN_TRANSACTION:\n _classPrivateFieldSet(this, _activeRequestEvent, requestEvent);\n this.emit(\"session_request\", {\n topic: _classPrivateFieldGet(this, _session).topic,\n params: requestEvent.params.request.params,\n peer: {\n metadata: _classPrivateFieldGet(this, _session).peer.metadata\n },\n method: request.method\n });\n return;\n default:\n throw new Error(`WCV2.Method not supported: ${request.method}`);\n }\n });\n}\nfunction _getSignParamsMessage2(params) {\n const message = params.filter(p => !utils.isAddress(p))[0] || \"\"; // TODO: handle empty message\n\n if (utils.isHexString(message)) {\n return utils.toUtf8String(message);\n }\n return message;\n}\n\nexport { LocalStorage, WalletConnectHandler, WalletConnectV2Handler, createLocalStorage };\n","const walletIds = {\n blocto: \"blocto\",\n coin98: \"coin98\",\n coinbase: \"coinbase\",\n coreWallet: \"coreWallet\",\n cryptoDefiWallet: \"cryptoDefiWallet\",\n frame: \"frame\",\n localWallet: \"localWallet\",\n magicLink: \"magicLink\",\n metamask: \"metamask\",\n paper: \"paper\",\n rainbow: \"rainbowWallet\",\n smartWallet: \"smartWallet\",\n tokenBoundSmartWallet: \"tokenBoundSmartWallet\",\n safe: \"safe\",\n trust: \"trust\",\n embeddedWallet: \"embeddedWallet\",\n walletConnectV1: \"walletConnectV1\",\n walletConnect: \"walletConnect\",\n phantom: \"phantom\",\n okx: \"okx\",\n oneKey: \"oneKey\",\n rabby: \"rabby\"\n // add new ids sorted alphabetically\n};\n\nexport { walletIds as w };\n","const TW_WC_PROJECT_ID = \"145769e410f16970a79ff77b2d89a1e0\";\nconst WC_RELAY_URL = \"wss://relay.walletconnect.com\";\n\n/**\n * @internal\n * Methods\n */\nconst EIP155_SIGNING_METHODS = {\n PERSONAL_SIGN: \"personal_sign\",\n ETH_SIGN: \"eth_sign\",\n ETH_SIGN_TRANSACTION: \"eth_signTransaction\",\n ETH_SIGN_TYPED_DATA: \"eth_signTypedData\",\n ETH_SIGN_TYPED_DATA_V3: \"eth_signTypedData_v3\",\n ETH_SIGN_TYPED_DATA_V4: \"eth_signTypedData_v4\",\n ETH_SEND_TRANSACTION: \"eth_sendTransaction\",\n SWITCH_CHAIN: \"wallet_switchEthereumChain\"\n};\n\nexport { EIP155_SIGNING_METHODS as E, TW_WC_PROJECT_ID as T, WC_RELAY_URL as W };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { Contract, providers, utils } from 'ethers';\nimport EventEmitter from 'eventemitter3';\nimport { isNativeToken, fetchCurrencyValue, normalizePriceValue, NATIVE_TOKEN_ADDRESS } from '@thirdweb-dev/sdk';\n\nconst ERC20WithDecimalsAbi = [{\n anonymous: false,\n inputs: [{\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }, {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\"\n }, {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }],\n name: \"Approval\",\n type: \"event\"\n}, {\n anonymous: false,\n inputs: [{\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n }, {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }, {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }],\n name: \"Transfer\",\n type: \"event\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }, {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\"\n }],\n name: \"allowance\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"spender\",\n type: \"address\"\n }, {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }],\n name: \"approve\",\n outputs: [{\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }],\n stateMutability: \"nonpayable\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"who\",\n type: \"address\"\n }],\n name: \"balanceOf\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }, {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }],\n name: \"transfer\",\n outputs: [{\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }],\n stateMutability: \"nonpayable\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n }, {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }, {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }],\n name: \"transferFrom\",\n outputs: [{\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }],\n stateMutability: \"nonpayable\",\n type: \"function\"\n}, {\n inputs: [],\n name: \"decimals\",\n outputs: [{\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\n\nfunction createErc20(provider, currencyAddress) {\n return new Contract(currencyAddress, ERC20WithDecimalsAbi, provider);\n}\n\n// TODO improve this\nfunction chainIdToThirdwebRpc(chainId, clientId) {\n return `https://${chainId}.rpc.thirdweb.com${clientId ? `/${clientId}` : \"\"}${typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ? `?bundleId=${globalThis.APP_BUNDLE_ID}` : \"\"}`;\n}\nconst EIP1271_ABI = [\"function isValidSignature(bytes32 _message, bytes _signature) public view returns (bytes4)\"];\nconst EIP1271_MAGICVALUE = \"0x1626ba7e\";\nasync function checkContractWalletSignature(message, signature, address, chainId) {\n //TODO: A provider should be passed in instead of creating a new one here.\n const provider = new providers.JsonRpcProvider(chainIdToThirdwebRpc(chainId));\n const walletContract = new Contract(address, EIP1271_ABI, provider);\n const _hashMessage = utils.hashMessage(message);\n try {\n const res = await walletContract.isValidSignature(_hashMessage, signature);\n return res === EIP1271_MAGICVALUE;\n } catch {\n return false;\n }\n}\nclass AbstractWallet extends EventEmitter {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", \"evm\");\n }\n /**\n * @returns the account address from connected wallet\n */\n async getAddress() {\n const signer = await this.getSigner();\n return signer.getAddress();\n }\n\n /**\n * @returns the native token balance of the connected wallet\n */\n async getBalance() {\n let currencyAddress = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NATIVE_TOKEN_ADDRESS;\n const signer = await this.getSigner();\n const address = await this.getAddress();\n if (!signer.provider) {\n throw new Error(\"Please connect a provider\");\n }\n let balance;\n if (isNativeToken(currencyAddress)) {\n balance = await signer.provider.getBalance(address);\n } else {\n const erc20 = createErc20(signer, currencyAddress);\n balance = await erc20.balanceOf(address);\n }\n\n // Note: assumes that the native currency decimals is 18, which isn't always correct\n return await fetchCurrencyValue(signer.provider, currencyAddress, balance);\n }\n\n /**\n * @returns the chain id from connected wallet\n */\n async getChainId() {\n const signer = await this.getSigner();\n return signer.getChainId();\n }\n async transfer(to, amount) {\n let currencyAddress = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NATIVE_TOKEN_ADDRESS;\n const signer = await this.getSigner();\n const from = await this.getAddress();\n if (!signer.provider) {\n throw new Error(\"Please connect a provider\");\n }\n const value = await normalizePriceValue(signer.provider, amount, currencyAddress);\n if (isNativeToken(currencyAddress)) {\n const tx = await signer.sendTransaction({\n from,\n to,\n value\n });\n return {\n receipt: await tx.wait()\n };\n } else {\n const erc20 = createErc20(signer, currencyAddress);\n const tx = await erc20.transfer(to, value);\n return {\n receipt: await tx.wait()\n };\n }\n }\n\n /**\n * @returns the signature of the message\n */\n async signMessage(message) {\n const signer = await this.getSigner();\n return await signer.signMessage(message);\n }\n\n /**\n * verify the signature of a message\n * @returns `true` if the signature is valid, `false` otherwise\n */\n async verifySignature(message, signature, address, chainId) {\n try {\n const messageHash = utils.hashMessage(message);\n const messageHashBytes = utils.arrayify(messageHash);\n const recoveredAddress = utils.recoverAddress(messageHashBytes, signature);\n if (recoveredAddress === address) {\n return true;\n }\n } catch {\n // no-op\n }\n\n // Check if the address is a smart contract wallet\n if (chainId !== undefined) {\n try {\n const isValid = await checkContractWalletSignature(message, signature, address, chainId || 1);\n return isValid;\n } catch {\n // no-op\n }\n }\n return false;\n }\n}\n\nexport { AbstractWallet, checkContractWalletSignature };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { updateChainRPCs } from '@thirdweb-dev/chains';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass BloctoWallet extends AbstractClientWallet {\n constructor(options) {\n if (options?.chain && options.clientId) {\n options.chain = updateChainRPCs(options.chain, options.clientId);\n }\n super(BloctoWallet.id, options);\n _defineProperty(this, \"name\", \"Blocto\");\n }\n async initConnector() {\n const {\n BloctoConnector\n } = await import('../../../connectors/blocto/dist/thirdweb-dev-wallets-evm-connectors-blocto.browser.esm.js');\n const bloctoConnector = new BloctoConnector({\n chains: this.chains,\n options: {\n appId: this.options?.appId,\n chainId: this.options?.chain?.chainId\n }\n });\n this.connector = new WagmiAdapter(bloctoConnector);\n return this.connector;\n }\n async getConnector() {\n if (!this.connector) {\n return await this.initConnector();\n }\n return Promise.resolve(this.connector);\n }\n}\n_defineProperty(BloctoWallet, \"id\", walletIds.blocto);\n_defineProperty(BloctoWallet, \"meta\", {\n name: \"Blocto\",\n iconURL: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMzNfMjM4NykiPgo8cmVjdCB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTMyLjkwMjggMTguMzA2M0MyOC4zOTExIDE4LjMwNjMgMjMuOTg3MyAyMC4wNDU5IDIwLjY5NTIgMjMuMTMxOUMxNy4wODQzIDI2LjUxNzYgMTQuNzk5MiAzMS41MTc3IDEzLjQ4OTMgMzYuMjIxMkMxMi42MzE0IDM5LjI5OTIgMTIuMjAxNiA0Mi40OTE1IDEyLjIwMTYgNDUuNjg1M0MxMi4yMDE2IDQ2LjY1MTEgMTIuMjQxMiA0Ny42MDg5IDEyLjMxNzQgNDguNTU1NkMxMi40MTA5IDQ5LjcwNjkgMTMuNTMyMSA1MC41MDQ2IDE0LjY0ODUgNTAuMjAzM0MxNS42MjIyIDQ5Ljk0MTYgMTYuNjQ2NiA0OS44MDA1IDE3LjcwMjggNDkuODAwNUMxOS44NzIyIDQ5LjgwMDUgMjEuOTA1MiA1MC4zOTA0IDIzLjY0OCA1MS40MjEyQzIzLjY5MDggNTEuNDQ2NiAyMy43MzIgNTEuNDcxOSAyMy43NzQ4IDUxLjQ5NTdDMjYuNjA3MSA1My4xODQ2IDI5Ljk0ODQgNTQuMTEyMyAzMy41MTE3IDUzLjk5MzRDNDIuODA2MiA1My42ODU3IDUwLjM5OSA0Ni4xMjMgNTAuNzQxNiAzNi44MzAxQzUxLjExNTggMjYuNjYzNSA0Mi45ODY5IDE4LjMwNDcgMzIuOTA0NCAxOC4zMDQ3TDMyLjkwMjggMTguMzA2M1pNMzIuOTAyOCA0NC4zMTJDMjguMzk3NSA0NC4zMTIgMjQuNzQ1NCA0MC42NTk5IDI0Ljc0NTQgMzYuMTU2MkMyNC43NDU0IDMxLjY1MjUgMjguMzk3NSAyNy45OTg3IDMyLjkwMjggMjcuOTk4N0MzNy40MDgxIDI3Ljk5ODcgNDEuMDYwMiAzMS42NTA5IDQxLjA2MDIgMzYuMTU2MkM0MS4wNjAyIDQwLjY2MTQgMzcuNDA4MSA0NC4zMTIgMzIuOTAyOCA0NC4zMTJaIiBmaWxsPSIjMTRBQUZGIi8+CjxwYXRoIGQ9Ik0yNS41NjM2IDEyLjY4MjZDMjUuNTYzNiAxNS4wMzQ0IDI0LjMzMTUgMTcuMjE2NCAyMi4zMDggMTguNDE1M0MyMS4wMzc3IDE5LjE2ODYgMTkuODQ2OCAyMC4wNTgyIDE4Ljc2ODQgMjEuMDcxNUMxNi4zNzU1IDIzLjMxMzkgMTQuNTg5OCAyNi4wNjUzIDEzLjI2NzMgMjguNzkyOUMxMy4wMDcyIDI5LjMzMDQgMTIuMiAyOS4xNDAyIDEyLjIgMjguNTQyM1YxMi42ODI2QzEyLjIgOC45OTI0MiAxNS4xOTI0IDYgMTguODgyNiA2QzIyLjU3MjggNiAyNS41NjUyIDguOTkyNDIgMjUuNTY1MiAxMi42ODI2SDI1LjU2MzZaIiBmaWxsPSIjMDA3NUZGIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMjIzM18yMzg3Ij4KPHJlY3Qgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=\",\n urls: {\n android: \"https://play.google.com/store/apps/details?id=com.portto.blocto\",\n ios: \"https://apps.apple.com/app/blocto/id1481181682\"\n }\n});\n\nexport { BloctoWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { Buffer } from 'buffer';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\n{\n // Coinbase SDK uses Buffer for rendering the QRCode which requires a global polyfill\n window.Buffer = Buffer;\n}\nclass CoinbaseWallet extends AbstractClientWallet {\n get walletName() {\n return \"Coinbase Wallet\";\n }\n constructor(options) {\n super(CoinbaseWallet.id, options);\n this.headlessMode = options?.headlessMode || false;\n this.theme = options?.theme || this.dappMetadata.isDarkMode === false ? \"light\" : \"dark\";\n }\n async getConnector() {\n if (!this.connector) {\n // import the connector dynamically\n const {\n CoinbaseWalletConnector\n } = await import('../../../connectors/coinbase-wallet/dist/thirdweb-dev-wallets-evm-connectors-coinbase-wallet.browser.esm.js');\n const cbConnector = new CoinbaseWalletConnector({\n chains: this.chains,\n options: {\n appName: this.dappMetadata.name,\n reloadOnDisconnect: false,\n darkMode: this.theme === \"dark\",\n headlessMode: this.headlessMode\n }\n });\n cbConnector.on(\"connect\", () => {});\n this.coinbaseConnector = cbConnector;\n this.connector = new WagmiAdapter(cbConnector);\n }\n return this.connector;\n }\n async getQrUrl() {\n await this.getConnector();\n if (!this.coinbaseConnector) {\n throw new Error(\"Coinbase connector not initialized\");\n }\n return this.coinbaseConnector.getQrUrl();\n }\n}\n// TODO: remove this\n_defineProperty(CoinbaseWallet, \"meta\", {\n iconURL: \"ipfs://QmcJBHopbwfJcLqJpX2xEufSS84aLbF7bHavYhaXUcrLaH/coinbase.svg\",\n name: \"Coinbase Wallet\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/us/app/coinbase-wallet-nfts-crypto/id1278383455\"\n }\n});\n_defineProperty(CoinbaseWallet, \"id\", walletIds.coinbase);\n\nexport { CoinbaseWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass FrameWallet extends AbstractClientWallet {\n get walletName() {\n return \"Frame Wallet\";\n }\n constructor(options) {\n super(FrameWallet.id, options);\n }\n async getConnector() {\n if (!this.connector) {\n // import the connector dynamically\n const {\n FrameConnector\n } = await import('../../../connectors/frame/dist/thirdweb-dev-wallets-evm-connectors-frame.browser.esm.js');\n this.connector = new WagmiAdapter(new FrameConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n }));\n }\n return this.connector;\n }\n}\n_defineProperty(FrameWallet, \"id\", walletIds.frame);\n\nexport { FrameWallet };\n","import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { a as AbstractClientWallet, c as createAsyncLocalStorage } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { updateChainRPCs, defaultChains, Ethereum } from '@thirdweb-dev/chains';\nimport { utils, Wallet } from 'ethers';\nimport { aesDecryptCompat, aesEncrypt } from '@thirdweb-dev/crypto';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n\nconst STORAGE_KEY_WALLET_DATA = \"localWalletData\";\nvar _storage2 = /*#__PURE__*/new WeakMap();\nvar _saveData = /*#__PURE__*/new WeakSet();\nclass LocalWallet extends AbstractClientWallet {\n get walletName() {\n return \"Local Wallet\";\n }\n constructor(options) {\n super(LocalWallet.id, options);\n /**\n * store the wallet data to storage\n */\n _classPrivateMethodInitSpec(this, _saveData);\n _classPrivateFieldInitSpec(this, _storage2, {\n writable: true,\n value: void 0\n });\n if (options?.chain && options.clientId) {\n options.chain = updateChainRPCs(options.chain, options.clientId);\n }\n this.options = options || {};\n _classPrivateFieldSet(this, _storage2, options?.storage || createAsyncLocalStorage(walletIds.localWallet));\n }\n async getConnector() {\n if (!this.connector) {\n const {\n LocalWalletConnector: LocalWalletConnector\n } = await import('../../../connectors/local-wallet/dist/thirdweb-dev-wallets-evm-connectors-local-wallet.browser.esm.js');\n if (!this.ethersWallet) {\n throw new Error(\"wallet is not initialized\");\n }\n const defaults = (this.options.chain ? [...defaultChains, this.options.chain] : defaultChains).map(c => updateChainRPCs(c, this.options.clientId));\n this.connector = new LocalWalletConnector({\n chain: this.options.chain || updateChainRPCs(Ethereum, this.options.clientId),\n ethersWallet: this.ethersWallet,\n chains: this.chains || defaults,\n clientId: this.options.clientId,\n secretKey: this.options.secretKey\n });\n }\n return this.connector;\n }\n\n /**\n * load saved wallet data from storage or generate a new one and save it.\n */\n async loadOrCreate(options) {\n if (await this.getSavedData(options.storage)) {\n await this.load(options);\n } else {\n await this.generate();\n await this.save(options);\n }\n }\n\n /**\n * creates a new random wallet\n * @returns the address of the newly created wallet\n */\n async generate() {\n if (this.ethersWallet) {\n throw new Error(\"wallet is already initialized\");\n }\n const random = utils.randomBytes(32);\n this.ethersWallet = new Wallet(random);\n return this.ethersWallet.address;\n }\n\n /**\n * create local wallet from an \"encryptedJson\", \"privateKey\" or \"mnemonic\"\n * @returns\n */\n async import(options) {\n if (this.ethersWallet) {\n throw new Error(\"wallet is already initialized\");\n }\n if (\"encryptedJson\" in options) {\n this.ethersWallet = await Wallet.fromEncryptedJson(options.encryptedJson, options.password);\n return this.ethersWallet.address;\n }\n if (\"privateKey\" in options) {\n if (!options.encryption && !isValidPrivateKey(options.privateKey)) {\n throw new Error(\"invalid private key\");\n }\n const privateKey = await getDecryptor(options.encryption)(options.privateKey);\n if (options.encryption && (privateKey === \"\" || !isValidPrivateKey(privateKey))) {\n throw new Error(\"invalid password\");\n }\n this.ethersWallet = new Wallet(privateKey);\n return this.ethersWallet.address;\n }\n if (\"mnemonic\" in options) {\n if (!options.encryption && !utils.isValidMnemonic(options.mnemonic)) {\n throw new Error(\"invalid mnemonic\");\n }\n const mnemonic = await getDecryptor(options.encryption)(options.mnemonic);\n if (options.encryption && (mnemonic === \"\" || !utils.isValidMnemonic(mnemonic))) {\n throw new Error(\"invalid password\");\n }\n this.ethersWallet = Wallet.fromMnemonic(mnemonic);\n return this.ethersWallet.address;\n }\n throw new Error(\"invalid import strategy\");\n }\n\n /**\n * initialize the wallet from saved data on storage\n * @param password - password used for encrypting the wallet\n */\n async load(options) {\n if (this.ethersWallet) {\n throw new Error(\"wallet is already initialized\");\n }\n const walletData = await this.getSavedData(options.storage);\n if (!walletData) {\n throw new Error(\"No Saved wallet found in storage\");\n }\n\n // strategy mismatch\n if (walletData.strategy !== options.strategy) {\n throw new Error(`Saved wallet data is not ${options.strategy}, it is ${walletData.strategy}`);\n }\n if (options.strategy === \"encryptedJson\") {\n return this.import({\n encryptedJson: walletData.data,\n password: options.password\n });\n }\n\n // encryption mismatch\n if (walletData.isEncrypted && !options.encryption) {\n throw new Error(\"Saved wallet data is encrypted, but no password is provided\");\n }\n if (!walletData.isEncrypted && options.encryption) {\n throw new Error(\"Saved wallet data is not encrypted, but encryption config is provided\");\n }\n if (options.strategy === \"privateKey\") {\n return this.import({\n privateKey: walletData.data,\n encryption: options.encryption\n });\n }\n if (options.strategy === \"mnemonic\") {\n return this.import({\n mnemonic: walletData.data,\n encryption: options.encryption\n });\n }\n throw new Error(\"invalid load strategy\");\n }\n\n /**\n * Save the wallet data to storage\n */\n async save(options) {\n const wallet = this.ethersWallet;\n if (!wallet) {\n throw new Error(\"Wallet is not initialized\");\n }\n if (options.strategy === \"encryptedJson\") {\n const encryptedData = await wallet.encrypt(options.password, {\n scrypt: {\n N: 1 << 32\n }\n });\n await _classPrivateMethodGet(this, _saveData, _saveData2).call(this, {\n address: wallet.address,\n data: encryptedData,\n strategy: \"encryptedJson\",\n isEncrypted: true\n }, options.storage);\n }\n if (options.strategy === \"privateKey\") {\n const privateKey = await getEncryptor(options.encryption)(wallet.privateKey);\n await _classPrivateMethodGet(this, _saveData, _saveData2).call(this, {\n address: wallet.address,\n data: privateKey,\n strategy: \"privateKey\",\n isEncrypted: !!options.encryption\n }, options.storage);\n }\n if (options.strategy === \"mnemonic\") {\n if (!wallet.mnemonic) {\n throw new Error(\"mnemonic can not be computed if wallet is created from a private key or generated using generate()\");\n }\n const mnemonic = await getEncryptor(options.encryption)(wallet.mnemonic.phrase);\n await _classPrivateMethodGet(this, _saveData, _saveData2).call(this, {\n address: wallet.address,\n data: mnemonic,\n strategy: \"mnemonic\",\n isEncrypted: !!options.encryption\n }, options.storage);\n }\n }\n\n /**\n * @returns true if initialized wallet's data is saved in storage\n */\n async isSaved() {\n try {\n const data = await this.getSavedData();\n const address = await this.getAddress();\n if (data?.address === address) {\n return true;\n }\n return false;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * deletes the saved wallet data from storage\n */\n async deleteSaved() {\n await _classPrivateFieldGet(this, _storage2).removeItem(STORAGE_KEY_WALLET_DATA);\n }\n\n /**\n * encrypts the wallet with given password and returns the encrypted wallet\n * @param password - password for encrypting the wallet data\n */\n async export(options) {\n const wallet = this.ethersWallet;\n if (!wallet) {\n throw new Error(\"Wallet is not initialized\");\n }\n if (options.strategy === \"encryptedJson\") {\n return wallet.encrypt(options.password, {\n scrypt: {\n N: 1 << 32\n }\n });\n }\n if (options.strategy === \"privateKey\") {\n return getEncryptor(options.encryption)(wallet.privateKey);\n }\n if (options.strategy === \"mnemonic\") {\n if (!wallet.mnemonic) {\n throw new Error(\"mnemonic can not be computed if wallet is created from a private key or generated using generate()\");\n }\n return getEncryptor(options.encryption)(wallet.mnemonic.phrase);\n }\n throw new Error(\"Invalid export strategy\");\n }\n\n /**\n * Get the saved wallet data from storage\n */\n async getSavedData(storage) {\n const _storage = storage || _classPrivateFieldGet(this, _storage2);\n try {\n const savedDataStr = await _storage.getItem(STORAGE_KEY_WALLET_DATA);\n if (!savedDataStr) {\n return null;\n }\n const savedData = JSON.parse(savedDataStr);\n if (!savedData) {\n return null;\n }\n return savedData;\n } catch (e) {\n return null;\n }\n }\n async disconnect() {\n await super.disconnect();\n this.ethersWallet = undefined;\n }\n}\nasync function _saveData2(data, storage) {\n const _storage = storage || _classPrivateFieldGet(this, _storage2);\n await _storage.setItem(STORAGE_KEY_WALLET_DATA, JSON.stringify(data));\n}\n_defineProperty(LocalWallet, \"id\", walletIds.localWallet);\n_defineProperty(LocalWallet, \"meta\", {\n name: \"Local Wallet\",\n iconURL: \"ipfs://QmbQzSNGvmNYZzem9jZRuYeLe9K2W4pqbdnVUp7Y6edQ8Y/local-wallet.svg\"\n}); // omit the mnemonic strategy option from LoadOptions\n// used in getDecryptor and getEncryptor below\nasync function noop(msg) {\n return msg;\n}\n\n/**\n * if encryption object is provided\n * - return the encryption.decrypt function if given, else return the default decrypt function\n * if encryption object is not provided\n * - return a noop function\n * @returns\n */\nfunction getDecryptor(encryption) {\n return encryption ? msg =>\n // we're using aesDecryptCompat here because we want to support legacy crypto-js ciphertext for the moment\n (encryption.decrypt || aesDecryptCompat)(msg, encryption.password) : noop;\n}\n\n/**\n * if encryption object is provided\n * - return the encryption.encrypt function if given, else return the default encrypt function\n * if encryption object is not provided\n * - return a noop function\n * @returns\n */\nfunction getEncryptor(encryption) {\n return encryption ? msg => (encryption.encrypt || aesEncrypt)(msg, encryption.password) : noop;\n}\n\n/**\n * @internal\n */\nfunction isValidPrivateKey(value) {\n return !!value.match(/^(0x)?[0-9a-f]{64}$/i);\n}\n\nexport { LocalWallet, isValidPrivateKey };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass MagicLink extends AbstractClientWallet {\n get walletName() {\n return \"Magic Link\";\n }\n constructor(options) {\n super(MagicLink.id, options);\n this.options = options;\n }\n async initializeConnector() {\n // import the connector dynamically\n const {\n MagicAuthConnector\n } = await import('../../../connectors/magic/dist/thirdweb-dev-wallets-evm-connectors-magic.browser.esm.js');\n const magicConnector = new MagicAuthConnector({\n chains: this.chains,\n options: this.options\n });\n this.magicConnector = magicConnector;\n this.connector = new WagmiAdapter(magicConnector);\n return this.connector;\n }\n async getConnector() {\n if (!this.connector) {\n return await this.initializeConnector();\n }\n return this.connector;\n }\n getMagic() {\n if (!this.magicConnector) {\n throw new Error(\"Magic connector is not initialized\");\n }\n return this.magicConnector.getMagicSDK();\n }\n async autoConnect(options) {\n await this.initializeConnector();\n await this.magicConnector?.initializeMagicSDK(options);\n const magic = this.getMagic();\n {\n const url = new URL(window.location.href);\n const isMagicRedirect = url.searchParams.get(\"magic_credential\");\n if (isMagicRedirect) {\n try {\n this.oAuthRedirectResult = await magic.oauth.getRedirectResult(); // required to do this for social login\n } catch {\n // ignore\n }\n }\n }\n const isLoggedIn = await magic.user.isLoggedIn();\n if (isLoggedIn) {\n return super.autoConnect(options);\n }\n throw new Error(\"Magic user is not logged in\");\n }\n async disconnect() {\n this.oAuthRedirectResult = undefined;\n const magic = this.getMagic();\n await magic.user.logout();\n return super.disconnect();\n }\n async connect(options) {\n if (\"email\" in options && this.options.emailLogin === false) {\n throw new Error(\"Email login is disabled\");\n }\n if (\"phoneNumber\" in options && this.options.smsLogin === false) {\n throw new Error(\"SMS login is disabled\");\n }\n return super.connect(options);\n }\n}\n_defineProperty(MagicLink, \"meta\", {\n iconURL: \"ipfs://QmUMBFZGXxBpgDmZzZAHhbcCL5nYvZnVaYLTajsNjLcxMU/1-Icon_Magic_Color.svg\",\n name: \"Magic Link\"\n});\n_defineProperty(MagicLink, \"id\", walletIds.magicLink);\n\nexport { MagicLink };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedMetamaskProvider } from '../../../../dist/getInjectedMetamaskProvider-90084de7.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass MetaMaskWallet extends AbstractClientWallet {\n get walletName() {\n return \"MetaMask\";\n }\n constructor(options) {\n super(MetaMaskWallet.id, options);\n this.isInjected = !!getInjectedMetamaskProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if metamask is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the metamask app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n MetaMaskConnector\n } = await import('../../../connectors/metamask/dist/thirdweb-dev-wallets-evm-connectors-metamask.browser.esm.js');\n const metamaskConnector = new MetaMaskConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.metamaskConnector = metamaskConnector;\n this.connector = new WagmiAdapter(metamaskConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * metamask.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n async switchAccount() {\n if (!this.metamaskConnector) {\n throw new Error(\"Can not switch Account\");\n }\n await this.metamaskConnector.switchAccount();\n }\n}\n_defineProperty(MetaMaskWallet, \"meta\", {\n name: \"MetaMask\",\n iconURL: \"ipfs://QmZZHcw7zcXursywnLDAyY6Hfxzqop5GKgwoq8NB9jjrkN/metamask.svg\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n android: \"https://play.google.com/store/apps/details?id=io.metamask\",\n ios: \"https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202\"\n }\n});\n_defineProperty(MetaMaskWallet, \"id\", walletIds.metamask);\n\nexport { MetaMaskWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { getValidChainRPCs } from '@thirdweb-dev/chains';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\n/**\n * Paper Wallet\n *\n * @deprecated We have deprecated PaperWallet in favor of our {@link EmbeddedWallet} which adds support for more sign in methods.\n */\nclass PaperWallet extends AbstractClientWallet {\n get walletName() {\n return \"Paper Wallet\";\n }\n constructor(options) {\n super(PaperWallet.id, {\n ...options\n });\n try {\n this.chain = {\n ...options.chain,\n rpc: getValidChainRPCs(options.chain, options.clientId)\n };\n } catch {\n this.chain = options.chain;\n }\n if (options.paperClientId && options.paperClientId === \"uninitialized\") {\n this.paperClientId = \"00000000-0000-0000-0000-000000000000\";\n return;\n }\n if (options.advancedOptions && options.advancedOptions?.recoveryShareManagement === \"USER_MANAGED\") {\n // checks to see if we are trying to use USER_MANAGED with thirdweb client ID. If so, we throw an error.\n if (options.paperClientId && !this.isClientIdLegacyPaper(options.paperClientId) || !options.paperClientId && options.clientId && !this.isClientIdLegacyPaper(options.clientId)) {\n throw new Error('RecoveryShareManagement option \"USER_MANAGED\" is not supported with thirdweb client ID');\n }\n }\n if (!options.clientId && !options.paperClientId) {\n throw new Error(\"clientId or paperClientId is required\");\n }\n if (options.paperClientId && !this.isClientIdLegacyPaper(options.paperClientId)) {\n throw new Error(\"paperClientId must be a legacy paper client ID\");\n }\n if (options.clientId && this.isClientIdLegacyPaper(options.clientId)) {\n throw new Error(\"clientId must be a thirdweb client ID\");\n }\n\n // cast is okay because we assert that either clientId or paperClientId is defined above\n this.paperClientId = options.paperClientId ?? options.clientId;\n this.onAuthSuccess = options.onAuthSuccess;\n }\n isClientIdLegacyPaper(clientId) {\n return clientId.indexOf(\"-\") > 0 && clientId.length === 36;\n }\n async getConnector() {\n if (!this.connector) {\n const {\n PaperWalletConnector\n } = await import('../../../connectors/paper/dist/thirdweb-dev-wallets-evm-connectors-paper.browser.esm.js');\n this.connector = new PaperWalletConnector({\n clientId: this.paperClientId,\n chain: this.chain,\n chains: this.chains,\n onAuthSuccess: this.onAuthSuccess,\n advancedOptions: {\n recoveryShareManagement: this.options?.advancedOptions?.recoveryShareManagement\n },\n styles: this.options?.styles\n });\n }\n return this.connector;\n }\n getConnectParams() {\n const connectParams = super.getConnectParams();\n if (!connectParams) {\n return undefined;\n }\n\n // do not return non-serializable params to make auto-connect work\n if (typeof connectParams.googleLogin === \"object\") {\n return {\n ...connectParams,\n googleLogin: true\n };\n }\n return connectParams;\n }\n async getEmail() {\n const connector = await this.getConnector();\n return connector.getEmail();\n }\n async getPaperSDK() {\n const connector = await this.getConnector();\n return connector.getPaperSDK();\n }\n}\n_defineProperty(PaperWallet, \"id\", walletIds.paper);\n_defineProperty(PaperWallet, \"meta\", {\n name: \"Paper Wallet\",\n iconURL: \"ipfs://QmNrLXtPoFrh4yjZbXui39zUMozS1oetpgU8dvZhFAxfRa/paper-logo-icon.svg\"\n});\n\nexport { PaperWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { g as getInjectedPhantomProvider } from '../../../../dist/getInjectedPhantomProvider-95eb3d4f.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass PhantomWallet extends AbstractClientWallet {\n get walletName() {\n return \"Phantom\";\n }\n constructor(options) {\n super(PhantomWallet.id, options);\n this.isInjected = !!getInjectedPhantomProvider();\n }\n async getConnector() {\n if (!this.connector) {\n const {\n PhantomConnector\n } = await import('../../../connectors/phantom/dist/thirdweb-dev-wallets-evm-connectors-phantom.browser.esm.js');\n const phantomConnector = new PhantomConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.phantomConnector = phantomConnector;\n this.connector = new WagmiAdapter(phantomConnector);\n }\n return this.connector;\n }\n}\n_defineProperty(PhantomWallet, \"meta\", {\n name: \"Phantom\",\n iconURL: \"ipfs://bafybeibkpca5nwxpsjrtuxmz2ckb5lyc2sl2abg5f7dnvxku637vvffjti\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa\"\n // not specifiying theme because they can't be used to connect\n // android: \"https://play.google.com/store/apps/details?id=app.phantom\",\n // ios: \"https://apps.apple.com/us/app/phantom-crypto-wallet/id1598432977\",\n }\n});\n_defineProperty(PhantomWallet, \"id\", walletIds.phantom);\n\nexport { PhantomWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { g as getInjectedRainbowProvider } from '../../../../dist/getInjectedRainbowProvider-ecc48a30.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\nimport '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\n\nclass RainbowWallet extends AbstractClientWallet {\n get walletName() {\n return \"Rainbow Wallet\";\n }\n constructor(options) {\n super(RainbowWallet.id, options);\n this.isInjected = !!getInjectedRainbowProvider();\n }\n async getConnector() {\n if (!this.connector) {\n // if rainbow is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the rainbow app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n RainbowConnector\n } = await import('../../../connectors/rainbow/dist/thirdweb-dev-wallets-evm-connectors-rainbow.browser.esm.js');\n const rainbowConnector = new RainbowConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.rainbowConnector = rainbowConnector;\n this.connector = new WagmiAdapter(rainbowConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * rainbow.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(RainbowWallet, \"meta\", {\n name: \"Rainbow Wallet\",\n iconURL: \"ipfs://QmSZn47p4DVVBfzvg9BAX2EqwnPxkT1YAE7rUnrtd9CybQ/rainbow-logo.png\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/rainbow/opfgelmcmbiajamepnmloijbpoleiama\",\n android: \"https://rnbwapp.com/e/Va41HWS6Oxb\",\n ios: \"https://rnbwapp.com/e/OeMdmkJ6Oxb\"\n }\n});\n_defineProperty(RainbowWallet, \"id\", walletIds.rainbow);\n\nexport { RainbowWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nexport { S as SafeSupportedChainsSet } from '../../../../dist/constants-e71c81af.browser.esm.js';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\n// re-export the connection args for convenience\n\nclass SafeWallet extends AbstractClientWallet {\n get walletName() {\n return \"Safe Wallet\";\n }\n constructor(options) {\n super(SafeWallet.id, {\n ...options\n });\n }\n async getConnector() {\n if (!this.connector) {\n const {\n SafeConnector\n } = await import('../../../connectors/safe/dist/thirdweb-dev-wallets-evm-connectors-safe.browser.esm.js');\n this.connector = new SafeConnector();\n }\n return this.connector;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async updateChains(chains) {\n // no op\n }\n getPersonalWallet() {\n return this.connector?.personalWallet;\n }\n autoConnect(params) {\n return this.connect(params);\n }\n}\n_defineProperty(SafeWallet, \"meta\", {\n name: \"Safe\",\n iconURL: \"ipfs://QmbbyxDDmmLQh8DzzeUR6X6B75bESsNUFmbdvS3ZsQ2pN1/SafeToken.svg\"\n});\n_defineProperty(SafeWallet, \"id\", walletIds.safe);\n\nexport { SafeWallet };\n","import { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet } from '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { a as AbstractClientWallet, c as createAsyncLocalStorage } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { updateChainRPCs, defaultChains, Ethereum } from '@thirdweb-dev/chains';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport 'ethers';\nimport 'eventemitter3';\nimport '@thirdweb-dev/sdk';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nvar _storage = /*#__PURE__*/new WeakMap();\nclass SignerWallet extends AbstractClientWallet {\n constructor(options) {\n super(\"signerWallet\", options);\n _classPrivateFieldInitSpec(this, _storage, {\n writable: true,\n value: void 0\n });\n if (options.clientId && options.chain) {\n options.chain = updateChainRPCs(options.chain, options.clientId);\n }\n this.options = options;\n this.signer = options.signer;\n _classPrivateFieldSet(this, _storage, options?.storage || createAsyncLocalStorage(walletIds.localWallet));\n }\n async getConnector() {\n if (!this.connector) {\n const {\n SignerConnector\n } = await import('../../../connectors/signer/dist/thirdweb-dev-wallets-evm-connectors-signer.browser.esm.js');\n if (!this.signer) {\n this.signer = this.options.signer;\n }\n const defaults = (this.options.chain ? [...defaultChains, this.options.chain] : defaultChains).map(c => updateChainRPCs(c, this.options.clientId));\n this.connector = new SignerConnector({\n chain: this.options.chain || updateChainRPCs(Ethereum, this.options.clientId),\n signer: this.signer,\n chains: this.chains || defaults,\n clientId: this.options.clientId,\n secretKey: this.options.secretKey\n });\n }\n return this.connector;\n }\n}\n\nexport { SignerWallet };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { checkContractWalletSignature } from '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { getValidChainRPCs } from '@thirdweb-dev/chains';\nimport { utils } from 'ethers';\nimport { isContractDeployed, ThirdwebSDK, signTypedDataInternal } from '@thirdweb-dev/sdk';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport 'eventemitter3';\n\nconst sdkCache = new Map();\nfunction getSDK(chain) {\n const cached = sdkCache.get(chain);\n if (cached) {\n return cached;\n }\n const sdk = new ThirdwebSDK(chain);\n sdkCache.set(chain, sdk);\n return sdk;\n}\n\n/**\n * Get all the signers added to the given smart wallet (excluding owner)\n * @param chain - The chain to use\n * @param factoryAddress - The factory address\n * @param smartWalletAddress - The smart wallet address\n * @returns The list of signers\n */\nasync function getAllSigners(chain, factoryAddress, smartWalletAddress) {\n const readOnlySDK = getSDK(chain);\n const factoryContract = await readOnlySDK.getContract(factoryAddress);\n const signers = await factoryContract.call(\"getSignersOfAccount\", [smartWalletAddress]);\n return signers;\n}\n\n/**\n * Get all the smart wallets associated with a personal wallet address\n * @param chain - The chain to use\n * @param factoryAddress - The factory address\n * @param personalWalletAddress - The personal wallet address\n * @returns The list of smart wallets\n */\nasync function getAllSmartWallets(chain, factoryAddress, personalWalletAddress) {\n const readOnlySDK = getSDK(chain);\n const factoryContract = await readOnlySDK.getContract(factoryAddress);\n const ownedAccount = await getSmartWalletAddress(chain, factoryAddress, personalWalletAddress);\n const accessibleAccounts = await factoryContract.call(\"getAccountsOfSigner\", [personalWalletAddress]);\n return {\n owned: ownedAccount,\n hasSignerRole: accessibleAccounts\n };\n}\n\n/**\n * Check if a smart wallet is deployed for a given personal wallet address\n * @param chain - The chain to use\n * @param factoryAddress - The factory address\n * @param personalWalletAddress - The personal wallet address\n * @returns True if the smart wallet is deployed\n */\nasync function isSmartWalletDeployed(chain, factoryAddress, personalWalletAddress) {\n let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"0x\";\n const readOnlySDK = getSDK(chain);\n const factoryContract = await readOnlySDK.getContract(factoryAddress);\n const accountAddress = await factoryContract.call(\"getAddress\", [personalWalletAddress, data]);\n const isDeployed = await isContractDeployed(accountAddress, readOnlySDK.getProvider());\n return isDeployed;\n}\n\n/**\n * Get the associated smart wallet address for a given personal wallet address\n * @param chain - The chain to use\n * @param factoryAddress - The factory address\n * @param personalWalletAddress - The personal wallet address\n * @returns The smart wallet address\n */\nasync function getSmartWalletAddress(chain, factoryAddress, personalWalletAddress) {\n let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"0x\";\n const readOnlySDK = getSDK(chain);\n const factoryContract = await readOnlySDK.getContract(factoryAddress);\n const accountAddress = await factoryContract.call(\"getAddress\", [personalWalletAddress, data]);\n return accountAddress;\n}\n\nclass SmartWallet extends AbstractClientWallet {\n get walletName() {\n return \"Smart Wallet\";\n }\n constructor(options) {\n if (options.clientId && typeof options.chain === \"object\") {\n try {\n options.chain = {\n ...options.chain,\n rpc: getValidChainRPCs(options.chain, options.clientId)\n };\n } catch {}\n }\n super(SmartWallet.id, {\n ...options\n });\n }\n async getConnector() {\n if (!this.connector) {\n const {\n SmartWalletConnector\n } = await import('../../../connectors/smart-wallet/dist/thirdweb-dev-wallets-evm-connectors-smart-wallet.browser.esm.js');\n this.connector = new SmartWalletConnector(this.options);\n }\n return this.connector;\n }\n getPersonalWallet() {\n return this.connector?.personalWallet;\n }\n\n /**\n * @returns the signature of the message\n */\n async signMessage(message) {\n // Deploy smart wallet if needed\n const connector = await this.getConnector();\n await connector.deployIfNeeded();\n const erc4337Signer = await this.getSigner();\n const chainId = await erc4337Signer.getChainId();\n const address = await connector.getAddress();\n\n /**\n * We first try to sign the EIP-712 typed data i.e. the message mixed with the smart wallet's domain separator.\n * If this fails, we fallback to the legacy signing method.\n */\n try {\n const result = await signTypedDataInternal(erc4337Signer, {\n name: \"Account\",\n version: \"1\",\n chainId,\n verifyingContract: address\n }, {\n AccountMessage: [{\n name: \"message\",\n type: \"bytes\"\n }]\n }, {\n message: utils.defaultAbiCoder.encode([\"bytes32\"], [utils.hashMessage(message)])\n });\n const isValid = await checkContractWalletSignature(message, result.signature, address, chainId);\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n return result.signature;\n } catch {\n return await this.signMessageLegacy(erc4337Signer, message);\n }\n }\n\n /**\n * @returns the signature of the message (for legacy EIP-1271 signature verification)\n */\n async signMessageLegacy(signer, message) {\n return await signer.signMessage(message);\n }\n\n /**\n * Check whether the connected signer can execute a given transaction using the smart wallet.\n * @param transaction - the transaction to execute using the smart wallet.\n * @returns whether the connected signer can execute the transaction using the smart wallet.\n */\n async hasPermissionToExecute(transaction) {\n const connector = await this.getConnector();\n return connector.hasPermissionToExecute(transaction);\n }\n\n /**\n * Send a single transaction without waiting for confirmations\n * @param transaction - the transaction to send\n * @returns the transaction result\n */\n async send(transaction) {\n const connector = await this.getConnector();\n return connector.send(transaction);\n }\n\n /**\n * Execute a single transaction and wait for confirmations\n * @param transaction - the transaction to execute\n * @returns the transaction receipt\n */\n async execute(transaction) {\n const connector = await this.getConnector();\n return connector.execute(transaction);\n }\n\n /**\n * Send a multiple transaction in a batch without waiting for confirmations\n * @param transactions - the transactions to send\n * @returns the transaction result\n */\n async sendBatch(transactions) {\n const connector = await this.getConnector();\n return connector.sendBatch(transactions);\n }\n\n /**\n * Execute multiple transactions in a single batch and wait for confirmations\n * @param transactions - the transactions to execute\n * @returns the transaction receipt\n */\n async executeBatch(transactions) {\n const connector = await this.getConnector();\n return connector.executeBatch(transactions);\n }\n\n /**\n * Send a single raw transaction without waiting for confirmations\n * @param transaction - the transaction to send\n * @returns the transaction result\n */\n async sendRaw(transaction) {\n const connector = await this.getConnector();\n return connector.sendRaw(transaction);\n }\n\n /**\n * Execute a single raw transaction and wait for confirmations\n * @param transaction - the transaction to execute\n * @returns the transaction receipt\n */\n async executeRaw(transaction) {\n const connector = await this.getConnector();\n return connector.executeRaw(transaction);\n }\n\n /**\n * Estimate the gas cost of a single transaction\n * @param transaction - the transaction to estimate\n * @returns\n */\n async estimate(transaction) {\n const connector = await this.getConnector();\n return connector.estimate(transaction);\n }\n\n /**\n * Estimate the gas cost of a batch of transactions\n * @param transactions - the transactions to estimate\n * @returns\n */\n async estimateBatch(transactions) {\n const connector = await this.getConnector();\n return connector.estimateBatch(transactions);\n }\n\n /**\n * Estimate the gas cost of a single raw transaction\n * @param transactions - the transactions to estimate\n * @returns\n */\n async estimateRaw(transactions) {\n const connector = await this.getConnector();\n return connector.estimateRaw(transactions);\n }\n\n /**\n * Estimate the gas cost of a batch of raw transactions\n * @param transactions - the transactions to estimate\n * @returns\n */\n async estimateBatchRaw(transactions) {\n const connector = await this.getConnector();\n return connector.estimateBatchRaw(transactions);\n }\n\n /**\n * Send multiple raw transaction in a batch without waiting for confirmations\n * @param transactions - the transactions to send\n * @returns the transaction result\n */\n async sendBatchRaw(transactions) {\n const connector = await this.getConnector();\n return connector.sendBatchRaw(transactions);\n }\n\n /**\n * Execute multiple raw transactions in a single batch and wait for confirmations\n * @param transactions - the transactions to execute\n * @returns the transaction receipt\n */\n async executeBatchRaw(transactions) {\n const connector = await this.getConnector();\n return connector.executeBatchRaw(transactions);\n }\n\n /**\n * Manually deploy the smart wallet contract. If already deployed this will throw an error.\n * Note that this is not necessary as the smart wallet will be deployed automatically on the first transaction the user makes.\n * @returns the transaction receipt\n */\n async deploy() {\n const connector = await this.getConnector();\n return connector.deploy();\n }\n\n /**\n * Manually deploy the smart wallet contract. If already deployed this will do nothing.\n * Note that this is not necessary as the smart wallet will be deployed automatically on the first transaction the user makes.\n * @returns the transaction receipt\n */\n async deployIfNeeded() {\n const connector = await this.getConnector();\n return connector.deployIfNeeded();\n }\n\n /**\n * Check if the smart wallet contract is deployed\n * @returns true if the smart wallet contract is deployed\n */\n async isDeployed() {\n const connector = await this.getConnector();\n return connector.isDeployed();\n }\n\n /**\n * Create and add a session key to the smart wallet.\n * @param keyAddress - the address of the session key to add.\n * @param permissions - the permissions to grant to the session key.\n */\n async createSessionKey(keyAddress, permissions) {\n const connector = await this.getConnector();\n return connector.grantPermissions(keyAddress, permissions);\n }\n\n /**\n * Remove a session key from the smart wallet.\n * @param keyAddress - the address of the session key to remove.\n */\n async revokeSessionKey(keyAddress) {\n const connector = await this.getConnector();\n return connector.revokePermissions(keyAddress);\n }\n\n /**\n * Add another admin to the smart wallet.\n * @param adminAddress - the address of the admin to add.\n */\n async addAdmin(adminAddress) {\n const connector = await this.getConnector();\n return connector.addAdmin(adminAddress);\n }\n\n /**\n * Remove an admin from the smart wallet.\n * @param adminAddress - the address of the admin to remove.\n */\n async removeAdmin(adminAddress) {\n const connector = await this.getConnector();\n return connector.removeAdmin(adminAddress);\n }\n\n /**\n * Get all the admins and session keys active on the smart wallet.\n */\n async getAllActiveSigners() {\n const connector = await this.getConnector();\n return connector.getAllActiveSigners();\n }\n\n /**\n * Get the underlying account contract of the smart wallet.\n * @returns the account contract of the smart wallet.\n */\n async getAccountContract() {\n const connector = await this.getConnector();\n return connector.getAccountContract();\n }\n\n /**\n * Get the underlying account factory contract of the smart wallet.\n * @returns the account factory contract.\n */\n async getFactoryContract() {\n const connector = await this.getConnector();\n return connector.getFactoryContract();\n }\n autoConnect(params) {\n return this.connect(params);\n }\n}\n_defineProperty(SmartWallet, \"meta\", {\n name: \"Smart Wallet\",\n iconURL: \"ipfs://QmeAJVqn17aDNQhjEU3kcWVZCFBrfta8LzaDGkS8Egdiyk/smart-wallet.svg\"\n});\n_defineProperty(SmartWallet, \"id\", walletIds.smartWallet);\n\nexport { SmartWallet, getAllSigners, getAllSmartWallets, getSmartWalletAddress, isSmartWalletDeployed };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as assertWindowEthereum } from '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass TrustWallet extends AbstractClientWallet {\n get walletName() {\n return \"Trust Wallet\";\n }\n constructor(options) {\n super(TrustWallet.id, options);\n if (assertWindowEthereum(globalThis.window)) {\n this.isInjected = !!globalThis.window.ethereum?.isTrust;\n } else {\n this.isInjected = false;\n }\n }\n async getConnector() {\n if (!this.connector) {\n // if trust is injected, use the injected connector\n // otherwise, use the wallet connect connector for using the trust app on mobile via QR code scan\n\n if (this.isInjected) {\n // import the connector dynamically\n const {\n TrustConnector\n } = await import('../../../connectors/trust/dist/thirdweb-dev-wallets-evm-connectors-trust.browser.esm.js');\n const trustConnector = new TrustConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.trustConnector = trustConnector;\n this.connector = new WagmiAdapter(trustConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n\n /**\n * connect to wallet with QR code\n *\n * @example\n * ```typescript\n * trust.connectWithQrCode({\n * chainId: 1,\n * onQrCodeUri(qrCodeUri) {\n * // render the QR code with `qrCodeUri`\n * },\n * onConnected(accountAddress) {\n * // update UI to show connected state\n * },\n * })\n * ```\n */\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(TrustWallet, \"meta\", {\n name: \"Trust Wallet\",\n iconURL: \"ipfs://QmNigQbXk7wKZwDcgN38Znj1ZZQ3JEG3DD6fUKLBU8SUTP/trust%20wallet.svg\",\n urls: {\n chrome: \"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph\",\n android: \"https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp\",\n ios: \"https://apps.apple.com/us/app/trust-crypto-bitcoin-wallet/id1288339409\"\n }\n});\n_defineProperty(TrustWallet, \"id\", walletIds.trust);\n\nexport { TrustWallet };\n","import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport { w as walletIds } from '../../../../dist/walletIds-afeb5af2.browser.esm.js';\nimport 'eventemitter3';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nvar _walletConnectConnector = /*#__PURE__*/new WeakMap();\nvar _provider = /*#__PURE__*/new WeakMap();\nvar _maybeThrowError = /*#__PURE__*/new WeakMap();\nvar _onConnect = /*#__PURE__*/new WeakMap();\nvar _onDisconnect = /*#__PURE__*/new WeakMap();\nvar _onChange = /*#__PURE__*/new WeakMap();\nvar _onMessage = /*#__PURE__*/new WeakMap();\nvar _onSessionRequestSent = /*#__PURE__*/new WeakMap();\nvar _setupListeners = /*#__PURE__*/new WeakSet();\nvar _removeListeners = /*#__PURE__*/new WeakSet();\nclass WalletConnect extends AbstractClientWallet {\n get walletName() {\n return \"WalletConnect\";\n }\n constructor(options) {\n super(options?.walletId || WalletConnect.id, options);\n _classPrivateMethodInitSpec(this, _removeListeners);\n _classPrivateMethodInitSpec(this, _setupListeners);\n _classPrivateFieldInitSpec(this, _walletConnectConnector, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _provider, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _maybeThrowError, {\n writable: true,\n value: error => {\n if (error) {\n throw error;\n }\n }\n });\n _classPrivateFieldInitSpec(this, _onConnect, {\n writable: true,\n value: data => {\n _classPrivateFieldSet(this, _provider, data.provider);\n if (!_classPrivateFieldGet(this, _provider)) {\n throw new Error(\"WalletConnect provider not found after connecting.\");\n }\n }\n });\n _classPrivateFieldInitSpec(this, _onDisconnect, {\n writable: true,\n value: () => {\n _classPrivateMethodGet(this, _removeListeners, _removeListeners2).call(this);\n }\n });\n _classPrivateFieldInitSpec(this, _onChange, {\n writable: true,\n value: async payload => {\n if (payload.chain) ; else if (payload.account) ;\n }\n });\n _classPrivateFieldInitSpec(this, _onMessage, {\n writable: true,\n value: payload => {\n switch (payload.type) {\n case \"display_uri\":\n this.emit(\"display_uri\", payload.data);\n break;\n }\n }\n });\n _classPrivateFieldInitSpec(this, _onSessionRequestSent, {\n writable: true,\n value: () => {\n this.emit(\"wc_session_request_sent\");\n }\n });\n this.projectId = options?.projectId || TW_WC_PROJECT_ID;\n this.qrcode = options?.qrcode === false ? false : true;\n }\n async getConnector() {\n if (!this.connector) {\n // import the connector dynamically\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n _classPrivateFieldSet(this, _walletConnectConnector, new WalletConnectConnector({\n chains: this.chains,\n options: {\n qrcode: this.qrcode,\n projectId: this.projectId,\n dappMetadata: this.dappMetadata,\n storage: this.walletStorage,\n qrModalOptions: this.options?.qrModalOptions\n }\n }));\n this.connector = new WagmiAdapter(_classPrivateFieldGet(this, _walletConnectConnector));\n _classPrivateFieldSet(this, _provider, await _classPrivateFieldGet(this, _walletConnectConnector).getProvider());\n _classPrivateMethodGet(this, _setupListeners, _setupListeners2).call(this);\n }\n return this.connector;\n }\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = _classPrivateFieldGet(this, _walletConnectConnector);\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n wcConnector.showWalletConnectModal = false;\n const wcProvider = await wcConnector.getProvider();\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n async connectWithModal(options) {\n await this.getConnector();\n const wcConnector = _classPrivateFieldGet(this, _walletConnectConnector);\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n wcConnector.showWalletConnectModal = true;\n await wcConnector.initProvider();\n await this.connect({\n chainId: options?.chainId\n });\n }\n}\nfunction _setupListeners2() {\n if (!_classPrivateFieldGet(this, _walletConnectConnector)) {\n return;\n }\n _classPrivateMethodGet(this, _removeListeners, _removeListeners2).call(this);\n _classPrivateFieldGet(this, _walletConnectConnector).on(\"connect\", _classPrivateFieldGet(this, _onConnect));\n _classPrivateFieldGet(this, _walletConnectConnector).on(\"disconnect\", _classPrivateFieldGet(this, _onDisconnect));\n _classPrivateFieldGet(this, _walletConnectConnector).on(\"change\", _classPrivateFieldGet(this, _onChange));\n _classPrivateFieldGet(this, _walletConnectConnector).on(\"message\", _classPrivateFieldGet(this, _onMessage));\n _classPrivateFieldGet(this, _provider)?.signer.client.on(\"session_request_sent\", _classPrivateFieldGet(this, _onSessionRequestSent));\n}\nfunction _removeListeners2() {\n if (!_classPrivateFieldGet(this, _walletConnectConnector)) {\n return;\n }\n _classPrivateFieldGet(this, _walletConnectConnector).removeListener(\"connect\", _classPrivateFieldGet(this, _onConnect));\n _classPrivateFieldGet(this, _walletConnectConnector).removeListener(\"disconnect\", _classPrivateFieldGet(this, _onDisconnect));\n _classPrivateFieldGet(this, _walletConnectConnector).removeListener(\"change\", _classPrivateFieldGet(this, _onChange));\n _classPrivateFieldGet(this, _walletConnectConnector).removeListener(\"message\", _classPrivateFieldGet(this, _onMessage));\n _classPrivateFieldGet(this, _provider)?.signer.client.removeListener(\"session_request_sent\", _classPrivateFieldGet(this, _onSessionRequestSent));\n}\n_defineProperty(WalletConnect, \"id\", walletIds.walletConnect);\n_defineProperty(WalletConnect, \"meta\", {\n name: \"WalletConnect\",\n iconURL: \"ipfs://QmX58KPRaTC9JYZ7KriuBzeoEaV2P9eZcA3qbFnTHZazKw/wallet-connect.svg\"\n});\n\nexport { WalletConnect };\n","import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';\nimport { W as WagmiAdapter } from '../../../../dist/connector-05689d68.browser.esm.js';\nimport { a as AbstractClientWallet } from '../../../../dist/base-80191bd0.browser.esm.js';\nimport { a as assertWindowEthereum } from '../../../../dist/assertWindowEthereum-f5a6356c.browser.esm.js';\nimport { T as TW_WC_PROJECT_ID } from '../../../../dist/wc-fbb7ab15.browser.esm.js';\nimport 'eventemitter3';\nimport '../../../../dist/classPrivateMethodGet-ea199cc3.browser.esm.js';\nimport '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';\nimport '@thirdweb-dev/chains';\nimport '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.browser.esm.js';\nimport 'ethers';\nimport '@thirdweb-dev/sdk';\n\nclass ZerionWallet extends AbstractClientWallet {\n get walletName() {\n return \"Zerion Wallet\";\n }\n constructor(options) {\n super(ZerionWallet.id, options);\n if (assertWindowEthereum(globalThis.window)) {\n this.isInjected = !!globalThis.window.ethereum?.isZerion;\n } else {\n this.isInjected = false;\n }\n }\n async getConnector() {\n if (!this.connector) {\n if (this.isInjected) {\n // import the connector dynamically\n const {\n ZerionConnector\n } = await import('../../../connectors/zerion/dist/thirdweb-dev-wallets-evm-connectors-zerion.browser.esm.js');\n const zerionConnector = new ZerionConnector({\n chains: this.chains,\n connectorStorage: this.walletStorage,\n options: {\n shimDisconnect: true\n }\n });\n this.zerionConnector = zerionConnector;\n this.connector = new WagmiAdapter(zerionConnector);\n } else {\n const {\n WalletConnectConnector\n } = await import('../../../connectors/wallet-connect/dist/thirdweb-dev-wallets-evm-connectors-wallet-connect.browser.esm.js');\n const walletConnectConnector = new WalletConnectConnector({\n chains: this.chains,\n options: {\n projectId: this.options?.projectId || TW_WC_PROJECT_ID,\n // TODO,\n storage: this.walletStorage,\n qrcode: this.options?.qrcode,\n dappMetadata: this.dappMetadata,\n qrModalOptions: this.options?.qrModalOptions\n }\n });\n walletConnectConnector.getProvider().then(provider => {\n provider.signer.client.on(\"session_request_sent\", () => {\n this.emit(\"wc_session_request_sent\");\n });\n });\n\n // need to save this for getting the QR code URI\n this.walletConnectConnector = walletConnectConnector;\n this.connector = new WagmiAdapter(walletConnectConnector);\n }\n }\n return this.connector;\n }\n async connectWithQrCode(options) {\n await this.getConnector();\n const wcConnector = this.walletConnectConnector;\n if (!wcConnector) {\n throw new Error(\"WalletConnect connector not found\");\n }\n const wcProvider = await wcConnector.getProvider();\n\n // set a listener for display_uri event\n wcProvider.on(\"display_uri\", uri => {\n options.onQrCodeUri(uri);\n });\n\n // trigger connect flow\n this.connect({\n chainId: options.chainId\n }).then(options.onConnected);\n }\n}\n_defineProperty(ZerionWallet, \"id\", \"zerion\");\n_defineProperty(ZerionWallet, \"meta\", {\n name: \"Zerion Wallet\",\n iconURL: \"ipfs://Qmb1LhNtMUkzbgk1V8ZiUSRXjMJGRkS5HH3R71KyRgjdBG/zerion.png\",\n urls: {\n chrome: \"https://zerion.io/extension\",\n android: \"https://link.zerion.io/901o6IN0jqb\",\n ios: \"https://link.zerion.io/a11o6IN0jqb\"\n }\n});\n\nexport { ZerionWallet };\n","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.at(-1) === '\"' && !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","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 === void 0) {\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.8581f561.mjs';\nexport { p as prefixStorage } from './shared/unstorage.8581f561.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 options: {},\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 Array.from(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 await 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 const keys = rawKeys.map((key) => mount.mountpoint + normalizeKey(key)).filter((key) => !maskedMounts.some((p) => key.startsWith(p)));\n allKeys.push(...keys);\n maskedMounts = [\n mount.mountpoint,\n ...maskedMounts.filter((p) => !p.startsWith(mount.mountpoint))\n ];\n }\n return base ? allKeys.filter((key) => key.startsWith(base) && !key.endsWith(\"$\")) : allKeys.filter((key) => !key.endsWith(\"$\"));\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 };\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 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,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'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,"\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\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) { throw new TypeError(x + ' is ambiguous') }\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) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\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)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\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 // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\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) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\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) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\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) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\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","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\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 // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\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 b = 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 b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\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 function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\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 // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\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 off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\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.modrn(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, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\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 var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\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] >>> wbit) & 0x01;\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 // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(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 var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 isNegNum ? this.ineg() : 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.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(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.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\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 this._strip();\n return isNegNum ? this.ineg() : this;\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 a BN v4 instance\n r.strip();\n } else {\n // r is a 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\n move(a, a.umod(this.m)._forceRed(this));\n return a;\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","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \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 ''\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","'use strict'\n\nconst bases = require('./util/bases')\n\n/**\n * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings\n */\n\n/**\n * Turns a `Uint8Array` into a string.\n *\n * Supports `utf8`, `utf-8` and any encoding supported by the multibase module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n *\n * @param {Uint8Array} array - The array to turn into a string\n * @param {SupportedEncodings} [encoding=utf8] - The encoding to use\n * @returns {string}\n */\nfunction toString (array, encoding = 'utf8') {\n const base = bases[encoding]\n\n if (!base) {\n throw new Error(`Unsupported encoding \"${encoding}\"`)\n }\n\n // strip multibase prefix\n return base.encoder.encode(array).substring(1)\n}\n\nmodule.exports = toString\n"," 'use strict'\n\nconst { bases } = require('multiformats/basics')\n\n/**\n * @typedef {import('multiformats/bases/interface').MultibaseCodec} MultibaseCodec\n */\n\n/**\n * @param {string} name\n * @param {string} prefix\n * @param {(buf: Uint8Array) => string} encode\n * @param {(str: string) => Uint8Array} decode\n * @returns {MultibaseCodec}\n */\nfunction createCodec (name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: {\n decode\n }\n }\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})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n let string = 'a'\n\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 = new Uint8Array(str.length)\n\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i)\n }\n\n return buf\n})\n\n/**\n * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings\n */\n\n/**\n * @type {Record}\n */\nconst BASES = {\n 'utf8': string,\n 'utf-8': string,\n 'hex': bases.base16,\n 'latin1': ascii,\n 'ascii': ascii,\n 'binary': ascii,\n\n ...bases\n}\n\nmodule.exports = BASES\n","'use strict'\n\nconst CID = require('cids')\n// @ts-ignore no types\nconst explain = require('explain-error')\n\n/**\n * @param {CID | string | Uint8Array} cid\n */\nmodule.exports = function base32 (cid) {\n try {\n cid = new CID(cid)\n } catch (err) {\n throw explain(err, `invalid cid: ${cid}`)\n }\n\n if (cid.version !== 1) {\n cid = cid.toV1()\n }\n\n return cid.toBaseEncodedString('base32')\n}\n","'use strict'\n\nconst multibase = require('multibase')\n\nmodule.exports = function bases () {\n const output = []\n\n for (const base of Object.values(multibase.names)) {\n output.push({ name: base.name, code: base.code })\n }\n\n return output\n}\n","'use strict'\n\nconst CID = require('cids')\n\nmodule.exports = function codecs () {\n const output = []\n\n for (const [key, value] of Object.entries(CID.codecs)) {\n output.push({ name: key, code: value })\n }\n\n return output\n}\n","'use strict'\n\nconst CID = require('cids')\nconst bases = require('./bases')\nconst codecs = require('./codecs')\n// @ts-ignore no types\nconst explain = require('explain-error')\nconst multibase = require('multibase')\nconst multihash = require('multihashes')\nconst uint8ArrayToString = require('uint8arrays/to-string')\n\n/**\n * @typedef {import('multibase').BaseName} BaseName\n * @typedef {import('multibase').BaseNameOrCode} BaseNameOrCode\n */\n\n/**\n * @param {CID | string | Uint8Array} cid\n * @param {import('./types').FormatOptions} options\n */\nmodule.exports = function format (cid, options) {\n options = options || {}\n\n let formatStr = options.format || '%s'\n\n if (formatStr === 'prefix') {\n formatStr = '%P'\n }\n\n if (!isString(formatStr) || formatStr.indexOf('%') === -1) {\n throw new Error(`invalid format string: ${formatStr}`)\n }\n\n const originalCid = cid\n\n try {\n cid = new CID(cid)\n } catch (err) {\n throw explain(err, `invalid cid: ${cid}`)\n }\n\n if (options.cidVersion != null && cid.version !== options.cidVersion) {\n if (options.cidVersion === 0) {\n cid = cid.toV0()\n } else if (options.cidVersion === 1) {\n cid = cid.toV1()\n } else {\n throw new Error(`invalid cid version: ${options.cidVersion}`)\n }\n }\n\n /**\n * @type {BaseName}\n */\n let base = 'base58btc'\n\n if (options.base) {\n // Validate passed base name/code\n base = findBase(options.base).name\n } else if (isString(originalCid)) {\n // Use base of input CID if string\n base = multibase.isEncoded(originalCid) || base\n }\n\n return formatStr.replace(/%([a-zA-Z%])/g, replacer(cid, base))\n}\n\n/**\n * @param {*} obj\n * @returns {obj is String}\n */\nfunction isString (obj) {\n return Object.prototype.toString.call(obj) === '[object String]'\n}\n\n/**\n * @param {CID} cid\n * @param {BaseName} base\n * @returns {(match: any, specifier: string) => string}\n */\nfunction replacer (cid, base) {\n /**\n * @param {*} match\n * @param {string} specifier\n */\n const replace = (match, specifier) => {\n switch (specifier) {\n case '%':\n return '%'\n case 'b': // base name\n return base\n case 'B': // base code\n return findBase(base).code\n case 'v': // version string\n return `cidv${cid.version}`\n case 'V': // version num\n return cid.version.toString()\n case 'c': // codec name\n return cid.codec\n case 'C': // codec code\n return findCodec(cid).toString()\n case 'h': // hash fun name\n return multihash.decode(cid.multihash).name\n case 'H': // hash fun code\n return multihash.decode(cid.multihash).code.toString()\n case 'L': // hash length\n return multihash.decode(cid.multihash).length.toString()\n case 'm': // multihash encoded in base %b\n return uint8ArrayToString(multibase.encode(base, cid.multihash))\n case 'M': // multihash encoded in base %b without base prefix\n return uint8ArrayToString(cid.multihash, base)\n case 'd': // hash digest encoded in base %b\n return uint8ArrayToString(multibase.encode(base, multihash.decode(cid.multihash).digest))\n case 'D': // hash digest encoded in base %b without base prefix\n return uint8ArrayToString(multihash.decode(cid.multihash).digest, base)\n case 's': // cid string encoded in base %b\n return cid.toString(base)\n case 'S': // cid string without base prefix\n return cid.version === 1\n ? cid.toString(base).slice(1)\n : uint8ArrayToString(cid.bytes, base)\n case 'P': // prefix\n return prefix(cid)\n\n default:\n throw new Error(`unrecognized specifier in format string: ${specifier}`)\n }\n }\n\n return replace\n}\n\n/**\n * @param {BaseNameOrCode} nameOrCode\n */\nfunction findBase (nameOrCode) {\n const baseNameCode = bases().find(b => (b.code === nameOrCode) || b.name === nameOrCode)\n\n if (!baseNameCode) {\n throw new Error(`invalid multibase: ${nameOrCode}`)\n }\n\n return baseNameCode\n}\n\n/**\n * @param {CID} cid\n */\nfunction findCodec (cid) {\n const codec = codecs().find(c => c.name === cid.codec)\n\n if (!codec) {\n throw new Error(`invalid codec: ${cid.codec}`)\n }\n\n return codec.code\n}\n\n/**\n * @param {CID} cid\n */\nfunction prefix (cid) {\n const { name, length } = multihash.decode(cid.multihash)\n return `cidv${cid.version}-${cid.codec}-${name}-${length}`\n}\n","'use strict'\n\nconst multihash = require('multihashes')\n\n// TODO: list only safe hashes https://github.com/ipfs/go-verifcid\nmodule.exports = function hashes () {\n const output = []\n\n for (const [name, code] of Object.entries(multihash.names)) {\n output.push({ name, code })\n }\n\n return output\n}\n","'use strict'\n\nexports.base32 = require('./base32')\nexports.bases = require('./bases')\nexports.codecs = require('./codecs')\nexports.format = require('./format')\nexports.hashes = require('./hashes')\n","'use strict'\n\n/**\n * @typedef {import('./core/types').FormatOptions} FormatOptions\n */\n\nmodule.exports = require('./core')\n","'use strict'\n\nconst mh = require('multihashes')\n\nconst CIDUtil = {\n /**\n * Test if the given input is a valid CID object.\n * Returns an error message if it is not.\n * Returns undefined if it is a valid CID.\n *\n * @param {any} other\n * @returns {string|undefined}\n */\n checkCIDComponents: function (other) {\n if (other == null) {\n return 'null values are not valid CIDs'\n }\n\n if (!(other.version === 0 || other.version === 1)) {\n return 'Invalid version, must be a number equal to 1 or 0'\n }\n\n if (typeof other.codec !== 'string') {\n return 'codec must be string'\n }\n\n if (other.version === 0) {\n if (other.codec !== 'dag-pb') {\n return \"codec must be 'dag-pb' for CIDv0\"\n }\n if (other.multibaseName !== 'base58btc') {\n return \"multibaseName must be 'base58btc' for CIDv0\"\n }\n }\n\n if (!(other.multihash instanceof Uint8Array)) {\n return 'multihash must be a Uint8Array'\n }\n\n try {\n mh.validate(other.multihash)\n } catch (err) {\n let errorMsg = err.message\n if (!errorMsg) { // Just in case mh.validate() throws an error with empty error message\n errorMsg = 'Multihash validation failed'\n }\n return errorMsg\n }\n }\n}\n\nmodule.exports = CIDUtil\n","'use strict'\n\nconst mh = require('multihashes')\nconst multibase = require('multibase')\nconst multicodec = require('multicodec')\nconst CIDUtil = require('./cid-util')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { equals: uint8ArrayEquals } = require('uint8arrays/equals')\n\nconst codecs = multicodec.nameToCode\nconst codecInts = /** @type {CodecName[]} */(Object.keys(codecs)).reduce((p, name) => {\n p[codecs[name]] = name\n return p\n}, /** @type {Record} */({}))\n\nconst symbol = Symbol.for('@ipld/js-cid/CID')\n\n/**\n * @typedef {Object} SerializedCID\n * @property {string} codec\n * @property {number} version\n * @property {Uint8Array} hash\n */\n/**\n * @typedef {0|1} CIDVersion\n * @typedef {import('multibase').BaseNameOrCode} BaseNameOrCode\n * @typedef {import('multicodec').CodecName} CodecName\n * @typedef {import('multicodec').CodecCode} CodecCode\n */\n\n/**\n * Class representing a CID ``\n * , as defined in [ipld/cid](https://github.com/multiformats/cid).\n *\n * @class CID\n */\nclass CID {\n /**\n * Create a new CID.\n *\n * The algorithm for argument input is roughly:\n * ```\n * if (cid)\n * -> create a copy\n * else if (str)\n * if (1st char is on multibase table) -> CID String\n * else -> bs58 encoded multihash\n * else if (Uint8Array)\n * if (1st byte is 0 or 1) -> CID\n * else -> multihash\n * else if (Number)\n * -> construct CID by parts\n * ```\n *\n * @param {CIDVersion | string | Uint8Array | CID} version\n * @param {string|number} [codec]\n * @param {Uint8Array} [multihash]\n * @param {string} [multibaseName]\n *\n * @example\n * new CID(, , , )\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n */\n constructor (version, codec, multihash, multibaseName) {\n // We have below three blank field accessors only because\n // otherwise TS will not pick them up if done after assignemnts\n\n /**\n * The version of the CID.\n *\n * @type {CIDVersion}\n */\n // eslint-disable-next-line no-unused-expressions\n this.version\n\n /**\n * The codec of the CID.\n *\n * @deprecated\n * @type {CodecName}\n */\n // eslint-disable-next-line no-unused-expressions\n this.codec\n\n /**\n * The multihash of the CID.\n *\n * @type {Uint8Array}\n */\n // eslint-disable-next-line no-unused-expressions\n this.multihash\n\n Object.defineProperty(this, symbol, { value: true })\n if (CID.isCID(version)) {\n // version is an exising CID instance\n const cid = /** @type {CID} */(version)\n this.version = cid.version\n this.codec = cid.codec\n this.multihash = cid.multihash\n // Default guard for when a CID < 0.7 is passed with no multibaseName\n // @ts-ignore\n this.multibaseName = cid.multibaseName || (cid.version === 0 ? 'base58btc' : 'base32')\n return\n }\n\n if (typeof version === 'string') {\n // e.g. 'base32' or false\n const baseName = multibase.isEncoded(version)\n if (baseName) {\n // version is a CID String encoded with multibase, so v1\n const cid = multibase.decode(version)\n this.version = /** @type {CIDVersion} */(parseInt(cid[0].toString(), 16))\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = baseName\n } else {\n // version is a base58btc string multihash, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = mh.fromB58String(version)\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n Object.defineProperty(this, 'string', { value: version })\n return\n }\n\n if (version instanceof Uint8Array) {\n const v = parseInt(version[0].toString(), 16)\n if (v === 1) {\n // version is a CID Uint8Array\n const cid = version\n this.version = v\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = 'base32'\n } else {\n // version is a raw multihash Uint8Array, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = version\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n return\n }\n\n // otherwise, assemble the CID from the parameters\n\n this.version = version\n\n if (typeof codec === 'number') {\n // @ts-ignore\n codec = codecInts[codec]\n }\n\n this.codec = /** @type {CodecName} */ (codec)\n\n this.multihash = /** @type {Uint8Array} */ (multihash)\n\n /**\n * Multibase name as string.\n *\n * @deprecated\n * @type {string}\n */\n this.multibaseName = multibaseName || (version === 0 ? 'base58btc' : 'base32')\n\n CID.validateCID(this)\n }\n\n /**\n * The CID as a `Uint8Array`\n *\n * @returns {Uint8Array}\n *\n */\n get bytes () {\n // @ts-ignore\n let bytes = this._bytes\n\n if (!bytes) {\n if (this.version === 0) {\n bytes = this.multihash\n } else if (this.version === 1) {\n const codec = multicodec.getCodeVarint(this.codec)\n bytes = uint8ArrayConcat([\n [1], codec, this.multihash\n ], 1 + codec.byteLength + this.multihash.byteLength)\n } else {\n throw new Error('unsupported version')\n }\n\n // Cache this Uint8Array so it doesn't have to be recreated\n Object.defineProperty(this, '_bytes', { value: bytes })\n }\n\n return bytes\n }\n\n /**\n * The prefix of the CID.\n *\n * @returns {Uint8Array}\n */\n get prefix () {\n const codec = multicodec.getCodeVarint(this.codec)\n const multihash = mh.prefix(this.multihash)\n const prefix = uint8ArrayConcat([\n [this.version], codec, multihash\n ], 1 + codec.byteLength + multihash.byteLength)\n\n return prefix\n }\n\n /**\n * The codec of the CID in its number form.\n *\n * @returns {CodecCode}\n */\n get code () {\n return codecs[this.codec]\n }\n\n /**\n * Convert to a CID of version `0`.\n *\n * @returns {CID}\n */\n toV0 () {\n if (this.codec !== 'dag-pb') {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n const { name, length } = mh.decode(this.multihash)\n\n if (name !== 'sha2-256') {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n if (length !== 32) {\n throw new Error('Cannot convert non 32 byte multihash CID to CIDv0')\n }\n\n return new CID(0, this.codec, this.multihash)\n }\n\n /**\n * Convert to a CID of version `1`.\n *\n * @returns {CID}\n */\n toV1 () {\n return new CID(1, this.codec, this.multihash, this.multibaseName)\n }\n\n /**\n * Encode the CID into a string.\n *\n * @param {BaseNameOrCode} [base=this.multibaseName] - Base encoding to use.\n * @returns {string}\n */\n toBaseEncodedString (base = this.multibaseName) {\n // @ts-ignore non enumerable cache property\n if (this.string && this.string.length !== 0 && base === this.multibaseName) {\n // @ts-ignore non enumerable cache property\n return this.string\n }\n let str\n if (this.version === 0) {\n if (base !== 'base58btc') {\n throw new Error('not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()')\n }\n str = mh.toB58String(this.multihash)\n } else if (this.version === 1) {\n str = uint8ArrayToString(multibase.encode(base, this.bytes))\n } else {\n throw new Error('unsupported version')\n }\n if (base === this.multibaseName) {\n // cache the string value\n Object.defineProperty(this, 'string', { value: str })\n }\n return str\n }\n\n /**\n * CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)\n *\n * @returns {string}\n */\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return 'CID(' + this.toString() + ')'\n }\n\n /**\n * Encode the CID into a string.\n *\n * @param {BaseNameOrCode} [base=this.multibaseName] - Base encoding to use.\n * @returns {string}\n */\n toString (base) {\n return this.toBaseEncodedString(base)\n }\n\n /**\n * Serialize to a plain object.\n *\n * @returns {SerializedCID}\n */\n toJSON () {\n return {\n codec: this.codec,\n version: this.version,\n hash: this.multihash\n }\n }\n\n /**\n * Compare equality with another CID.\n *\n * @param {CID} other\n * @returns {boolean}\n */\n equals (other) {\n return this.codec === other.codec &&\n this.version === other.version &&\n uint8ArrayEquals(this.multihash, other.multihash)\n }\n\n /**\n * Test if the given input is a valid CID object.\n * Throws if it is not.\n *\n * @param {any} other - The other CID.\n * @returns {void}\n */\n static validateCID (other) {\n const errorMsg = CIDUtil.checkCIDComponents(other)\n if (errorMsg) {\n throw new Error(errorMsg)\n }\n }\n\n /**\n * Check if object is a CID instance\n *\n * @param {any} value\n * @returns {value is CID}\n */\n static isCID (value) {\n return value instanceof CID || Boolean(value && value[symbol])\n }\n}\n\nCID.codecs = codecs\n\nmodule.exports = CID\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","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","'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 \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\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","\"use strict\";\n\nimport { AbiCoder, checkResultErrors, ConstructorFragment, defaultAbiCoder, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, dnsEncode, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, getAccountPath, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { accessListify, computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction, TransactionTypes } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { AccessList, AccessListish } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n AbiCoder,\n defaultAbiCoder,\n\n Fragment,\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n checkResultErrors,\n Result,\n\n Logger,\n\n RLP,\n\n _fetchData,\n fetchJson,\n poll,\n\n checkProperties,\n deepCopy,\n defineReadOnly,\n getStatic,\n resolveProperties,\n shallowCopy,\n\n arrayify,\n\n concat,\n stripZeros,\n zeroPad,\n\n isBytes,\n isBytesLike,\n\n defaultPath,\n HDNode,\n SigningKey,\n\n Interface,\n\n LogDescription,\n TransactionDescription,\n\n base58,\n base64,\n\n hexlify,\n isHexString,\n hexConcat,\n hexStripZeros,\n hexValue,\n hexZeroPad,\n hexDataLength,\n hexDataSlice,\n\n nameprep,\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n Utf8ErrorFuncs,\n\n formatBytes32String,\n parseBytes32String,\n\n dnsEncode,\n hashMessage,\n namehash,\n isValidName,\n id,\n\n _TypedDataEncoder,\n\n getAddress,\n getIcapAddress,\n getContractAddress,\n getCreate2Address,\n isAddress,\n\n formatEther,\n parseEther,\n\n formatUnits,\n parseUnits,\n\n commify,\n\n computeHmac,\n keccak256,\n ripemd160,\n sha256,\n sha512,\n\n randomBytes,\n shuffled,\n\n solidityPack,\n solidityKeccak256,\n soliditySha256,\n\n splitSignature,\n joinSignature,\n\n accessListify,\n parseTransaction,\n serializeTransaction,\n TransactionTypes,\n\n getJsonWalletAddress,\n\n computeAddress,\n recoverAddress,\n\n computePublicKey,\n recoverPublicKey,\n\n verifyMessage,\n verifyTypedData,\n\n getAccountPath,\n mnemonicToEntropy,\n entropyToMnemonic,\n isValidMnemonic,\n mnemonicToSeed,\n\n\n ////////////////////////\n // Enums\n\n SupportedAlgorithm,\n\n UnicodeNormalizationForm,\n Utf8ErrorReason,\n\n ////////////////////////\n // Types\n\n Bytes,\n BytesLike,\n Hexable,\n\n AccessList,\n AccessListish,\n UnsignedTransaction,\n\n CoerceFunc,\n\n Indexed,\n\n Mnemonic,\n\n Deferrable,\n\n Utf8ErrorFunc,\n\n ConnectionInfo,\n OnceBlockable,\n OncePollable,\n PollOptions,\n FetchJsonResponse,\n\n EncryptOptions,\n ProgressCallback\n}\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","\nfunction getStack(err) {\n if(err.stack && err.name && err.message)\n return err.stack.substring(err.name.length + 3 + err.message.length)\n .split('\\n')\n else if(err.stack)\n return err.stack.split('\\n')\n}\n\nfunction removePrefix (a, b) {\n return a.filter(function (e) {\n return !~b.indexOf(e)\n })\n}\n\nvar explain = module.exports = function (err, message) {\n if(!(err.stack && err.name && err.message)) {\n console.error(new Error('stackless error'))\n return err\n }\n\n var _err = new Error(message)\n var stack = removePrefix(getStack(_err).slice(1), getStack(err)).join('\\n')\n\n _err.__proto__ = err\n\n _err.stack =\n _err.name + ': ' + _err.message + '\\n' +\n stack + '\\n ' + err.stack\n\n return _err\n}\n\n\n\n",null,null,null,null,null,null,null,null,null,"'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\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\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\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\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","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 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 */\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","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \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","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","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\nconst { encodeText } = require('./util')\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n/** @typedef {import(\"./types\").BaseName} BaseName */\n/** @typedef {import(\"./types\").BaseCode} BaseCode */\n\n/**\n * Class to encode/decode in the supported Bases\n *\n */\nclass Base {\n /**\n * @param {BaseName} name\n * @param {BaseCode} code\n * @param {CodecFactory} factory\n * @param {string} alphabet\n */\n constructor (name, code, factory, alphabet) {\n this.name = name\n this.code = code\n this.codeBuf = encodeText(this.code)\n this.alphabet = alphabet\n this.codec = factory(alphabet)\n }\n\n /**\n * @param {Uint8Array} buf\n * @returns {string}\n */\n encode (buf) {\n return this.codec.encode(buf)\n }\n\n /**\n * @param {string} string\n * @returns {Uint8Array}\n */\n decode (string) {\n for (const char of string) {\n if (this.alphabet && this.alphabet.indexOf(char) < 0) {\n throw new Error(`invalid character '${char}' in '${string}'`)\n }\n }\n return this.codec.decode(string)\n }\n}\n\nmodule.exports = Base\n","'use strict'\n\nconst baseX = require('@multiformats/base-x')\nconst Base = require('./base.js')\nconst { rfc4648 } = require('./rfc4648')\nconst { decodeText, encodeText } = require('./util')\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n/** @typedef {import('./types').Codec} Codec */\n/** @typedef {import('./types').BaseName} BaseName */\n/** @typedef {import('./types').BaseCode} BaseCode */\n\n/** @type {CodecFactory} */\nconst identity = () => {\n return {\n encode: decodeText,\n decode: encodeText\n }\n}\n\n/**\n *\n * name, code, implementation, alphabet\n *\n * @type {Array<[BaseName, BaseCode, CodecFactory, string]>}\n */\nconst constants = [\n ['identity', '\\x00', identity, ''],\n ['base2', '0', rfc4648(1), '01'],\n ['base8', '7', rfc4648(3), '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', rfc4648(4), '0123456789abcdef'],\n ['base16upper', 'F', rfc4648(4), '0123456789ABCDEF'],\n ['base32hex', 'v', rfc4648(5), '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexupper', 'V', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV'],\n ['base32hexpad', 't', rfc4648(5), '0123456789abcdefghijklmnopqrstuv='],\n ['base32hexpadupper', 'T', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV='],\n ['base32', 'b', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32upper', 'B', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'],\n ['base32pad', 'c', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32padupper', 'C', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567='],\n ['base32z', 'h', rfc4648(5), 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base36', 'k', baseX, '0123456789abcdefghijklmnopqrstuvwxyz'],\n ['base36upper', 'K', baseX, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base64', 'm', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\n/** @type {Record} */\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, /** @type {Record} */({}))\n\n/** @type {Record} */\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, /** @type {Record} */({}))\n\nmodule.exports = {\n names,\n codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n *\n */\n'use strict'\n\nconst constants = require('./constants')\nconst { encodeText, decodeText, concat } = require('./util')\n\n/** @typedef {import('./base')} Base */\n/** @typedef {import(\"./types\").BaseNameOrCode} BaseNameOrCode */\n/** @typedef {import(\"./types\").BaseCode} BaseCode */\n/** @typedef {import(\"./types\").BaseName} BaseName */\n\n/**\n * Create a new Uint8Array with the multibase varint+code.\n *\n * @param {BaseNameOrCode} nameOrCode - The multibase name or code number.\n * @param {Uint8Array} buf - The data to be prefixed with multibase.\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded Uint8Array')\n }\n const { name, codeBuf } = encoding(nameOrCode)\n validEncode(name, buf)\n\n return concat([codeBuf, buf], codeBuf.length + buf.length)\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {BaseNameOrCode} nameOrCode - The multibase name or code number.\n * @param {Uint8Array} buf - The data to be encoded.\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n *\n */\nfunction encode (nameOrCode, buf) {\n const enc = encoding(nameOrCode)\n const data = encodeText(enc.encode(buf))\n\n return concat([enc.codeBuf, data], enc.codeBuf.length + data.length)\n}\n\n/**\n * Takes a Uint8Array or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Uint8Array|string} data\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n *\n */\nfunction decode (data) {\n if (data instanceof Uint8Array) {\n data = decodeText(data)\n }\n const prefix = data[0]\n\n // Make all encodings case-insensitive except the ones that include upper and lower chars in the alphabet\n if (['f', 'F', 'v', 'V', 't', 'T', 'b', 'B', 'c', 'C', 'h', 'k', 'K'].includes(prefix)) {\n data = data.toLowerCase()\n }\n const enc = encoding(/** @type {BaseCode} */(data[0]))\n return enc.decode(data.substring(1))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Uint8Array|string} data\n */\nfunction isEncoded (data) {\n if (data instanceof Uint8Array) {\n data = decodeText(data)\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(data) !== '[object String]') {\n return false\n }\n\n try {\n const enc = encoding(/** @type {BaseCode} */(data[0]))\n return enc.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * Validate encoded data\n *\n * @param {BaseNameOrCode} name\n * @param {Uint8Array} buf\n * @returns {void}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction validEncode (name, buf) {\n const enc = encoding(name)\n enc.decode(decodeText(buf))\n}\n\n/**\n * Get the encoding by name or code\n *\n * @param {BaseNameOrCode} nameOrCode\n * @returns {Base}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction encoding (nameOrCode) {\n if (Object.prototype.hasOwnProperty.call(constants.names, /** @type {BaseName} */(nameOrCode))) {\n return constants.names[/** @type {BaseName} */(nameOrCode)]\n } else if (Object.prototype.hasOwnProperty.call(constants.codes, /** @type {BaseCode} */(nameOrCode))) {\n return constants.codes[/** @type {BaseCode} */(nameOrCode)]\n } else {\n throw new Error(`Unsupported encoding: ${nameOrCode}`)\n }\n}\n\n/**\n * Get encoding from data\n *\n * @param {string|Uint8Array} data\n * @returns {Base}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction encodingFromData (data) {\n if (data instanceof Uint8Array) {\n data = decodeText(data)\n }\n\n return encoding(/** @type {BaseCode} */(data[0]))\n}\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.encoding = encoding\nexports.encodingFromData = encodingFromData\nconst names = Object.freeze(constants.names)\nconst codes = Object.freeze(constants.codes)\nexports.names = names\nexports.codes = codes\n","'use strict'\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar) => {\n // Build the character lookup table:\n /** @type {Record} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError('Invalid character ' + string[i])\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @param {number} bitsPerChar\n * @returns {CodecFactory}\n */\nconst rfc4648 = (bitsPerChar) => (alphabet) => {\n return {\n /**\n * @param {Uint8Array} input\n * @returns {string}\n */\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n return decode(input, alphabet, bitsPerChar)\n }\n }\n}\n\nmodule.exports = { rfc4648 }\n","'use strict'\n\nconst textDecoder = new TextDecoder()\n/**\n * @param {ArrayBufferView|ArrayBuffer} bytes\n * @returns {string}\n */\nconst decodeText = (bytes) => textDecoder.decode(bytes)\n\nconst textEncoder = new TextEncoder()\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nconst encodeText = (text) => textEncoder.encode(text)\n\n/**\n * Returns a new Uint8Array created by concatenating the passed Arrays\n *\n * @param {Array>} arrs\n * @param {number} length\n * @returns {Uint8Array}\n */\nfunction concat (arrs, length) {\n const output = new Uint8Array(length)\n let offset = 0\n\n for (const arr of arrs) {\n output.set(arr, offset)\n offset += arr.length\n }\n\n return output\n}\n\nmodule.exports = { decodeText, encodeText, concat }\n","// DO NOT CHANGE THIS FILE. IT IS GENERATED BY tools/update-table.js\n/* eslint quote-props: off */\n'use strict'\n\n/**\n * @type {import('./generated-types').NameCodeMap}\n */\nconst baseTable = Object.freeze({\n 'identity': 0x00,\n 'cidv1': 0x01,\n 'cidv2': 0x02,\n 'cidv3': 0x03,\n 'ip4': 0x04,\n 'tcp': 0x06,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'sha3-512': 0x14,\n 'sha3-384': 0x15,\n 'sha3-256': 0x16,\n 'sha3-224': 0x17,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1a,\n 'keccak-256': 0x1b,\n 'keccak-384': 0x1c,\n 'keccak-512': 0x1d,\n 'blake3': 0x1e,\n 'dccp': 0x21,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'ip6': 0x29,\n 'ip6zone': 0x2a,\n 'path': 0x2f,\n 'multicodec': 0x30,\n 'multihash': 0x31,\n 'multiaddr': 0x32,\n 'multibase': 0x33,\n 'dns': 0x35,\n 'dns4': 0x36,\n 'dns6': 0x37,\n 'dnsaddr': 0x38,\n 'protobuf': 0x50,\n 'cbor': 0x51,\n 'raw': 0x55,\n 'dbl-sha2-256': 0x56,\n 'rlp': 0x60,\n 'bencode': 0x63,\n 'dag-pb': 0x70,\n 'dag-cbor': 0x71,\n 'libp2p-key': 0x72,\n 'git-raw': 0x78,\n 'torrent-info': 0x7b,\n 'torrent-file': 0x7c,\n 'leofcoin-block': 0x81,\n 'leofcoin-tx': 0x82,\n 'leofcoin-pr': 0x83,\n 'sctp': 0x84,\n 'dag-jose': 0x85,\n 'dag-cose': 0x86,\n 'eth-block': 0x90,\n 'eth-block-list': 0x91,\n 'eth-tx-trie': 0x92,\n 'eth-tx': 0x93,\n 'eth-tx-receipt-trie': 0x94,\n 'eth-tx-receipt': 0x95,\n 'eth-state-trie': 0x96,\n 'eth-account-snapshot': 0x97,\n 'eth-storage-trie': 0x98,\n 'eth-receipt-log-trie': 0x99,\n 'eth-reciept-log': 0x9a,\n 'bitcoin-block': 0xb0,\n 'bitcoin-tx': 0xb1,\n 'bitcoin-witness-commitment': 0xb2,\n 'zcash-block': 0xc0,\n 'zcash-tx': 0xc1,\n 'caip-50': 0xca,\n 'streamid': 0xce,\n 'stellar-block': 0xd0,\n 'stellar-tx': 0xd1,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'bmt': 0xd6,\n 'decred-block': 0xe0,\n 'decred-tx': 0xe1,\n 'ipld-ns': 0xe2,\n 'ipfs-ns': 0xe3,\n 'swarm-ns': 0xe4,\n 'ipns-ns': 0xe5,\n 'zeronet': 0xe6,\n 'secp256k1-pub': 0xe7,\n 'bls12_381-g1-pub': 0xea,\n 'bls12_381-g2-pub': 0xeb,\n 'x25519-pub': 0xec,\n 'ed25519-pub': 0xed,\n 'bls12_381-g1g2-pub': 0xee,\n 'dash-block': 0xf0,\n 'dash-tx': 0xf1,\n 'swarm-manifest': 0xfa,\n 'swarm-feed': 0xfb,\n 'udp': 0x0111,\n 'p2p-webrtc-star': 0x0113,\n 'p2p-webrtc-direct': 0x0114,\n 'p2p-stardust': 0x0115,\n 'p2p-circuit': 0x0122,\n 'dag-json': 0x0129,\n 'udt': 0x012d,\n 'utp': 0x012e,\n 'unix': 0x0190,\n 'thread': 0x0196,\n 'p2p': 0x01a5,\n 'ipfs': 0x01a5,\n 'https': 0x01bb,\n 'onion': 0x01bc,\n 'onion3': 0x01bd,\n 'garlic64': 0x01be,\n 'garlic32': 0x01bf,\n 'tls': 0x01c0,\n 'noise': 0x01c6,\n 'quic': 0x01cc,\n 'ws': 0x01dd,\n 'wss': 0x01de,\n 'p2p-websocket-star': 0x01df,\n 'http': 0x01e0,\n 'swhid-1-snp': 0x01f0,\n 'json': 0x0200,\n 'messagepack': 0x0201,\n 'libp2p-peer-record': 0x0301,\n 'libp2p-relay-rsvp': 0x0302,\n 'car-index-sorted': 0x0400,\n 'sha2-256-trunc254-padded': 0x1012,\n 'ripemd-128': 0x1052,\n 'ripemd-160': 0x1053,\n 'ripemd-256': 0x1054,\n 'ripemd-320': 0x1055,\n 'x11': 0x1100,\n 'p256-pub': 0x1200,\n 'p384-pub': 0x1201,\n 'p521-pub': 0x1202,\n 'ed448-pub': 0x1203,\n 'x448-pub': 0x1204,\n 'ed25519-priv': 0x1300,\n 'secp256k1-priv': 0x1301,\n 'x25519-priv': 0x1302,\n 'kangarootwelve': 0x1d01,\n 'sm3-256': 0x534d,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'skein256-8': 0xb301,\n 'skein256-16': 0xb302,\n 'skein256-24': 0xb303,\n 'skein256-32': 0xb304,\n 'skein256-40': 0xb305,\n 'skein256-48': 0xb306,\n 'skein256-56': 0xb307,\n 'skein256-64': 0xb308,\n 'skein256-72': 0xb309,\n 'skein256-80': 0xb30a,\n 'skein256-88': 0xb30b,\n 'skein256-96': 0xb30c,\n 'skein256-104': 0xb30d,\n 'skein256-112': 0xb30e,\n 'skein256-120': 0xb30f,\n 'skein256-128': 0xb310,\n 'skein256-136': 0xb311,\n 'skein256-144': 0xb312,\n 'skein256-152': 0xb313,\n 'skein256-160': 0xb314,\n 'skein256-168': 0xb315,\n 'skein256-176': 0xb316,\n 'skein256-184': 0xb317,\n 'skein256-192': 0xb318,\n 'skein256-200': 0xb319,\n 'skein256-208': 0xb31a,\n 'skein256-216': 0xb31b,\n 'skein256-224': 0xb31c,\n 'skein256-232': 0xb31d,\n 'skein256-240': 0xb31e,\n 'skein256-248': 0xb31f,\n 'skein256-256': 0xb320,\n 'skein512-8': 0xb321,\n 'skein512-16': 0xb322,\n 'skein512-24': 0xb323,\n 'skein512-32': 0xb324,\n 'skein512-40': 0xb325,\n 'skein512-48': 0xb326,\n 'skein512-56': 0xb327,\n 'skein512-64': 0xb328,\n 'skein512-72': 0xb329,\n 'skein512-80': 0xb32a,\n 'skein512-88': 0xb32b,\n 'skein512-96': 0xb32c,\n 'skein512-104': 0xb32d,\n 'skein512-112': 0xb32e,\n 'skein512-120': 0xb32f,\n 'skein512-128': 0xb330,\n 'skein512-136': 0xb331,\n 'skein512-144': 0xb332,\n 'skein512-152': 0xb333,\n 'skein512-160': 0xb334,\n 'skein512-168': 0xb335,\n 'skein512-176': 0xb336,\n 'skein512-184': 0xb337,\n 'skein512-192': 0xb338,\n 'skein512-200': 0xb339,\n 'skein512-208': 0xb33a,\n 'skein512-216': 0xb33b,\n 'skein512-224': 0xb33c,\n 'skein512-232': 0xb33d,\n 'skein512-240': 0xb33e,\n 'skein512-248': 0xb33f,\n 'skein512-256': 0xb340,\n 'skein512-264': 0xb341,\n 'skein512-272': 0xb342,\n 'skein512-280': 0xb343,\n 'skein512-288': 0xb344,\n 'skein512-296': 0xb345,\n 'skein512-304': 0xb346,\n 'skein512-312': 0xb347,\n 'skein512-320': 0xb348,\n 'skein512-328': 0xb349,\n 'skein512-336': 0xb34a,\n 'skein512-344': 0xb34b,\n 'skein512-352': 0xb34c,\n 'skein512-360': 0xb34d,\n 'skein512-368': 0xb34e,\n 'skein512-376': 0xb34f,\n 'skein512-384': 0xb350,\n 'skein512-392': 0xb351,\n 'skein512-400': 0xb352,\n 'skein512-408': 0xb353,\n 'skein512-416': 0xb354,\n 'skein512-424': 0xb355,\n 'skein512-432': 0xb356,\n 'skein512-440': 0xb357,\n 'skein512-448': 0xb358,\n 'skein512-456': 0xb359,\n 'skein512-464': 0xb35a,\n 'skein512-472': 0xb35b,\n 'skein512-480': 0xb35c,\n 'skein512-488': 0xb35d,\n 'skein512-496': 0xb35e,\n 'skein512-504': 0xb35f,\n 'skein512-512': 0xb360,\n 'skein1024-8': 0xb361,\n 'skein1024-16': 0xb362,\n 'skein1024-24': 0xb363,\n 'skein1024-32': 0xb364,\n 'skein1024-40': 0xb365,\n 'skein1024-48': 0xb366,\n 'skein1024-56': 0xb367,\n 'skein1024-64': 0xb368,\n 'skein1024-72': 0xb369,\n 'skein1024-80': 0xb36a,\n 'skein1024-88': 0xb36b,\n 'skein1024-96': 0xb36c,\n 'skein1024-104': 0xb36d,\n 'skein1024-112': 0xb36e,\n 'skein1024-120': 0xb36f,\n 'skein1024-128': 0xb370,\n 'skein1024-136': 0xb371,\n 'skein1024-144': 0xb372,\n 'skein1024-152': 0xb373,\n 'skein1024-160': 0xb374,\n 'skein1024-168': 0xb375,\n 'skein1024-176': 0xb376,\n 'skein1024-184': 0xb377,\n 'skein1024-192': 0xb378,\n 'skein1024-200': 0xb379,\n 'skein1024-208': 0xb37a,\n 'skein1024-216': 0xb37b,\n 'skein1024-224': 0xb37c,\n 'skein1024-232': 0xb37d,\n 'skein1024-240': 0xb37e,\n 'skein1024-248': 0xb37f,\n 'skein1024-256': 0xb380,\n 'skein1024-264': 0xb381,\n 'skein1024-272': 0xb382,\n 'skein1024-280': 0xb383,\n 'skein1024-288': 0xb384,\n 'skein1024-296': 0xb385,\n 'skein1024-304': 0xb386,\n 'skein1024-312': 0xb387,\n 'skein1024-320': 0xb388,\n 'skein1024-328': 0xb389,\n 'skein1024-336': 0xb38a,\n 'skein1024-344': 0xb38b,\n 'skein1024-352': 0xb38c,\n 'skein1024-360': 0xb38d,\n 'skein1024-368': 0xb38e,\n 'skein1024-376': 0xb38f,\n 'skein1024-384': 0xb390,\n 'skein1024-392': 0xb391,\n 'skein1024-400': 0xb392,\n 'skein1024-408': 0xb393,\n 'skein1024-416': 0xb394,\n 'skein1024-424': 0xb395,\n 'skein1024-432': 0xb396,\n 'skein1024-440': 0xb397,\n 'skein1024-448': 0xb398,\n 'skein1024-456': 0xb399,\n 'skein1024-464': 0xb39a,\n 'skein1024-472': 0xb39b,\n 'skein1024-480': 0xb39c,\n 'skein1024-488': 0xb39d,\n 'skein1024-496': 0xb39e,\n 'skein1024-504': 0xb39f,\n 'skein1024-512': 0xb3a0,\n 'skein1024-520': 0xb3a1,\n 'skein1024-528': 0xb3a2,\n 'skein1024-536': 0xb3a3,\n 'skein1024-544': 0xb3a4,\n 'skein1024-552': 0xb3a5,\n 'skein1024-560': 0xb3a6,\n 'skein1024-568': 0xb3a7,\n 'skein1024-576': 0xb3a8,\n 'skein1024-584': 0xb3a9,\n 'skein1024-592': 0xb3aa,\n 'skein1024-600': 0xb3ab,\n 'skein1024-608': 0xb3ac,\n 'skein1024-616': 0xb3ad,\n 'skein1024-624': 0xb3ae,\n 'skein1024-632': 0xb3af,\n 'skein1024-640': 0xb3b0,\n 'skein1024-648': 0xb3b1,\n 'skein1024-656': 0xb3b2,\n 'skein1024-664': 0xb3b3,\n 'skein1024-672': 0xb3b4,\n 'skein1024-680': 0xb3b5,\n 'skein1024-688': 0xb3b6,\n 'skein1024-696': 0xb3b7,\n 'skein1024-704': 0xb3b8,\n 'skein1024-712': 0xb3b9,\n 'skein1024-720': 0xb3ba,\n 'skein1024-728': 0xb3bb,\n 'skein1024-736': 0xb3bc,\n 'skein1024-744': 0xb3bd,\n 'skein1024-752': 0xb3be,\n 'skein1024-760': 0xb3bf,\n 'skein1024-768': 0xb3c0,\n 'skein1024-776': 0xb3c1,\n 'skein1024-784': 0xb3c2,\n 'skein1024-792': 0xb3c3,\n 'skein1024-800': 0xb3c4,\n 'skein1024-808': 0xb3c5,\n 'skein1024-816': 0xb3c6,\n 'skein1024-824': 0xb3c7,\n 'skein1024-832': 0xb3c8,\n 'skein1024-840': 0xb3c9,\n 'skein1024-848': 0xb3ca,\n 'skein1024-856': 0xb3cb,\n 'skein1024-864': 0xb3cc,\n 'skein1024-872': 0xb3cd,\n 'skein1024-880': 0xb3ce,\n 'skein1024-888': 0xb3cf,\n 'skein1024-896': 0xb3d0,\n 'skein1024-904': 0xb3d1,\n 'skein1024-912': 0xb3d2,\n 'skein1024-920': 0xb3d3,\n 'skein1024-928': 0xb3d4,\n 'skein1024-936': 0xb3d5,\n 'skein1024-944': 0xb3d6,\n 'skein1024-952': 0xb3d7,\n 'skein1024-960': 0xb3d8,\n 'skein1024-968': 0xb3d9,\n 'skein1024-976': 0xb3da,\n 'skein1024-984': 0xb3db,\n 'skein1024-992': 0xb3dc,\n 'skein1024-1000': 0xb3dd,\n 'skein1024-1008': 0xb3de,\n 'skein1024-1016': 0xb3df,\n 'skein1024-1024': 0xb3e0,\n 'poseidon-bls12_381-a2-fc1': 0xb401,\n 'poseidon-bls12_381-a2-fc1-sc': 0xb402,\n 'zeroxcert-imprint-256': 0xce11,\n 'fil-commitment-unsealed': 0xf101,\n 'fil-commitment-sealed': 0xf102,\n 'holochain-adr-v0': 0x807124,\n 'holochain-adr-v1': 0x817124,\n 'holochain-key-v0': 0x947124,\n 'holochain-key-v1': 0x957124,\n 'holochain-sig-v0': 0xa27124,\n 'holochain-sig-v1': 0xa37124,\n 'skynet-ns': 0xb19910,\n 'arweave-ns': 0xb29910\n})\n\nmodule.exports = { baseTable }\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecCode} CodecCode */\n\nconst varint = require('varint')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\nconst util = require('./util')\nconst { nameToVarint, constantToCode, nameToCode, codeToName } = require('./maps')\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {CodecName|Uint8Array} multicodecStrOrCode\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction addPrefix (multicodecStrOrCode, data) {\n let prefix\n\n if (multicodecStrOrCode instanceof Uint8Array) {\n prefix = util.varintUint8ArrayEncode(multicodecStrOrCode)\n } else {\n if (nameToVarint[multicodecStrOrCode]) {\n prefix = nameToVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n\n return uint8ArrayConcat([prefix, data], prefix.length + data.length)\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction rmPrefix (data) {\n varint.decode(/** @type {Buffer} */(data))\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getNameFromData (prefixedData) {\n const code = /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n const name = codeToName[code]\n if (name === undefined) {\n throw new Error(`Code \"${code}\" not found`)\n }\n return name\n}\n\n/**\n * Get the codec name from a code.\n *\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getNameFromCode (codec) {\n return codeToName[codec]\n}\n\n/**\n * Get the code of the codec\n *\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getCodeFromName (name) {\n const code = nameToCode[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCodeFromData (prefixedData) {\n return /** @type {CodecCode} */(varint.decode(/** @type {Buffer} */(prefixedData)))\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getVarintFromName (name) {\n const code = nameToVarint[name]\n if (code === undefined) {\n throw new Error(`Codec \"${name}\" not found`)\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n *\n * @param {CodecCode} code\n * @returns {Uint8Array}\n */\nfunction getVarintFromCode (code) {\n return util.varintEncode(code)\n}\n\n/**\n * Get the codec name of the prefixed data.\n *\n * @deprecated use getNameFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecName}\n */\nfunction getCodec (prefixedData) {\n return getNameFromData(prefixedData)\n}\n\n/**\n * Get the codec name from a code.\n *\n * @deprecated use getNameFromCode instead.\n * @param {CodecCode} codec\n * @returns {CodecName}\n */\nfunction getName (codec) {\n return getNameFromCode(codec)\n}\n\n/**\n * Get the code of the codec\n *\n * @deprecated use getCodeFromName instead.\n * @param {CodecName} name\n * @returns {CodecCode}\n */\nfunction getNumber (name) {\n return getCodeFromName(name)\n}\n\n/**\n * Get the code of the prefixed data.\n *\n * @deprecated use getCodeFromData instead.\n * @param {Uint8Array} prefixedData\n * @returns {CodecCode}\n */\nfunction getCode (prefixedData) {\n return getCodeFromData(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n *\n * @deprecated use getVarintFromName instead.\n * @param {CodecName} name\n * @returns {Uint8Array}\n */\nfunction getCodeVarint (name) {\n return getVarintFromName(name)\n}\n\n/**\n * Get the varint of a code.\n *\n * @deprecated use getVarintFromCode instead.\n * @param {CodecCode} code\n * @returns {Array.}\n */\nfunction getVarint (code) {\n return Array.from(getVarintFromCode(code))\n}\n\nmodule.exports = {\n addPrefix,\n rmPrefix,\n getNameFromData,\n getNameFromCode,\n getCodeFromName,\n getCodeFromData,\n getVarintFromName,\n getVarintFromCode,\n // Deprecated\n getCodec,\n getName,\n getNumber,\n getCode,\n getCodeVarint,\n getVarint,\n // Make the constants top-level constants\n ...constantToCode,\n // Export the maps\n nameToVarint,\n nameToCode,\n codeToName\n}\n","'use strict'\n\n/** @typedef {import('./generated-types').ConstantCodeMap} ConstantCodeMap */\n/** @typedef {import('./generated-types').NameUint8ArrayMap} NameUint8ArrayMap */\n/** @typedef {import('./generated-types').CodeNameMap} CodeNameMap */\n/** @typedef {import('./generated-types').CodecName} CodecName */\n/** @typedef {import('./generated-types').CodecConstant} CodecConstant */\n\nconst { baseTable } = require('./generated-table')\nconst varintEncode = require('./util').varintEncode\n\nconst nameToVarint = /** @type {NameUint8ArrayMap} */ ({})\nconst constantToCode = /** @type {ConstantCodeMap} */({})\nconst codeToName = /** @type {CodeNameMap} */({})\n\n// eslint-disable-next-line guard-for-in\nfor (const name in baseTable) {\n const codecName = /** @type {CodecName} */(name)\n const code = baseTable[codecName]\n nameToVarint[codecName] = varintEncode(code)\n\n const constant = /** @type {CodecConstant} */(codecName.toUpperCase().replace(/-/g, '_'))\n constantToCode[constant] = code\n\n if (!codeToName[code]) {\n codeToName[code] = codecName\n }\n}\n\nObject.freeze(nameToVarint)\nObject.freeze(constantToCode)\nObject.freeze(codeToName)\nconst nameToCode = Object.freeze(baseTable)\nmodule.exports = {\n nameToVarint,\n constantToCode,\n nameToCode,\n codeToName\n}\n","'use strict'\n\nconst varint = require('varint')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')\n\nmodule.exports = {\n numberToUint8Array,\n uint8ArrayToNumber,\n varintUint8ArrayEncode,\n varintEncode\n}\n\n/**\n * @param {Uint8Array} buf\n */\nfunction uint8ArrayToNumber (buf) {\n return parseInt(uint8ArrayToString(buf, 'base16'), 16)\n}\n\n/**\n * @param {number} num\n */\nfunction numberToUint8Array (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return uint8ArrayFromString(hexString, 'base16')\n}\n\n/**\n * @param {Uint8Array} input\n */\nfunction varintUint8ArrayEncode (input) {\n return Uint8Array.from(varint.encode(uint8ArrayToNumber(input)))\n}\n\n/**\n * @param {number} num\n */\nfunction varintEncode (num) {\n return Uint8Array.from(varint.encode(num))\n}\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\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\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\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)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","/* eslint quote-props: off */\n'use strict'\n\n/**\n * Names for all available hashes\n *\n * @typedef { \"identity\" | \"sha1\" | \"sha2-256\" | \"sha2-512\" | \"sha3-512\" | \"sha3-384\" | \"sha3-256\" | \"sha3-224\" | \"shake-128\" | \"shake-256\" | \"keccak-224\" | \"keccak-256\" | \"keccak-384\" | \"keccak-512\" | \"blake3\" | \"murmur3-128\" | \"murmur3-32\" | \"dbl-sha2-256\" | \"md4\" | \"md5\" | \"bmt\" | \"sha2-256-trunc254-padded\" | \"ripemd-128\" | \"ripemd-160\" | \"ripemd-256\" | \"ripemd-320\" | \"x11\" | \"kangarootwelve\" | \"sm3-256\" | \"blake2b-8\" | \"blake2b-16\" | \"blake2b-24\" | \"blake2b-32\" | \"blake2b-40\" | \"blake2b-48\" | \"blake2b-56\" | \"blake2b-64\" | \"blake2b-72\" | \"blake2b-80\" | \"blake2b-88\" | \"blake2b-96\" | \"blake2b-104\" | \"blake2b-112\" | \"blake2b-120\" | \"blake2b-128\" | \"blake2b-136\" | \"blake2b-144\" | \"blake2b-152\" | \"blake2b-160\" | \"blake2b-168\" | \"blake2b-176\" | \"blake2b-184\" | \"blake2b-192\" | \"blake2b-200\" | \"blake2b-208\" | \"blake2b-216\" | \"blake2b-224\" | \"blake2b-232\" | \"blake2b-240\" | \"blake2b-248\" | \"blake2b-256\" | \"blake2b-264\" | \"blake2b-272\" | \"blake2b-280\" | \"blake2b-288\" | \"blake2b-296\" | \"blake2b-304\" | \"blake2b-312\" | \"blake2b-320\" | \"blake2b-328\" | \"blake2b-336\" | \"blake2b-344\" | \"blake2b-352\" | \"blake2b-360\" | \"blake2b-368\" | \"blake2b-376\" | \"blake2b-384\" | \"blake2b-392\" | \"blake2b-400\" | \"blake2b-408\" | \"blake2b-416\" | \"blake2b-424\" | \"blake2b-432\" | \"blake2b-440\" | \"blake2b-448\" | \"blake2b-456\" | \"blake2b-464\" | \"blake2b-472\" | \"blake2b-480\" | \"blake2b-488\" | \"blake2b-496\" | \"blake2b-504\" | \"blake2b-512\" | \"blake2s-8\" | \"blake2s-16\" | \"blake2s-24\" | \"blake2s-32\" | \"blake2s-40\" | \"blake2s-48\" | \"blake2s-56\" | \"blake2s-64\" | \"blake2s-72\" | \"blake2s-80\" | \"blake2s-88\" | \"blake2s-96\" | \"blake2s-104\" | \"blake2s-112\" | \"blake2s-120\" | \"blake2s-128\" | \"blake2s-136\" | \"blake2s-144\" | \"blake2s-152\" | \"blake2s-160\" | \"blake2s-168\" | \"blake2s-176\" | \"blake2s-184\" | \"blake2s-192\" | \"blake2s-200\" | \"blake2s-208\" | \"blake2s-216\" | \"blake2s-224\" | \"blake2s-232\" | \"blake2s-240\" | \"blake2s-248\" | \"blake2s-256\" | \"skein256-8\" | \"skein256-16\" | \"skein256-24\" | \"skein256-32\" | \"skein256-40\" | \"skein256-48\" | \"skein256-56\" | \"skein256-64\" | \"skein256-72\" | \"skein256-80\" | \"skein256-88\" | \"skein256-96\" | \"skein256-104\" | \"skein256-112\" | \"skein256-120\" | \"skein256-128\" | \"skein256-136\" | \"skein256-144\" | \"skein256-152\" | \"skein256-160\" | \"skein256-168\" | \"skein256-176\" | \"skein256-184\" | \"skein256-192\" | \"skein256-200\" | \"skein256-208\" | \"skein256-216\" | \"skein256-224\" | \"skein256-232\" | \"skein256-240\" | \"skein256-248\" | \"skein256-256\" | \"skein512-8\" | \"skein512-16\" | \"skein512-24\" | \"skein512-32\" | \"skein512-40\" | \"skein512-48\" | \"skein512-56\" | \"skein512-64\" | \"skein512-72\" | \"skein512-80\" | \"skein512-88\" | \"skein512-96\" | \"skein512-104\" | \"skein512-112\" | \"skein512-120\" | \"skein512-128\" | \"skein512-136\" | \"skein512-144\" | \"skein512-152\" | \"skein512-160\" | \"skein512-168\" | \"skein512-176\" | \"skein512-184\" | \"skein512-192\" | \"skein512-200\" | \"skein512-208\" | \"skein512-216\" | \"skein512-224\" | \"skein512-232\" | \"skein512-240\" | \"skein512-248\" | \"skein512-256\" | \"skein512-264\" | \"skein512-272\" | \"skein512-280\" | \"skein512-288\" | \"skein512-296\" | \"skein512-304\" | \"skein512-312\" | \"skein512-320\" | \"skein512-328\" | \"skein512-336\" | \"skein512-344\" | \"skein512-352\" | \"skein512-360\" | \"skein512-368\" | \"skein512-376\" | \"skein512-384\" | \"skein512-392\" | \"skein512-400\" | \"skein512-408\" | \"skein512-416\" | \"skein512-424\" | \"skein512-432\" | \"skein512-440\" | \"skein512-448\" | \"skein512-456\" | \"skein512-464\" | \"skein512-472\" | \"skein512-480\" | \"skein512-488\" | \"skein512-496\" | \"skein512-504\" | \"skein512-512\" | \"skein1024-8\" | \"skein1024-16\" | \"skein1024-24\" | \"skein1024-32\" | \"skein1024-40\" | \"skein1024-48\" | \"skein1024-56\" | \"skein1024-64\" | \"skein1024-72\" | \"skein1024-80\" | \"skein1024-88\" | \"skein1024-96\" | \"skein1024-104\" | \"skein1024-112\" | \"skein1024-120\" | \"skein1024-128\" | \"skein1024-136\" | \"skein1024-144\" | \"skein1024-152\" | \"skein1024-160\" | \"skein1024-168\" | \"skein1024-176\" | \"skein1024-184\" | \"skein1024-192\" | \"skein1024-200\" | \"skein1024-208\" | \"skein1024-216\" | \"skein1024-224\" | \"skein1024-232\" | \"skein1024-240\" | \"skein1024-248\" | \"skein1024-256\" | \"skein1024-264\" | \"skein1024-272\" | \"skein1024-280\" | \"skein1024-288\" | \"skein1024-296\" | \"skein1024-304\" | \"skein1024-312\" | \"skein1024-320\" | \"skein1024-328\" | \"skein1024-336\" | \"skein1024-344\" | \"skein1024-352\" | \"skein1024-360\" | \"skein1024-368\" | \"skein1024-376\" | \"skein1024-384\" | \"skein1024-392\" | \"skein1024-400\" | \"skein1024-408\" | \"skein1024-416\" | \"skein1024-424\" | \"skein1024-432\" | \"skein1024-440\" | \"skein1024-448\" | \"skein1024-456\" | \"skein1024-464\" | \"skein1024-472\" | \"skein1024-480\" | \"skein1024-488\" | \"skein1024-496\" | \"skein1024-504\" | \"skein1024-512\" | \"skein1024-520\" | \"skein1024-528\" | \"skein1024-536\" | \"skein1024-544\" | \"skein1024-552\" | \"skein1024-560\" | \"skein1024-568\" | \"skein1024-576\" | \"skein1024-584\" | \"skein1024-592\" | \"skein1024-600\" | \"skein1024-608\" | \"skein1024-616\" | \"skein1024-624\" | \"skein1024-632\" | \"skein1024-640\" | \"skein1024-648\" | \"skein1024-656\" | \"skein1024-664\" | \"skein1024-672\" | \"skein1024-680\" | \"skein1024-688\" | \"skein1024-696\" | \"skein1024-704\" | \"skein1024-712\" | \"skein1024-720\" | \"skein1024-728\" | \"skein1024-736\" | \"skein1024-744\" | \"skein1024-752\" | \"skein1024-760\" | \"skein1024-768\" | \"skein1024-776\" | \"skein1024-784\" | \"skein1024-792\" | \"skein1024-800\" | \"skein1024-808\" | \"skein1024-816\" | \"skein1024-824\" | \"skein1024-832\" | \"skein1024-840\" | \"skein1024-848\" | \"skein1024-856\" | \"skein1024-864\" | \"skein1024-872\" | \"skein1024-880\" | \"skein1024-888\" | \"skein1024-896\" | \"skein1024-904\" | \"skein1024-912\" | \"skein1024-920\" | \"skein1024-928\" | \"skein1024-936\" | \"skein1024-944\" | \"skein1024-952\" | \"skein1024-960\" | \"skein1024-968\" | \"skein1024-976\" | \"skein1024-984\" | \"skein1024-992\" | \"skein1024-1000\" | \"skein1024-1008\" | \"skein1024-1016\" | \"skein1024-1024\" | \"poseidon-bls12_381-a2-fc1\" | \"poseidon-bls12_381-a2-fc1-sc\" } HashName\n */\n/**\n * Codes for all available hashes\n *\n * @typedef { 0x00 | 0x11 | 0x12 | 0x13 | 0x14 | 0x15 | 0x16 | 0x17 | 0x18 | 0x19 | 0x1a | 0x1b | 0x1c | 0x1d | 0x1e | 0x22 | 0x23 | 0x56 | 0xd4 | 0xd5 | 0xd6 | 0x1012 | 0x1052 | 0x1053 | 0x1054 | 0x1055 | 0x1100 | 0x1d01 | 0x534d | 0xb201 | 0xb202 | 0xb203 | 0xb204 | 0xb205 | 0xb206 | 0xb207 | 0xb208 | 0xb209 | 0xb20a | 0xb20b | 0xb20c | 0xb20d | 0xb20e | 0xb20f | 0xb210 | 0xb211 | 0xb212 | 0xb213 | 0xb214 | 0xb215 | 0xb216 | 0xb217 | 0xb218 | 0xb219 | 0xb21a | 0xb21b | 0xb21c | 0xb21d | 0xb21e | 0xb21f | 0xb220 | 0xb221 | 0xb222 | 0xb223 | 0xb224 | 0xb225 | 0xb226 | 0xb227 | 0xb228 | 0xb229 | 0xb22a | 0xb22b | 0xb22c | 0xb22d | 0xb22e | 0xb22f | 0xb230 | 0xb231 | 0xb232 | 0xb233 | 0xb234 | 0xb235 | 0xb236 | 0xb237 | 0xb238 | 0xb239 | 0xb23a | 0xb23b | 0xb23c | 0xb23d | 0xb23e | 0xb23f | 0xb240 | 0xb241 | 0xb242 | 0xb243 | 0xb244 | 0xb245 | 0xb246 | 0xb247 | 0xb248 | 0xb249 | 0xb24a | 0xb24b | 0xb24c | 0xb24d | 0xb24e | 0xb24f | 0xb250 | 0xb251 | 0xb252 | 0xb253 | 0xb254 | 0xb255 | 0xb256 | 0xb257 | 0xb258 | 0xb259 | 0xb25a | 0xb25b | 0xb25c | 0xb25d | 0xb25e | 0xb25f | 0xb260 | 0xb301 | 0xb302 | 0xb303 | 0xb304 | 0xb305 | 0xb306 | 0xb307 | 0xb308 | 0xb309 | 0xb30a | 0xb30b | 0xb30c | 0xb30d | 0xb30e | 0xb30f | 0xb310 | 0xb311 | 0xb312 | 0xb313 | 0xb314 | 0xb315 | 0xb316 | 0xb317 | 0xb318 | 0xb319 | 0xb31a | 0xb31b | 0xb31c | 0xb31d | 0xb31e | 0xb31f | 0xb320 | 0xb321 | 0xb322 | 0xb323 | 0xb324 | 0xb325 | 0xb326 | 0xb327 | 0xb328 | 0xb329 | 0xb32a | 0xb32b | 0xb32c | 0xb32d | 0xb32e | 0xb32f | 0xb330 | 0xb331 | 0xb332 | 0xb333 | 0xb334 | 0xb335 | 0xb336 | 0xb337 | 0xb338 | 0xb339 | 0xb33a | 0xb33b | 0xb33c | 0xb33d | 0xb33e | 0xb33f | 0xb340 | 0xb341 | 0xb342 | 0xb343 | 0xb344 | 0xb345 | 0xb346 | 0xb347 | 0xb348 | 0xb349 | 0xb34a | 0xb34b | 0xb34c | 0xb34d | 0xb34e | 0xb34f | 0xb350 | 0xb351 | 0xb352 | 0xb353 | 0xb354 | 0xb355 | 0xb356 | 0xb357 | 0xb358 | 0xb359 | 0xb35a | 0xb35b | 0xb35c | 0xb35d | 0xb35e | 0xb35f | 0xb360 | 0xb361 | 0xb362 | 0xb363 | 0xb364 | 0xb365 | 0xb366 | 0xb367 | 0xb368 | 0xb369 | 0xb36a | 0xb36b | 0xb36c | 0xb36d | 0xb36e | 0xb36f | 0xb370 | 0xb371 | 0xb372 | 0xb373 | 0xb374 | 0xb375 | 0xb376 | 0xb377 | 0xb378 | 0xb379 | 0xb37a | 0xb37b | 0xb37c | 0xb37d | 0xb37e | 0xb37f | 0xb380 | 0xb381 | 0xb382 | 0xb383 | 0xb384 | 0xb385 | 0xb386 | 0xb387 | 0xb388 | 0xb389 | 0xb38a | 0xb38b | 0xb38c | 0xb38d | 0xb38e | 0xb38f | 0xb390 | 0xb391 | 0xb392 | 0xb393 | 0xb394 | 0xb395 | 0xb396 | 0xb397 | 0xb398 | 0xb399 | 0xb39a | 0xb39b | 0xb39c | 0xb39d | 0xb39e | 0xb39f | 0xb3a0 | 0xb3a1 | 0xb3a2 | 0xb3a3 | 0xb3a4 | 0xb3a5 | 0xb3a6 | 0xb3a7 | 0xb3a8 | 0xb3a9 | 0xb3aa | 0xb3ab | 0xb3ac | 0xb3ad | 0xb3ae | 0xb3af | 0xb3b0 | 0xb3b1 | 0xb3b2 | 0xb3b3 | 0xb3b4 | 0xb3b5 | 0xb3b6 | 0xb3b7 | 0xb3b8 | 0xb3b9 | 0xb3ba | 0xb3bb | 0xb3bc | 0xb3bd | 0xb3be | 0xb3bf | 0xb3c0 | 0xb3c1 | 0xb3c2 | 0xb3c3 | 0xb3c4 | 0xb3c5 | 0xb3c6 | 0xb3c7 | 0xb3c8 | 0xb3c9 | 0xb3ca | 0xb3cb | 0xb3cc | 0xb3cd | 0xb3ce | 0xb3cf | 0xb3d0 | 0xb3d1 | 0xb3d2 | 0xb3d3 | 0xb3d4 | 0xb3d5 | 0xb3d6 | 0xb3d7 | 0xb3d8 | 0xb3d9 | 0xb3da | 0xb3db | 0xb3dc | 0xb3dd | 0xb3de | 0xb3df | 0xb3e0 | 0xb401 | 0xb402 } HashCode\n */\n\n/**\n * @type { Record }\n */\nconst names = Object.freeze({\n 'identity': 0x00,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'sha3-512': 0x14,\n 'sha3-384': 0x15,\n 'sha3-256': 0x16,\n 'sha3-224': 0x17,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1a,\n 'keccak-256': 0x1b,\n 'keccak-384': 0x1c,\n 'keccak-512': 0x1d,\n 'blake3': 0x1e,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'dbl-sha2-256': 0x56,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'bmt': 0xd6,\n 'sha2-256-trunc254-padded': 0x1012,\n 'ripemd-128': 0x1052,\n 'ripemd-160': 0x1053,\n 'ripemd-256': 0x1054,\n 'ripemd-320': 0x1055,\n 'x11': 0x1100,\n 'kangarootwelve': 0x1d01,\n 'sm3-256': 0x534d,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'skein256-8': 0xb301,\n 'skein256-16': 0xb302,\n 'skein256-24': 0xb303,\n 'skein256-32': 0xb304,\n 'skein256-40': 0xb305,\n 'skein256-48': 0xb306,\n 'skein256-56': 0xb307,\n 'skein256-64': 0xb308,\n 'skein256-72': 0xb309,\n 'skein256-80': 0xb30a,\n 'skein256-88': 0xb30b,\n 'skein256-96': 0xb30c,\n 'skein256-104': 0xb30d,\n 'skein256-112': 0xb30e,\n 'skein256-120': 0xb30f,\n 'skein256-128': 0xb310,\n 'skein256-136': 0xb311,\n 'skein256-144': 0xb312,\n 'skein256-152': 0xb313,\n 'skein256-160': 0xb314,\n 'skein256-168': 0xb315,\n 'skein256-176': 0xb316,\n 'skein256-184': 0xb317,\n 'skein256-192': 0xb318,\n 'skein256-200': 0xb319,\n 'skein256-208': 0xb31a,\n 'skein256-216': 0xb31b,\n 'skein256-224': 0xb31c,\n 'skein256-232': 0xb31d,\n 'skein256-240': 0xb31e,\n 'skein256-248': 0xb31f,\n 'skein256-256': 0xb320,\n 'skein512-8': 0xb321,\n 'skein512-16': 0xb322,\n 'skein512-24': 0xb323,\n 'skein512-32': 0xb324,\n 'skein512-40': 0xb325,\n 'skein512-48': 0xb326,\n 'skein512-56': 0xb327,\n 'skein512-64': 0xb328,\n 'skein512-72': 0xb329,\n 'skein512-80': 0xb32a,\n 'skein512-88': 0xb32b,\n 'skein512-96': 0xb32c,\n 'skein512-104': 0xb32d,\n 'skein512-112': 0xb32e,\n 'skein512-120': 0xb32f,\n 'skein512-128': 0xb330,\n 'skein512-136': 0xb331,\n 'skein512-144': 0xb332,\n 'skein512-152': 0xb333,\n 'skein512-160': 0xb334,\n 'skein512-168': 0xb335,\n 'skein512-176': 0xb336,\n 'skein512-184': 0xb337,\n 'skein512-192': 0xb338,\n 'skein512-200': 0xb339,\n 'skein512-208': 0xb33a,\n 'skein512-216': 0xb33b,\n 'skein512-224': 0xb33c,\n 'skein512-232': 0xb33d,\n 'skein512-240': 0xb33e,\n 'skein512-248': 0xb33f,\n 'skein512-256': 0xb340,\n 'skein512-264': 0xb341,\n 'skein512-272': 0xb342,\n 'skein512-280': 0xb343,\n 'skein512-288': 0xb344,\n 'skein512-296': 0xb345,\n 'skein512-304': 0xb346,\n 'skein512-312': 0xb347,\n 'skein512-320': 0xb348,\n 'skein512-328': 0xb349,\n 'skein512-336': 0xb34a,\n 'skein512-344': 0xb34b,\n 'skein512-352': 0xb34c,\n 'skein512-360': 0xb34d,\n 'skein512-368': 0xb34e,\n 'skein512-376': 0xb34f,\n 'skein512-384': 0xb350,\n 'skein512-392': 0xb351,\n 'skein512-400': 0xb352,\n 'skein512-408': 0xb353,\n 'skein512-416': 0xb354,\n 'skein512-424': 0xb355,\n 'skein512-432': 0xb356,\n 'skein512-440': 0xb357,\n 'skein512-448': 0xb358,\n 'skein512-456': 0xb359,\n 'skein512-464': 0xb35a,\n 'skein512-472': 0xb35b,\n 'skein512-480': 0xb35c,\n 'skein512-488': 0xb35d,\n 'skein512-496': 0xb35e,\n 'skein512-504': 0xb35f,\n 'skein512-512': 0xb360,\n 'skein1024-8': 0xb361,\n 'skein1024-16': 0xb362,\n 'skein1024-24': 0xb363,\n 'skein1024-32': 0xb364,\n 'skein1024-40': 0xb365,\n 'skein1024-48': 0xb366,\n 'skein1024-56': 0xb367,\n 'skein1024-64': 0xb368,\n 'skein1024-72': 0xb369,\n 'skein1024-80': 0xb36a,\n 'skein1024-88': 0xb36b,\n 'skein1024-96': 0xb36c,\n 'skein1024-104': 0xb36d,\n 'skein1024-112': 0xb36e,\n 'skein1024-120': 0xb36f,\n 'skein1024-128': 0xb370,\n 'skein1024-136': 0xb371,\n 'skein1024-144': 0xb372,\n 'skein1024-152': 0xb373,\n 'skein1024-160': 0xb374,\n 'skein1024-168': 0xb375,\n 'skein1024-176': 0xb376,\n 'skein1024-184': 0xb377,\n 'skein1024-192': 0xb378,\n 'skein1024-200': 0xb379,\n 'skein1024-208': 0xb37a,\n 'skein1024-216': 0xb37b,\n 'skein1024-224': 0xb37c,\n 'skein1024-232': 0xb37d,\n 'skein1024-240': 0xb37e,\n 'skein1024-248': 0xb37f,\n 'skein1024-256': 0xb380,\n 'skein1024-264': 0xb381,\n 'skein1024-272': 0xb382,\n 'skein1024-280': 0xb383,\n 'skein1024-288': 0xb384,\n 'skein1024-296': 0xb385,\n 'skein1024-304': 0xb386,\n 'skein1024-312': 0xb387,\n 'skein1024-320': 0xb388,\n 'skein1024-328': 0xb389,\n 'skein1024-336': 0xb38a,\n 'skein1024-344': 0xb38b,\n 'skein1024-352': 0xb38c,\n 'skein1024-360': 0xb38d,\n 'skein1024-368': 0xb38e,\n 'skein1024-376': 0xb38f,\n 'skein1024-384': 0xb390,\n 'skein1024-392': 0xb391,\n 'skein1024-400': 0xb392,\n 'skein1024-408': 0xb393,\n 'skein1024-416': 0xb394,\n 'skein1024-424': 0xb395,\n 'skein1024-432': 0xb396,\n 'skein1024-440': 0xb397,\n 'skein1024-448': 0xb398,\n 'skein1024-456': 0xb399,\n 'skein1024-464': 0xb39a,\n 'skein1024-472': 0xb39b,\n 'skein1024-480': 0xb39c,\n 'skein1024-488': 0xb39d,\n 'skein1024-496': 0xb39e,\n 'skein1024-504': 0xb39f,\n 'skein1024-512': 0xb3a0,\n 'skein1024-520': 0xb3a1,\n 'skein1024-528': 0xb3a2,\n 'skein1024-536': 0xb3a3,\n 'skein1024-544': 0xb3a4,\n 'skein1024-552': 0xb3a5,\n 'skein1024-560': 0xb3a6,\n 'skein1024-568': 0xb3a7,\n 'skein1024-576': 0xb3a8,\n 'skein1024-584': 0xb3a9,\n 'skein1024-592': 0xb3aa,\n 'skein1024-600': 0xb3ab,\n 'skein1024-608': 0xb3ac,\n 'skein1024-616': 0xb3ad,\n 'skein1024-624': 0xb3ae,\n 'skein1024-632': 0xb3af,\n 'skein1024-640': 0xb3b0,\n 'skein1024-648': 0xb3b1,\n 'skein1024-656': 0xb3b2,\n 'skein1024-664': 0xb3b3,\n 'skein1024-672': 0xb3b4,\n 'skein1024-680': 0xb3b5,\n 'skein1024-688': 0xb3b6,\n 'skein1024-696': 0xb3b7,\n 'skein1024-704': 0xb3b8,\n 'skein1024-712': 0xb3b9,\n 'skein1024-720': 0xb3ba,\n 'skein1024-728': 0xb3bb,\n 'skein1024-736': 0xb3bc,\n 'skein1024-744': 0xb3bd,\n 'skein1024-752': 0xb3be,\n 'skein1024-760': 0xb3bf,\n 'skein1024-768': 0xb3c0,\n 'skein1024-776': 0xb3c1,\n 'skein1024-784': 0xb3c2,\n 'skein1024-792': 0xb3c3,\n 'skein1024-800': 0xb3c4,\n 'skein1024-808': 0xb3c5,\n 'skein1024-816': 0xb3c6,\n 'skein1024-824': 0xb3c7,\n 'skein1024-832': 0xb3c8,\n 'skein1024-840': 0xb3c9,\n 'skein1024-848': 0xb3ca,\n 'skein1024-856': 0xb3cb,\n 'skein1024-864': 0xb3cc,\n 'skein1024-872': 0xb3cd,\n 'skein1024-880': 0xb3ce,\n 'skein1024-888': 0xb3cf,\n 'skein1024-896': 0xb3d0,\n 'skein1024-904': 0xb3d1,\n 'skein1024-912': 0xb3d2,\n 'skein1024-920': 0xb3d3,\n 'skein1024-928': 0xb3d4,\n 'skein1024-936': 0xb3d5,\n 'skein1024-944': 0xb3d6,\n 'skein1024-952': 0xb3d7,\n 'skein1024-960': 0xb3d8,\n 'skein1024-968': 0xb3d9,\n 'skein1024-976': 0xb3da,\n 'skein1024-984': 0xb3db,\n 'skein1024-992': 0xb3dc,\n 'skein1024-1000': 0xb3dd,\n 'skein1024-1008': 0xb3de,\n 'skein1024-1016': 0xb3df,\n 'skein1024-1024': 0xb3e0,\n 'poseidon-bls12_381-a2-fc1': 0xb401,\n 'poseidon-bls12_381-a2-fc1-sc': 0xb402\n})\n\nmodule.exports = { names }\n","/**\n * Multihash implementation in JavaScript.\n */\n'use strict'\n\nconst multibase = require('multibase')\nconst varint = require('varint')\nconst { names } = require('./constants')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\n\nconst codes = /** @type {import('./types').CodeNameMap} */({})\n\n// eslint-disable-next-line guard-for-in\nfor (const key in names) {\n const name = /** @type {HashName} */(key)\n codes[names[name]] = name\n}\nObject.freeze(codes)\n\n/**\n * Convert the given multihash to a hex encoded string.\n *\n * @param {Uint8Array} hash\n * @returns {string}\n */\nfunction toHexString (hash) {\n if (!(hash instanceof Uint8Array)) {\n throw new Error('must be passed a Uint8Array')\n }\n\n return uint8ArrayToString(hash, 'base16')\n}\n\n/**\n * Convert the given hex encoded string to a multihash.\n *\n * @param {string} hash\n * @returns {Uint8Array}\n */\nfunction fromHexString (hash) {\n return uint8ArrayFromString(hash, 'base16')\n}\n\n/**\n * Convert the given multihash to a base58 encoded string.\n *\n * @param {Uint8Array} hash\n * @returns {string}\n */\nfunction toB58String (hash) {\n if (!(hash instanceof Uint8Array)) {\n throw new Error('must be passed a Uint8Array')\n }\n\n return uint8ArrayToString(multibase.encode('base58btc', hash)).slice(1)\n}\n\n/**\n * Convert the given base58 encoded string to a multihash.\n *\n * @param {string|Uint8Array} hash\n * @returns {Uint8Array}\n */\nfunction fromB58String (hash) {\n const encoded = hash instanceof Uint8Array\n ? uint8ArrayToString(hash)\n : hash\n\n return multibase.decode('z' + encoded)\n}\n\n/**\n * Decode a hash from the given multihash.\n *\n * @param {Uint8Array} bytes\n * @returns {{code: HashCode, name: HashName, length: number, digest: Uint8Array}} result\n */\nfunction decode (bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new Error('multihash must be a Uint8Array')\n }\n\n if (bytes.length < 2) {\n throw new Error('multihash too short. must be > 2 bytes.')\n }\n\n const code = /** @type {HashCode} */(varint.decode(bytes))\n if (!isValidCode(code)) {\n throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\n }\n bytes = bytes.slice(varint.decode.bytes)\n\n const len = varint.decode(bytes)\n if (len < 0) {\n throw new Error(`multihash invalid length: ${len}`)\n }\n bytes = bytes.slice(varint.decode.bytes)\n\n if (bytes.length !== len) {\n throw new Error(`multihash length inconsistent: 0x${uint8ArrayToString(bytes, 'base16')}`)\n }\n\n return {\n code,\n name: codes[code],\n length: len,\n digest: bytes\n }\n}\n\n/**\n * Encode a hash digest along with the specified function code.\n *\n * > **Note:** the length is derived from the length of the digest itself.\n *\n * @param {Uint8Array} digest\n * @param {HashName | HashCode} code\n * @param {number} [length]\n * @returns {Uint8Array}\n */\nfunction encode (digest, code, length) {\n if (!digest || code === undefined) {\n throw new Error('multihash encode requires at least two args: digest, code')\n }\n\n // ensure it's a hashfunction code.\n const hashfn = coerceCode(code)\n\n if (!(digest instanceof Uint8Array)) {\n throw new Error('digest should be a Uint8Array')\n }\n\n if (length == null) {\n length = digest.length\n }\n\n if (length && digest.length !== length) {\n throw new Error('digest length should be equal to specified length.')\n }\n\n const hash = varint.encode(hashfn)\n const len = varint.encode(length)\n return uint8ArrayConcat([hash, len, digest], hash.length + len.length + digest.length)\n}\n\n/**\n * Converts a hash function name into the matching code.\n * If passed a number it will return the number if it's a valid code.\n *\n * @param {HashName | number} name\n * @returns {number}\n */\nfunction coerceCode (name) {\n let code = name\n\n if (typeof name === 'string') {\n if (names[name] === undefined) {\n throw new Error(`Unrecognized hash function named: ${name}`)\n }\n code = names[name]\n }\n\n if (typeof code !== 'number') {\n throw new Error(`Hash function code should be a number. Got: ${code}`)\n }\n\n // @ts-ignore\n if (codes[code] === undefined && !isAppCode(code)) {\n throw new Error(`Unrecognized function code: ${code}`)\n }\n\n return code\n}\n\n/**\n * Checks if a code is part of the app range\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction isAppCode (code) {\n return code > 0 && code < 0x10\n}\n\n/**\n * Checks whether a multihash code is valid.\n *\n * @param {HashCode} code\n * @returns {boolean}\n */\nfunction isValidCode (code) {\n if (isAppCode(code)) {\n return true\n }\n\n if (codes[code]) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\n *\n * @param {Uint8Array} multihash\n * @returns {void}\n * @throws {Error}\n */\nfunction validate (multihash) {\n decode(multihash) // throws if bad.\n}\n\n/**\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\n *\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n * @throws {Error}\n */\nfunction prefix (multihash) {\n validate(multihash)\n\n return multihash.subarray(0, 2)\n}\n\nmodule.exports = {\n names,\n codes,\n toHexString,\n fromHexString,\n toB58String,\n fromB58String,\n decode,\n encode,\n coerceCode,\n isAppCode,\n validate,\n prefix,\n isValidCode\n}\n\n/**\n * @typedef { import(\"./constants\").HashCode } HashCode\n * @typedef { import(\"./constants\").HashName } HashName\n */\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 encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n data = encodeUtf8(data)\n }\n this.data = new Uint8Array(data)\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 : ''\n\n const path =\n ''\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 = '' + bg + path + '\\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';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\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 || ''\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","/**\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;cb}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||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",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\"+b.valueOf().toString()+\"\";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>>=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;0c;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=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)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=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\"),0Tf||(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>=g;e-=g;rg=1<<32-oc(b)+e|c<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(;ww?(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&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(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=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(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=zh(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);th(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=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);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(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(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 Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(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,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();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=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\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;Aj(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;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(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=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&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 Jj(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 Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);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(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(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 Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(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:Lg(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=Oj;Oj=!1;return n}\nfunction Qj(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&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(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 Sj(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 Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(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 Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(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 Wj(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(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(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(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(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=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=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)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(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)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(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*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=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;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(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);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();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,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(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:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(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=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(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),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(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(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(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=ch(-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);Sg(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);Sg(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}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(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 al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(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 wh(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 yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(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 qj(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 Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(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 bl(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 cl(a,b,c,d,e,f,g,h,k){a=new bl(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};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(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()-Qa||125d?(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","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\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\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/*! *****************************************************************************\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","export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n","/**\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","'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","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;","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\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)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","'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","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","export default function _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}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function 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}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array 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(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.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// Polyfill for Safari 14\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// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\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 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 { SHA2 } from './_sha2.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// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\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 (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst 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);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = 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());\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 | 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, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\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\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\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 if (!u8a(bytes)) throw new Error('Uint8Array expected');\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/**\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 len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\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 if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\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> = Hash & {\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(\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;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\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, T extends Object>(\n hashCons: (opts?: T) => Hash\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, T extends Object>(\n hashCons: (opts?: T) => HashXOF\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 throw new Error('crypto.getRandomValues must be defined');\n}\n","export const ChainToPublicRpc: Record = {\n Ethereum: \"https://ethereum.rpc.thirdweb.com\",\n Goerli: \"https://goerli.rpc.thirdweb.com\",\n Mumbai: \"https://mumbai.rpc.thirdweb.com\",\n Polygon: \"https://polygon.rpc.thirdweb.com\",\n Avalanche: \"https://avalanche.rpc.thirdweb.com\",\n Optimism: \"https://optimism.rpc.thirdweb.com\",\n OptimismGoerli: \"https://optimism-goerli.rpc.thirdweb.com\",\n BSC: \"https://binance.rpc.thirdweb.com\",\n BSCTestnet: \"https://binance-testnet.rpc.thirdweb.com\",\n ArbitrumOne: \"https://arbitrum.rpc.thirdweb.com\",\n ArbitrumGoerli: \"https://arbitrum-goerli.rpc.thirdweb.com\",\n Fantom: \"https://fantom.rpc.thirdweb.com\",\n FantomTestnet: \"https://fantom-testnet.rpc.thirdweb.com\",\n Sepolia: \"https://sepolia.rpc.thirdweb.com\",\n AvalancheFuji: \"https://avalanche-fuji.rpc.thirdweb.com\",\n};\n\nexport const ChainIdToChain: Record = {\n 1: \"Ethereum\",\n 5: \"Goerli\",\n 80001: \"Mumbai\",\n 137: \"Polygon\",\n 43114: \"Avalanche\",\n 10: \"Optimism\",\n 420: \"OptimismGoerli\",\n 56: \"BSC\",\n 97: \"BSCTestnet\",\n 42161: \"ArbitrumOne\",\n 421613: \"ArbitrumGoerli\",\n 250: \"Fantom\",\n 4002: \"FantomTestnet\",\n 11155111: \"Sepolia\",\n 43113: \"AvalancheFuji\",\n};\n\n// General Embedded wallet types\nexport type Chain =\n | \"Polygon\"\n | \"Mumbai\"\n | \"Goerli\"\n | \"Ethereum\"\n | \"Avalanche\"\n | \"Optimism\"\n | \"OptimismGoerli\"\n | \"BSC\"\n | \"BSCTestnet\"\n | \"ArbitrumOne\"\n | \"ArbitrumGoerli\"\n | \"Fantom\"\n | \"FantomTestnet\"\n | \"Sepolia\"\n | \"AvalancheFuji\";\n\nexport type SupportedChainName = Chain | \"Rinkeby\" | \"Solana\" | \"SolanaDevnet\";\n","const isDev = (): boolean => {\n return !!(\n typeof window !== \"undefined\" &&\n window.localStorage.getItem(\"IS_PAPER_DEV\") === \"true\"\n );\n};\n\nconst isOldPaperDomain = (): boolean =>\n typeof window !== \"undefined\" && window.location.origin.includes(\"paper.xyz\");\n\nexport const getPaperOriginUrl = (): string => {\n if (isDev())\n return (\n window.localStorage.getItem(\"PAPER_DEV_URL\") ?? \"http://localhost:3000\"\n );\n\n if (isOldPaperDomain()) return window.location.origin;\n\n return \"https://withpaper.com\";\n};\n","function composeEventHandlers(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\ntype PossibleRef = React.Ref | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef(ref: PossibleRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject).current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs(...refs: PossibleRef[]) {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs(...refs: PossibleRef[]) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\n\nfunction createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext(defaultContext);\n\n function Provider(props: ContextValueType & { children: React.ReactNode }) {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope = { [scopeName: string]: React.Context[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n function Provider(\n props: ContextValueType & { scope: Scope; children: React.ReactNode }\n ) {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName][index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string, scope: Scope) {\n const Context = scope?.[scopeName][index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set(),\n layersWithOutsidePointerEventsDisabled: new Set(),\n branches: new Set(),\n});\n\ntype DismissableLayerElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n \n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ElementRef;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return ;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown);\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown);\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)['useId'.toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","const 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 return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\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 continue;\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 ...rects.floating,\n x,\n y\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 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 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 if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\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$map$so;\n const placement = (_overflowsData$map$so = overflowsData.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$map$so[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.\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: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\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 }\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 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 overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function 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 ? void 0 : (_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 return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (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 isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\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 {\n currentNode = getParentNode(currentNode);\n }\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.pageXOffset,\n scrollTop: element.pageYOffset\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 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, 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 currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\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 currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\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 if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\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 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,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` 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 ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\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' ? 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 return getCssDimensions(element);\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 offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\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 return element.offsetParent;\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 window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\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 clearTimeout(timeoutId);\n io && 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 timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\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