From acb60c115226c3bcbb5ce2207276fa3b2b116cfe Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Fri, 20 Dec 2024 15:56:18 +0900 Subject: [PATCH 1/8] Add more logs to the relayer --- packages/relayer/src/core.rs | 34 +++- packages/relayer/src/modules/dkim.rs | 1 + .../src/modules/web_server/rest_api.rs | 156 ++++++++++++++++-- 3 files changed, 179 insertions(+), 12 deletions(-) diff --git a/packages/relayer/src/core.rs b/packages/relayer/src/core.rs index 0af3d6e..09f3bb7 100644 --- a/packages/relayer/src/core.rs +++ b/packages/relayer/src/core.rs @@ -35,6 +35,7 @@ pub async fn handle_email(email: String) -> Result { let padded_from_addr = PaddedEmailAddr::from_email_addr(&guardian_email_addr); trace!(LOG, "From address: {}", guardian_email_addr); let email_body = parsed_email.get_cleaned_body()?; + trace!(LOG, "Email body: {}", email_body); let request_def_path = PathBuf::from(REGEX_JSON_DIR_PATH.get().unwrap()).join("request_def.json"); @@ -53,6 +54,7 @@ pub async fn handle_email(email: String) -> Result { } info!(LOG, "Request idxes: {:?}", request_idxes); let request_id = &email[request_idxes[0].0..request_idxes[0].1]; + info!(LOG, "Request ID: {}", request_id); let request_id_u32 = request_id .parse::() .map_err(|e| EmailError::Parse(format!("Failed to parse request_id to u64: {}", e)))?; @@ -70,7 +72,14 @@ pub async fn handle_email(email: String) -> Result { }); } }; + trace!(LOG, "Request: {:?}", request); if request.guardian_email_addr != guardian_email_addr { + error!( + LOG, + "Guardian email address in the request {} is not equal to the one in the email {}", + request.guardian_email_addr, + guardian_email_addr + ); return Err(EmailError::EmailAddress(format!( "Guardian email address in the request {} is not equal to the one in the email {}", request.guardian_email_addr, guardian_email_addr @@ -84,6 +93,7 @@ pub async fn handle_email(email: String) -> Result { "The user of the wallet address {} and the email address {} is not registered.", request.account_eth_addr, guardian_email_addr )))?; + trace!(LOG, "Account code: {}", account_code_str); check_and_update_dkim( &email, @@ -99,6 +109,7 @@ pub async fn handle_email(email: String) -> Result { Ok(code) => Some(code), Err(_) => None, }; + trace!(LOG, "Invitation code: {:?}", invitation_code); let params = EmailRequestContext { request, @@ -128,6 +139,12 @@ async fn handle_email_request( match (invitation_code, params.request.is_for_recovery) { (Some(invitation_code), is_for_recovery) if !is_for_recovery => { if params.account_code_str != invitation_code { + error!( + LOG, + "Stored account code is not equal to one in the email. Stored: {}, Email: {}", + params.account_code_str, + invitation_code + ); return Err(EmailError::Body(format!( "Stored account code is not equal to one in the email. Stored: {}, Email: {}", params.account_code_str, invitation_code @@ -191,6 +208,7 @@ async fn accept( params.request.template_idx, ) .await?; + info!(LOG, "Is accepted: {}", is_accepted); update_request( ¶ms, @@ -209,6 +227,7 @@ async fn accept( is_set: true, }; DB.update_credentials_of_account_code(&creds).await?; + trace!(LOG, "Credentials updated: {:?}", creds); Ok(EmailAuthEvent::AcceptanceSuccess { account_eth_addr: params.request.account_eth_addr, @@ -219,6 +238,12 @@ async fn accept( }) } else { let original_subject = params.parsed_email.get_subject_all()?; + error!( + LOG, + "Failed to handle acceptance for request_id: {}. Original subject: {}", + params.request.request_id, + original_subject + ); Ok(EmailAuthEvent::Error { email_addr: params.request.guardian_email_addr.clone(), error: "Failed to handle acceptance".to_string(), @@ -255,7 +280,7 @@ async fn recover(params: EmailRequestContext) -> Result Result Result, ) -> Result, ApiError> { + trace!(LOG, "Request status API input: {:?}", payload); let row = DB.get_request(payload.request_id).await?; // Determine the status based on the retrieved row @@ -33,6 +34,7 @@ pub async fn request_status_api( } else { RequestStatus::NotExist }; + trace!(LOG, "Request status API status: {:?}", status); Ok(Json(RequestStatusResponse { request_id: payload.request_id, @@ -57,13 +59,24 @@ pub async fn request_status_api( pub async fn handle_acceptance_request( Json(payload): Json, ) -> Result, ApiError> { + trace!(LOG, "Acceptance request API input: {:?}", payload); let command_template = CLIENT .get_acceptance_command_templates(&payload.controller_eth_addr, payload.template_idx) .await?; + trace!( + LOG, + "Acceptance request API command template: {:?}", + command_template + ); // Extract and validate command parameters let command_params = extract_template_vals_from_command(&payload.command, command_template) .map_err(|_| ApiError::Validation("Invalid command".to_string()))?; + trace!( + LOG, + "Acceptance request API command params: {:?}", + command_params + ); // Recover the account address let account_eth_addr = CLIENT @@ -73,11 +86,20 @@ pub async fn handle_acceptance_request( payload.template_idx, ) .await?; + trace!( + LOG, + "Acceptance request API account eth addr: {:?}", + account_eth_addr + ); let account_eth_addr = format!("0x{:x}", account_eth_addr); // Check if the wallet is deployed if !CLIENT.is_wallet_deployed(&account_eth_addr).await? { + error!( + LOG, + "Acceptance request API account {} not deployed", account_eth_addr + ); return Err(ApiError::Validation("Wallet not deployed".to_string())); } @@ -131,6 +153,10 @@ pub async fn handle_acceptance_request( // Check if the account code is already used if let Ok(Some(creds)) = DB.get_credentials(&account_code).await { + error!( + LOG, + "Acceptance request API account code {} already used", account_code + ); return Err(ApiError::Validation( "Account code already used".to_string(), )); @@ -141,8 +167,10 @@ pub async fn handle_acceptance_request( while let Ok(Some(request)) = DB.get_request(request_id).await { request_id = rand::thread_rng().gen::(); } + trace!(LOG, "Acceptance request API request ID: {:?}", request_id); let account_salt = calculate_account_salt(&payload.guardian_email_addr, &account_code); + trace!(LOG, "Acceptance request API account salt: {}", account_salt); DB.insert_request(&Request { request_id, @@ -163,6 +191,12 @@ pub async fn handle_acceptance_request( .is_guardian_set(&account_eth_addr, &payload.guardian_email_addr) .await? { + error!( + LOG, + "Acceptance request API guardian {} already set for {}", + payload.guardian_email_addr, + account_eth_addr + ); handle_email_event(EmailAuthEvent::GuardianAlreadyExists { account_eth_addr, guardian_email_addr: payload.guardian_email_addr.clone(), @@ -174,6 +208,12 @@ pub async fn handle_acceptance_request( .is_wallet_and_email_registered(&account_eth_addr, &payload.guardian_email_addr) .await? { + error!( + LOG, + "Acceptance request API account {} and email {} already registered", + account_eth_addr, + payload.guardian_email_addr + ); // Update credentials and send acceptance request email DB.update_credentials_of_wallet_and_email(&Credentials { account_code: account_code.clone(), @@ -192,6 +232,12 @@ pub async fn handle_acceptance_request( }) .await?; } else { + trace!( + LOG, + "Acceptance request API account {} and email {} are registered", + account_eth_addr, + payload.guardian_email_addr + ); // Insert new credentials and send acceptance request email DB.insert_credentials(&Credentials { account_code: account_code.clone(), @@ -229,14 +275,25 @@ pub async fn handle_acceptance_request( pub async fn handle_recovery_request( Json(payload): Json, ) -> Result, ApiError> { + trace!(LOG, "Recovery request API input: {:?}", payload); // Fetch the command template let command_template = CLIENT .get_recovery_command_templates(&payload.controller_eth_addr, payload.template_idx) .await?; + trace!( + LOG, + "Recovery request API command template: {:?}", + command_template + ); // Extract and validate command parameters let command_params = extract_template_vals_from_command(&payload.command, command_template) .map_err(|_| ApiError::Validation("Invalid command".to_string()))?; + trace!( + LOG, + "Recovery request API command params: {:?}", + command_params + ); // Recover the account address let account_eth_addr = CLIENT @@ -248,9 +305,18 @@ pub async fn handle_recovery_request( .await?; let account_eth_addr = format!("0x{:x}", account_eth_addr); + trace!( + LOG, + "Recovery request API account eth addr: {:?}", + account_eth_addr + ); // Check if the wallet is deployed if !CLIENT.is_wallet_deployed(&account_eth_addr).await? { + error!( + LOG, + "Recovery request API account {} not deployed", account_eth_addr + ); return Err(ApiError::Validation("Wallet not deployed".to_string())); } @@ -302,14 +368,26 @@ pub async fn handle_recovery_request( while let Ok(Some(request)) = DB.get_request(request_id).await { request_id = rand::thread_rng().gen::(); } + trace!(LOG, "Recovery request API request ID: {:?}", request_id); // Fetch account details and calculate account salt let account = DB .get_credentials_from_wallet_and_email(&account_eth_addr, &payload.guardian_email_addr) .await?; let account_salt = if let Some(account_details) = account { + trace!( + LOG, + "Recovery request API account details: {:?}", + account_details + ); calculate_account_salt(&payload.guardian_email_addr, &account_details.account_code) } else { + error!( + LOG, + "Recovery request API account {} and email {} not registered", + account_eth_addr, + payload.guardian_email_addr + ); return Err(ApiError::Validation("Wallet not deployed".to_string())); }; @@ -318,6 +396,12 @@ pub async fn handle_recovery_request( .is_wallet_and_email_registered(&account_eth_addr, &payload.guardian_email_addr) .await? { + error!( + LOG, + "Recovery request API account {} and email {} not registered", + account_eth_addr, + payload.guardian_email_addr + ); DB.insert_request(&Request { request_id, account_eth_addr: account_eth_addr.clone(), @@ -366,6 +450,12 @@ pub async fn handle_recovery_request( .is_guardian_set(&account_eth_addr, &payload.guardian_email_addr) .await? { + trace!( + LOG, + "Recovery request API for account {} and guardian {}", + account_eth_addr, + payload.guardian_email_addr, + ); handle_email_event(EmailAuthEvent::RecoveryRequest { account_eth_addr, guardian_email_addr: payload.guardian_email_addr.clone(), @@ -376,6 +466,12 @@ pub async fn handle_recovery_request( // TODO: Add custom error for handle_email_event .expect("Failed to send Recovery event"); } else { + error!( + LOG, + "Recovery request API guardian {} not set for {}", + payload.guardian_email_addr, + account_eth_addr + ); handle_email_event(EmailAuthEvent::GuardianNotSet { account_eth_addr, guardian_email_addr: payload.guardian_email_addr.clone(), @@ -403,8 +499,13 @@ pub async fn handle_recovery_request( pub async fn handle_complete_recovery_request( Json(payload): Json, ) -> Result { + trace!(LOG, "Complete recovery request API input: {:?}", payload); // Check if the wallet is deployed if !CLIENT.is_wallet_deployed(&payload.account_eth_addr).await? { + error!( + LOG, + "Complete recovery request API account {} not deployed", payload.account_eth_addr + ); return Err(ApiError::Validation("Wallet not deployed".to_string())); } @@ -417,8 +518,22 @@ pub async fn handle_complete_recovery_request( ) .await { - Ok(true) => Ok("Recovery completed".to_string()), - Ok(false) => Err(ApiError::Validation("Recovery failed".to_string())), + Ok(true) => { + trace!( + LOG, + "Complete recovery request API recovery completed for account {}", + payload.account_eth_addr + ); + Ok("Recovery completed".to_string()) + } + Ok(false) => { + error!( + LOG, + "Complete recovery request API recovery failed for account {}", + payload.account_eth_addr + ); + Err(ApiError::Validation("Recovery failed".to_string())) + } Err(e) => { // Parse the error message if it follows the known format let error_message = if e @@ -434,6 +549,10 @@ pub async fn handle_complete_recovery_request( .chars() .filter(|c| c.is_ascii()) .collect::(); + error!( + LOG, + "Complete recovery request API error: {}", error_message, + ); Err(ApiError::Internal(error_message)) } } @@ -451,7 +570,9 @@ pub async fn handle_complete_recovery_request( pub async fn get_account_salt( Json(payload): Json, ) -> Result { + trace!(LOG, "Get account salt API input: {:?}", payload); let account_salt = calculate_account_salt(&payload.email_addr, &payload.account_code); + trace!(LOG, "Get account salt API account salt: {}", account_salt); Ok(account_salt) } @@ -467,12 +588,22 @@ pub async fn get_account_salt( pub async fn inactive_guardian( Json(payload): Json, ) -> Result { + trace!(LOG, "Inactive guardian API input: {:?}", payload); // Check if the wallet is activated let is_activated = CLIENT .get_is_activated(&payload.controller_eth_addr, &payload.account_eth_addr) .await?; + trace!( + LOG, + "Inactive guardian API is activated: {:?}", + is_activated + ); if is_activated { + error!( + LOG, + "Inactive guardian API wallet {} is activated", payload.account_eth_addr + ); return Ok("Wallet is activated".to_string()); } @@ -561,10 +692,13 @@ pub async fn receive_email_api_fn(email: String) -> Result<(), ApiError> { } }, Err(e) => { - error!(LOG, "Error handling email: {:?}", e); let original_subject = parsed_email .get_subject_all() .unwrap_or("Unknown Error".to_string()); + error!( + LOG, + "Error handling email for the original subject {}: {:?}", original_subject, e + ); match handle_email_event(EmailAuthEvent::Error { email_addr: from_addr, error: e.to_string(), @@ -587,14 +721,14 @@ pub async fn receive_email_api_fn(email: String) -> Result<(), ApiError> { } /// Request status request structure. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct RequestStatusRequest { /// The unique identifier for the request. pub request_id: u32, } /// Enum representing the possible statuses of a request. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub enum RequestStatus { /// The request does not exist. NotExist = 0, @@ -620,7 +754,7 @@ pub struct RequestStatusResponse { } /// Request structure for an acceptance request. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct AcceptanceRequest { /// The Ethereum address of the controller. pub controller_eth_addr: String, @@ -635,7 +769,7 @@ pub struct AcceptanceRequest { } /// Response structure for an acceptance request. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct AcceptanceResponse { /// The unique identifier for the request. pub request_id: u32, @@ -657,7 +791,7 @@ pub struct RecoveryRequest { } /// Response structure for a recovery request. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct RecoveryResponse { /// The unique identifier for the request. pub request_id: u32, @@ -666,7 +800,7 @@ pub struct RecoveryResponse { } /// Request structure for completing a recovery. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct CompleteRecoveryRequest { /// The Ethereum address of the account to recover. pub account_eth_addr: String, @@ -677,7 +811,7 @@ pub struct CompleteRecoveryRequest { } /// Request structure for retrieving an account salt. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct GetAccountSaltRequest { /// The unique account code. pub account_code: String, @@ -701,7 +835,7 @@ struct PermittedWallet { } /// Request structure for marking a guardian as inactive. -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct InactiveGuardianRequest { /// The Ethereum address of the account. pub account_eth_addr: String, From 0264c479704feefd3d98f51c4b5d3e78d519f922 Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Fri, 20 Dec 2024 20:29:40 +0900 Subject: [PATCH 2/8] Update SIGN_CHARGED_CYCLE --- packages/relayer/src/modules/dkim.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relayer/src/modules/dkim.rs b/packages/relayer/src/modules/dkim.rs index 60f53fc..964bd30 100644 --- a/packages/relayer/src/modules/dkim.rs +++ b/packages/relayer/src/modules/dkim.rs @@ -17,7 +17,7 @@ use ic_utils::canister::*; use ic_utils::interfaces::WalletCanister; use serde::Deserialize; -pub const SIGN_CHARGED_CYCLE: u128 = 39_246_898_590; +pub const SIGN_CHARGED_CYCLE: u128 = 85_414_812_012; /// Represents a client for interacting with the DKIM Oracle. #[derive(Debug, Clone)] From 2f67632204e8a507c0a7d4c47ef245a319209a91 Mon Sep 17 00:00:00 2001 From: John Guilding Date: Fri, 27 Dec 2024 12:31:22 +1000 Subject: [PATCH 3/8] Revert "refactor: remove unused functions" This reverts commit 9d736ee382adba300b4d81f441aaf7123c24a259. --- .../script/DeployRecoveryController.s.sol | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/packages/contracts/script/DeployRecoveryController.s.sol b/packages/contracts/script/DeployRecoveryController.s.sol index 6243da8..0ee1f09 100644 --- a/packages/contracts/script/DeployRecoveryController.s.sol +++ b/packages/contracts/script/DeployRecoveryController.s.sol @@ -6,7 +6,10 @@ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import {SimpleWallet} from "../test/helpers/SimpleWallet.sol"; import {RecoveryController} from "../test/helpers/RecoveryController.sol"; import {Verifier} from "../src/utils/Verifier.sol"; +import {Groth16Verifier} from "../src/utils/Groth16Verifier.sol"; +import {ECDSAOwnedDKIMRegistry} from "../src/utils/ECDSAOwnedDKIMRegistry.sol"; import {EmailAuth} from "../src/EmailAuth.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {UserOverrideableDKIMRegistry} from "@zk-email/contracts/UserOverrideableDKIMRegistry.sol"; import {BaseDeployScript} from "./BaseDeployScript.sol"; import {SafeSingletonDeployer} from "safe-singleton-deployer/SafeSingletonDeployer.sol"; @@ -35,6 +38,31 @@ contract Deploy is BaseDeployScript { ); } + function deployDKIMRegistry( + uint256 deployerPrivateKey, + address initialOwner + ) private returns (address) { + address dkimSigner = vm.envAddress("DKIM_SIGNER"); + if (dkimSigner == address(0)) { + revert("DKIM_SIGNER env var not set"); + } + + uint256 timeDelay = vm.envOr("DKIM_DELAY", uint256(0)); + console.log("DKIM_DELAY: %s", timeDelay); + + return + deploySingleton( + deployerPrivateKey, + type(UserOverrideableDKIMRegistry).creationCode, + abi.encode(initialOwner, dkimSigner, timeDelay), + keccak256("DKIM_REGISTRY") + ); + } + + function logDeployment(string memory name, address addr) private view { + console.log("%s: %s", name, addr); + } + function run() public override { super.run(); uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); @@ -43,18 +71,9 @@ contract Deploy is BaseDeployScript { // Deploy User-overrideable DKIM registry dkim = vm.envOr("DKIM", address(0)); if (dkim == address(0)) { - address dkimSigner = vm.envAddress("DKIM_SIGNER"); - require(dkimSigner != address(0), "DKIM_SIGNER env var not set"); - uint256 timeDelay = vm.envOr("DKIM_DELAY", uint256(0)); - - dkim = deploySingleton( - deployerPrivateKey, - type(UserOverrideableDKIMRegistry).creationCode, - abi.encode(initialOwner, dkimSigner, timeDelay), - keccak256("DKIM_REGISTRY") - ); + dkim = deployDKIMRegistry(deployerPrivateKey, initialOwner); } - console.log("UserOverrideableDKIMRegistry: %s", dkim); + logDeployment("UserOverrideableDKIMRegistry", dkim); // Deploy Verifier verifier = vm.envOr("VERIFIER", address(0)); @@ -66,7 +85,7 @@ contract Deploy is BaseDeployScript { keccak256("VERIFIER") ); } - console.log("Verifier: %s", verifier); + logDeployment("Verifier", verifier); // Deploy EmailAuth Implementation emailAuthImpl = vm.envOr("EMAIL_AUTH_IMPL", address(0)); @@ -78,7 +97,7 @@ contract Deploy is BaseDeployScript { keccak256("EMAIL_AUTH_IMPL") ); } - console.log("EmailAuth: %s", emailAuthImpl); + logDeployment("EmailAuth", emailAuthImpl); // Create RecoveryController recoveryController = deploySingleton( @@ -87,7 +106,7 @@ contract Deploy is BaseDeployScript { abi.encode(initialOwner, verifier, dkim, emailAuthImpl), keccak256("RECOVERY_CONTROLLER") ); - console.log("RecoveryController: %s", recoveryController); + logDeployment("RecoveryController", recoveryController); // Deploy SimpleWallet Implementation simpleWallet = deploySingleton( @@ -96,6 +115,6 @@ contract Deploy is BaseDeployScript { abi.encode(initialOwner, recoveryController), keccak256("SIMPLE_WALLET") ); - console.log("SimpleWallet: %s", simpleWallet); + logDeployment("SimpleWallet", simpleWallet); } } From 2638682ac1fc23dcd0221852a447bec096182376 Mon Sep 17 00:00:00 2001 From: John Guilding Date: Fri, 27 Dec 2024 12:31:54 +1000 Subject: [PATCH 4/8] Revert "feat: use SafeSingletonDeployer for deterministic deployments in DeployRecoveryController script" This reverts commit 88631eb7c0cd2d46a26c03b71ac7c03003fb0bb9. --- packages/contracts/remappings.txt | 3 +- .../script/DeployRecoveryController.s.sol | 103 +++++------------- 2 files changed, 30 insertions(+), 76 deletions(-) diff --git a/packages/contracts/remappings.txt b/packages/contracts/remappings.txt index 335e802..c22d4aa 100644 --- a/packages/contracts/remappings.txt +++ b/packages/contracts/remappings.txt @@ -8,5 +8,4 @@ ds-test/=../../node_modules/ds-test/src solady/=../../node_modules/solady/src/ accountabstraction/=../../node_modules/accountabstraction/ solidity-stringutils/=../../node_modules/solidity-stringutils/ -openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/ -safe-singleton-deployer/=lib/safe-singleton-deployer-sol/src/ \ No newline at end of file +openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/ \ No newline at end of file diff --git a/packages/contracts/script/DeployRecoveryController.s.sol b/packages/contracts/script/DeployRecoveryController.s.sol index 0ee1f09..40a47b3 100644 --- a/packages/contracts/script/DeployRecoveryController.s.sol +++ b/packages/contracts/script/DeployRecoveryController.s.sol @@ -12,7 +12,6 @@ import {EmailAuth} from "../src/EmailAuth.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {UserOverrideableDKIMRegistry} from "@zk-email/contracts/UserOverrideableDKIMRegistry.sol"; import {BaseDeployScript} from "./BaseDeployScript.sol"; -import {SafeSingletonDeployer} from "safe-singleton-deployer/SafeSingletonDeployer.sol"; contract Deploy is BaseDeployScript { using ECDSA for *; @@ -23,98 +22,54 @@ contract Deploy is BaseDeployScript { address simpleWallet; address recoveryController; - function deploySingleton( - uint256 deployerPrivateKey, - bytes memory creationCode, - bytes memory initData, - bytes32 salt - ) private returns (address) { - return - SafeSingletonDeployer.broadcastDeploy( - deployerPrivateKey, - creationCode, - initData, - salt - ); - } - - function deployDKIMRegistry( - uint256 deployerPrivateKey, - address initialOwner - ) private returns (address) { - address dkimSigner = vm.envAddress("DKIM_SIGNER"); - if (dkimSigner == address(0)) { - revert("DKIM_SIGNER env var not set"); - } - - uint256 timeDelay = vm.envOr("DKIM_DELAY", uint256(0)); - console.log("DKIM_DELAY: %s", timeDelay); - - return - deploySingleton( - deployerPrivateKey, - type(UserOverrideableDKIMRegistry).creationCode, - abi.encode(initialOwner, dkimSigner, timeDelay), - keccak256("DKIM_REGISTRY") - ); - } - - function logDeployment(string memory name, address addr) private view { - console.log("%s: %s", name, addr); - } - function run() public override { super.run(); - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - address initialOwner = vm.envOr("INITIAL_OWNER", address(0)); + vm.startBroadcast(deployerPrivateKey); // Deploy User-overrideable DKIM registry dkim = vm.envOr("DKIM", address(0)); - if (dkim == address(0)) { - dkim = deployDKIMRegistry(deployerPrivateKey, initialOwner); + if (address(dkim) == address(0)) { + address dkimSigner = vm.envAddress("DKIM_SIGNER"); + if (dkimSigner == address(0)) { + console.log("DKIM_SIGNER env var not set"); + return; + } + uint256 timeDelay = vm.envOr("DKIM_DELAY", uint256(0)); + console.log("DKIM_DELAY: %s", timeDelay); + + dkim = deployUserOverrideableDKIMRegistry( + initialOwner, + dkimSigner, + timeDelay + ); } - logDeployment("UserOverrideableDKIMRegistry", dkim); // Deploy Verifier verifier = vm.envOr("VERIFIER", address(0)); - if (verifier == address(0)) { - verifier = deploySingleton( - deployerPrivateKey, - type(Verifier).creationCode, - abi.encode(initialOwner), - keccak256("VERIFIER") - ); + if (address(verifier) == address(0)) { + verifier = deployVerifier(initialOwner); } - logDeployment("Verifier", verifier); // Deploy EmailAuth Implementation emailAuthImpl = vm.envOr("EMAIL_AUTH_IMPL", address(0)); if (emailAuthImpl == address(0)) { - emailAuthImpl = deploySingleton( - deployerPrivateKey, - type(EmailAuth).creationCode, - "", - keccak256("EMAIL_AUTH_IMPL") - ); + emailAuthImpl = deployEmailAuthImplementation(); } - logDeployment("EmailAuth", emailAuthImpl); - // Create RecoveryController - recoveryController = deploySingleton( - deployerPrivateKey, - type(RecoveryController).creationCode, - abi.encode(initialOwner, verifier, dkim, emailAuthImpl), - keccak256("RECOVERY_CONTROLLER") + // Create RecoveryController as EmailAccountRecovery implementation + recoveryController = deployRecoveryController( + initialOwner, + address(verifier), + address(dkim), + address(emailAuthImpl) ); - logDeployment("RecoveryController", recoveryController); // Deploy SimpleWallet Implementation - simpleWallet = deploySingleton( - deployerPrivateKey, - type(SimpleWallet).creationCode, - abi.encode(initialOwner, recoveryController), - keccak256("SIMPLE_WALLET") + simpleWallet = deploySimpleWallet( + initialOwner, + address(recoveryController) ); - logDeployment("SimpleWallet", simpleWallet); + + vm.stopBroadcast(); } } From 039e0c97143d5371cf8c49f77d5bdfd15a44fd89 Mon Sep 17 00:00:00 2001 From: John Guilding Date: Fri, 27 Dec 2024 12:32:13 +1000 Subject: [PATCH 5/8] Revert "forge install: safe-singleton-deployer-sol" This reverts commit 2ba3f84c063f4c8f9aaec568a5ed65e5fb99a613. --- .gitmodules | 3 --- packages/contracts/lib/safe-singleton-deployer-sol | 1 - 2 files changed, 4 deletions(-) delete mode 160000 packages/contracts/lib/safe-singleton-deployer-sol diff --git a/.gitmodules b/.gitmodules index 071da35..acd01fd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "packages/contracts/lib/forge-std"] path = packages/contracts/lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "packages/contracts/lib/safe-singleton-deployer-sol"] - path = packages/contracts/lib/safe-singleton-deployer-sol - url = https://github.com/wilsoncusack/safe-singleton-deployer-sol diff --git a/packages/contracts/lib/safe-singleton-deployer-sol b/packages/contracts/lib/safe-singleton-deployer-sol deleted file mode 160000 index cf2b89c..0000000 --- a/packages/contracts/lib/safe-singleton-deployer-sol +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cf2b89c33fed536c4dd6fef2fb84f39053068868 From 772787659e80e80930468058e4a55ff9a7f658a1 Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Fri, 27 Dec 2024 22:41:03 +0900 Subject: [PATCH 6/8] Fix \t issue in the email sent from apple mail. --- Cargo.lock | 575 +++++++----------- packages/circuits/helpers/email_auth.ts | 7 +- packages/circuits/helpers/recipient.ts | 4 +- packages/circuits/package.json | 2 +- packages/circuits/tests/email_auth.test.ts | 14 +- .../circuits/tests/email_auth_legacy.test.ts | 12 +- ...ts => email_auth_legacy_recipient.test.ts} | 8 +- .../tests/email_auth_production.test.ts | 79 ++- ...t.test.ts => email_auth_recipient.test.ts} | 4 +- .../emails/recovery_gmail_from_apple_mail.eml | 295 +++++++++ packages/relayer/Cargo.toml | 5 +- yarn.lock | 8 +- 12 files changed, 607 insertions(+), 406 deletions(-) rename packages/circuits/tests/{emai_auth_legacy_recipient.test.ts => email_auth_legacy_recipient.test.ts} (99%) rename packages/circuits/tests/{emai_auth_recipient.test.ts => email_auth_recipient.test.ts} (99%) create mode 100644 packages/circuits/tests/emails/recovery_gmail_from_apple_mail.eml diff --git a/Cargo.lock b/Cargo.lock index c97648d..531696e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 4 +version = 3 [[package]] name = "Inflector" @@ -83,9 +83,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arrayref" @@ -105,12 +105,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - [[package]] name = "ascii" version = "1.1.0" @@ -202,7 +196,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -243,7 +237,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -265,7 +259,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "itoa", "matchit", "memchr", @@ -279,7 +273,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 0.1.2", "tokio", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", ] @@ -548,9 +542,9 @@ dependencies = [ [[package]] name = "candid" -version = "0.10.10" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c30ee7f886f296b6422c0ff017e89dd4f831521dfdcc76f3f71aae1ce817222" +checksum = "d04aa85a9ba2542bded33d1eff0ffb17cb98b1be8117e0a25e1ad8c62bedc881" dependencies = [ "anyhow", "binread", @@ -578,7 +572,7 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -606,25 +600,19 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "jobserver", "libc", "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfdkim" version = "0.3.3" -source = "git+https://github.com/zkemail/cfdkim.git#3b1cfd75e2afad12fbc1e8ece50e93e51415118b" +source = "git+https://github.com/zkemail/cfdkim.git#f778b0961ecbfc0a18e2dc801ea45886aeb0a242" dependencies = [ "base64 0.21.7", "chrono", @@ -677,9 +665,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -758,19 +746,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii 0.9.3", - "byteorder", - "either", - "memchr", - "unreachable", -] - [[package]] name = "combine" version = "4.6.7" @@ -882,18 +857,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -910,18 +885,18 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -984,7 +959,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -1043,7 +1018,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -1117,7 +1092,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -1447,7 +1422,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.90", + "syn 2.0.92", "toml", "walkdir", ] @@ -1465,7 +1440,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -1491,7 +1466,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.90", + "syn 2.0.92", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -1688,9 +1663,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" @@ -1881,7 +1856,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -1992,11 +1967,11 @@ dependencies = [ [[package]] name = "graphql-parser" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" +checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409" dependencies = [ - "combine 3.8.1", + "combine", "thiserror 1.0.69", ] @@ -2079,7 +2054,7 @@ checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "halo2curves" version = "0.7.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83" +source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?rev=8771fe5a5d54fc03e74dbc8915db5dad3ab46a83#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83" dependencies = [ "blake2", "digest 0.10.7", @@ -2105,7 +2080,7 @@ dependencies = [ [[package]] name = "halo2derive" version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83" +source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?rev=8771fe5a5d54fc03e74dbc8915db5dad3ab46a83#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83" dependencies = [ "num-bigint", "num-integer", @@ -2258,9 +2233,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -2285,7 +2260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -2296,7 +2271,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -2315,9 +2290,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -2339,14 +2314,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "itoa", @@ -2364,7 +2339,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -2372,18 +2347,18 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.1", + "http 1.2.0", + "hyper 1.5.2", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tower-service", "webpki-roots 0.26.7", ] @@ -2395,7 +2370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -2410,9 +2385,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.5.2", "pin-project-lite", "socket2 0.5.8", "tokio", @@ -2456,7 +2431,7 @@ dependencies = [ "ed25519-consensus", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "ic-certification", "ic-transport-types", @@ -2468,7 +2443,7 @@ dependencies = [ "pkcs8", "rand", "rangemap", - "reqwest 0.12.9", + "reqwest 0.12.10", "ring 0.17.8", "rustls-webpki 0.102.8", "sec1", @@ -2691,7 +2666,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -2780,7 +2755,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -2889,28 +2864,6 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine 4.6.7", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - [[package]] name = "jobserver" version = "0.1.32" @@ -2922,9 +2875,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -3040,9 +2993,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.167" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" @@ -3125,15 +3078,6 @@ dependencies = [ "quoted_printable 0.5.1", ] -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "match_cfg" version = "0.1.0" @@ -3192,9 +3136,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -3227,12 +3171,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -3355,7 +3293,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -3378,20 +3316,11 @@ dependencies = [ "url", ] -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -3456,7 +3385,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -3579,7 +3508,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] @@ -3680,20 +3609,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 1.0.69", + "thiserror 2.0.9", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ "pest", "pest_generator", @@ -3701,22 +3630,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] name = "pest_meta" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" dependencies = [ "once_cell", "pest", @@ -3773,7 +3702,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -3811,7 +3740,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -3856,7 +3785,7 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "poseidon-rs" version = "1.0.0" -source = "git+https://github.com/zkemail/poseidon-rs.git#fe5ce2634c27326219d4faf75beb73b40a0beb7d" +source = "git+https://github.com/zkemail/poseidon-rs.git#c1df2bbb9cd81d761c8f403a4ee6d330f121f718" dependencies = [ "getrandom", "halo2curves", @@ -3904,7 +3833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -3950,9 +3879,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bitflags 2.6.0", "lazy_static", @@ -3996,9 +3925,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.19", + "rustls 0.23.20", "socket2 0.5.8", - "thiserror 2.0.3", + "thiserror 2.0.9", "tokio", "tracing", ] @@ -4014,10 +3943,10 @@ dependencies = [ "rand", "ring 0.17.8", "rustc-hash", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "slab", - "thiserror 2.0.3", + "thiserror 2.0.9", "tinyvec", "tracing", "web-time", @@ -4025,9 +3954,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ "cfg_aliases 0.2.1", "libc", @@ -4039,9 +3968,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -4109,12 +4038,6 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "rayon" version = "1.10.0" @@ -4146,9 +4069,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -4166,9 +4089,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -4213,7 +4136,8 @@ dependencies = [ "graphql_client", "handlebars", "hex", - "http 1.1.0", + "home", + "http 1.2.0", "ic-agent", "ic-utils", "lazy_static", @@ -4239,17 +4163,17 @@ dependencies = [ "tokio", "tower-http", "uuid 1.11.0", - "webbrowser", ] [[package]] name = "relayer-utils" -version = "0.4.2" -source = "git+https://github.com/zkemail/relayer-utils.git#0663df1271beac13ec14c731ee1ce7ae4be54d16" +version = "0.4.60" +source = "git+https://github.com/zkemail/relayer-utils.git#cb50b38e9f35d275e19dd8f2cfbe0d0203452c18" dependencies = [ "anyhow", "base64 0.22.1", "cfdkim", + "console_error_panic_hook", "ethers", "file-rotate", "halo2curves", @@ -4292,7 +4216,7 @@ dependencies = [ "h2", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "hyper-tls", "ipnet", @@ -4324,20 +4248,20 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "3d3536321cfc54baa8cf3e273d5e1f63f889067829c4b410fcdbac8ca7b80994" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", + "hyper 1.5.2", + "hyper-rustls 0.27.5", "hyper-util", "ipnet", "js-sys", @@ -4347,7 +4271,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -4355,8 +4279,9 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tokio-util", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -4499,15 +4424,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4524,9 +4449,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "once_cell", "ring 0.17.8", @@ -4556,9 +4481,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" dependencies = [ "web-time", ] @@ -4586,9 +4511,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -4635,7 +4560,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -4710,9 +4635,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" dependencies = [ "core-foundation-sys", "libc", @@ -4720,15 +4645,15 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" +checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] @@ -4747,9 +4672,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] @@ -4786,20 +4711,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", @@ -4825,7 +4750,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5369,7 +5294,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5417,9 +5342,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126" dependencies = [ "proc-macro2", "quote", @@ -5449,7 +5374,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5492,7 +5417,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", - "fastrand 2.2.0", + "fastrand 2.3.0", "once_cell", "rustix", "windows-sys 0.59.0", @@ -5520,11 +5445,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.3" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.3", + "thiserror-impl 2.0.9", ] [[package]] @@ -5535,18 +5460,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5605,7 +5530,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82" dependencies = [ - "ascii 1.1.0", + "ascii", "chunked_transfer", "httpdate", "log", @@ -5623,9 +5548,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -5638,9 +5563,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -5662,7 +5587,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5687,20 +5612,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", - "rustls-pki-types", + "rustls 0.23.20", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -5724,9 +5648,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -5785,6 +5709,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-http" version = "0.4.2" @@ -5833,7 +5772,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -5964,9 +5903,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" @@ -6013,15 +5952,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "unroll" version = "0.1.5" @@ -6108,12 +6038,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "walkdir" version = "2.5.0" @@ -6147,9 +6071,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -6160,24 +6084,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.47" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", @@ -6188,9 +6111,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6198,32 +6121,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-bindgen-test" -version = "0.3.47" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d919bb60ebcecb9160afee6c71b43a58a4f0517a2de0054cd050d02cec08201" +checksum = "c61d44563646eb934577f2772656c7ad5e9c90fac78aa8013d776fcdaf24625d" dependencies = [ "js-sys", "minicov", - "once_cell", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -6232,13 +6154,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.47" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222ebde6ea87fbfa6bdd2e9f1fd8a91d60aee5db68792632176c4e16a74fc7d8" +checksum = "54171416ce73aa0b9c377b51cc3cb542becee1cd678204812e8392e5b0e4a031" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -6256,9 +6178,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -6274,23 +6196,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webbrowser" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" -dependencies = [ - "core-foundation", - "home", - "jni", - "log", - "ndk-context", - "objc", - "raw-window-handle", - "url", - "web-sys", -] - [[package]] name = "webpki-roots" version = "0.25.4" @@ -6312,7 +6217,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "wasite", ] @@ -6392,15 +6297,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -6428,21 +6324,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -6474,12 +6355,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6492,12 +6367,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6510,12 +6379,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6534,12 +6397,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6552,12 +6409,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6570,12 +6421,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6588,12 +6433,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6691,7 +6530,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", "synstructure", ] @@ -6713,7 +6552,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -6733,7 +6572,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", "synstructure", ] @@ -6762,7 +6601,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.92", ] [[package]] @@ -6788,7 +6627,7 @@ dependencies = [ [[package]] name = "zk-regex-apis" version = "2.3.1" -source = "git+https://github.com/zkemail/zk-regex.git#7002a2179e076449b84e3e7e8ba94e88d0a2dc2f" +source = "git+https://github.com/zkemail/zk-regex.git?branch=dimidumo/zk-802-consistent-casing-everywhere#5b357f2c7aa4643964534d88ebe5db3512048a71" dependencies = [ "fancy-regex", "itertools 0.13.0", diff --git a/packages/circuits/helpers/email_auth.ts b/packages/circuits/helpers/email_auth.ts index 458ecc0..1d5a9f2 100644 --- a/packages/circuits/helpers/email_auth.ts +++ b/packages/circuits/helpers/email_auth.ts @@ -33,12 +33,7 @@ export async function genEmailCircuitInput( const jsonStr = await relayerUtils.generateEmailCircuitInput( emailRaw, accountCode, - { - ignore_body_hash_check: options?.ignoreBodyHashCheck, - max_header_length: options?.maxHeaderLength, - max_body_length: options?.maxBodyLength, - sha_precompute_selector: options?.shaPrecomputeSelector, - } + options ); return JSON.parse(jsonStr); } diff --git a/packages/circuits/helpers/recipient.ts b/packages/circuits/helpers/recipient.ts index 00198da..6da74df 100644 --- a/packages/circuits/helpers/recipient.ts +++ b/packages/circuits/helpers/recipient.ts @@ -10,9 +10,9 @@ export async function genRecipientInputLegacy(emailFilePath: string): Promise<{ const emailRaw = await promisify(fs.readFile)(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); const subjectEmailIdxes = relayerUtils.extractSubjectAllIdxes( - parsedEmail.canonicalized_header + parsedEmail.canonicalizedHeader )[0]; - const subject = parsedEmail.canonicalized_header.slice( + const subject = parsedEmail.canonicalizedHeader.slice( subjectEmailIdxes[0], subjectEmailIdxes[1] ); diff --git a/packages/circuits/package.json b/packages/circuits/package.json index cedc461..857efd2 100644 --- a/packages/circuits/package.json +++ b/packages/circuits/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@zk-email/circuits": "=6.3.2", - "@zk-email/relayer-utils": "=0.4.59", + "@zk-email/relayer-utils": "=0.4.60", "@zk-email/zk-regex-circom": "=2.3.1", "commander": "^12.1.0", "snarkjs": "=0.7.5" diff --git a/packages/circuits/tests/email_auth.test.ts b/packages/circuits/tests/email_auth.test.ts index ac5c14d..8747fe6 100644 --- a/packages/circuits/tests/email_auth.test.ts +++ b/packages/circuits/tests/email_auth.test.ts @@ -56,7 +56,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -122,7 +122,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -189,7 +189,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -256,7 +256,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -324,7 +324,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -392,7 +392,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -460,7 +460,7 @@ describe("Email Auth", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] diff --git a/packages/circuits/tests/email_auth_legacy.test.ts b/packages/circuits/tests/email_auth_legacy.test.ts index 6033c9f..2b37cde 100644 --- a/packages/circuits/tests/email_auth_legacy.test.ts +++ b/packages/circuits/tests/email_auth_legacy.test.ts @@ -53,7 +53,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -117,7 +117,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -181,7 +181,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -245,7 +245,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -310,7 +310,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -374,7 +374,7 @@ describe("Email Auth Legacy", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] diff --git a/packages/circuits/tests/emai_auth_legacy_recipient.test.ts b/packages/circuits/tests/email_auth_legacy_recipient.test.ts similarity index 99% rename from packages/circuits/tests/emai_auth_legacy_recipient.test.ts rename to packages/circuits/tests/email_auth_legacy_recipient.test.ts index 3395259..b838857 100644 --- a/packages/circuits/tests/emai_auth_legacy_recipient.test.ts +++ b/packages/circuits/tests/email_auth_legacy_recipient.test.ts @@ -56,7 +56,7 @@ describe("Email Auth Legacy with Recipient", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -139,7 +139,7 @@ describe("Email Auth Legacy with Recipient", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -222,7 +222,7 @@ describe("Email Auth Legacy with Recipient", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -303,7 +303,7 @@ describe("Email Auth Legacy with Recipient", () => { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] diff --git a/packages/circuits/tests/email_auth_production.test.ts b/packages/circuits/tests/email_auth_production.test.ts index 8e6a595..c573e35 100644 --- a/packages/circuits/tests/email_auth_production.test.ts +++ b/packages/circuits/tests/email_auth_production.test.ts @@ -12,6 +12,7 @@ const option = { output: path.join(__dirname, "../build"), recompile: true, }; +const shaPrecomputeSelector = '
]*>[^<>/]+
'; jest.setTimeout(1440000); describe("Email Auth Production", () => { @@ -57,7 +58,7 @@ describe("Email Auth Production", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -127,7 +128,7 @@ describe("Email Auth Production", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -196,7 +197,7 @@ describe("Email Auth Production", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -265,7 +266,7 @@ describe("Email Auth Production", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -304,6 +305,76 @@ describe("Email Auth Production", () => { ); }); + it("Verify a production email for recovery sent from apple email mobile", async () => { + const emailFilePath = path.join( + __dirname, + "./emails/recovery_gmail_from_apple_mail.eml" + ); + + const emailRaw = readFileSync(emailFilePath, "utf8"); + const parsedEmail = await relayerUtils.parseEmail(emailRaw); + const accountCode = + "0x1162ebff40918afe5305e68396f0283eb675901d0387f97d21928d423aaa0b20"; + + const circuitInputs = + await genEmailCircuitInput(emailFilePath, accountCode, { + maxHeaderLength: 1024, + maxBodyLength: 1024, + ignoreBodyHashCheck: false, + shaPrecomputeSelector + }); + console.log(circuitInputs); + + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + + const domainName = "gmail.com"; + const paddedDomain = relayerUtils.padString(domainName, 255); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); + for (let idx = 0; idx < domainFields.length; ++idx) { + expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + } + + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.publicKey + ); + expect(BigInt(expectedPubKeyHash)).toEqual( + witness[1 + domainFields.length] + ); + + const expectedEmailNullifier = await relayerUtils.emailNullifier( + parsedEmail.signature + ); + expect(BigInt(expectedEmailNullifier)).toEqual( + witness[1 + domainFields.length + 1] + ); + + const timestamp = BigInt(1735305312); + expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + + const maskedCommand = "Accept guardian request for 0x952541bDfe8aae3805D5b9A37D5Ae5e1EE68346f"; + const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + const maskedCommandFields = + await relayerUtils.bytesToFields(paddedMaskedCommand); + for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + expect(BigInt(maskedCommandFields[idx])).toEqual( + witness[1 + domainFields.length + 3 + idx] + ); + } + + const fromAddr = "suegamisora@gmail.com"; + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + expect(BigInt(accountSalt)).toEqual( + witness[1 + domainFields.length + 3 + maskedCommandFields.length] + ); + + expect(BigInt(1)).toEqual( + witness[ + 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + ] + ); + }); + // it("Verify a production email for recovery sent from outlook pc with the English setting", async () => { // const emailFilePath = path.join( // __dirname, diff --git a/packages/circuits/tests/emai_auth_recipient.test.ts b/packages/circuits/tests/email_auth_recipient.test.ts similarity index 99% rename from packages/circuits/tests/emai_auth_recipient.test.ts rename to packages/circuits/tests/email_auth_recipient.test.ts index 21fde5f..f12c70b 100644 --- a/packages/circuits/tests/emai_auth_recipient.test.ts +++ b/packages/circuits/tests/email_auth_recipient.test.ts @@ -67,7 +67,7 @@ describe("Email Auth with Recipient", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] @@ -160,7 +160,7 @@ describe("Email Auth with Recipient", () => { } const expectedPubKeyHash = await relayerUtils.publicKeyHash( - parsedEmail.public_key + parsedEmail.publicKey ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] diff --git a/packages/circuits/tests/emails/recovery_gmail_from_apple_mail.eml b/packages/circuits/tests/emails/recovery_gmail_from_apple_mail.eml new file mode 100644 index 0000000..25f542d --- /dev/null +++ b/packages/circuits/tests/emails/recovery_gmail_from_apple_mail.eml @@ -0,0 +1,295 @@ +Delivered-To: arbitrum@sendeth.org +Received: by 2002:a05:7300:a189:b0:150:7837:3792 with SMTP id co9csp6195243dyb; + Fri, 27 Dec 2024 05:15:12 -0800 (PST) +X-Received: by 2002:a17:902:dace:b0:216:3732:ade3 with SMTP id d9443c01a7336-219e6f25fd1mr350882965ad.35.1735305312412; + Fri, 27 Dec 2024 05:15:12 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1735305312; cv=none; + d=google.com; s=arc-20240605; + b=Csua6iokxQkfrncVPuNPhoP+wMIrqzloVPbi5SvUBWpDF++kAn5u09qTIy4e48kvAd + m7D5VYnqbrMiqMjhqG4jPr78uS9MPz0Habh5rilk62XA7d633gq1e6XE87ZYyO+DJ+nO + gDhqNx8MYPAwbMtmf5BnxcxdBplgniPHNcBlRQLl2ClXM8t9STwz3XGUsgPQcDK3XA/G + jfvhIJjfpnqkKfyIqGlVTZ2yXGgyJjDzF7N1cZvgPUw1nKuNO7xOfHE5E6plSI7W4gb0 + PZ9Ip0a5qJfvw9J+oQ+KqZCc2A3bxnWt1+z2WkJbG9JFLZs2c7y59s8QHhf40UEJlcJs + qEFQ== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; + h=to:in-reply-to:references:message-id:date:subject:mime-version:from + :content-transfer-encoding:dkim-signature; + bh=K/W/cFvnMwzxYPgtJfj75It4M3R7fI/t7bx8gD6ae24=; + fh=NiFfXpGsf4NiPgQyu56KYLs/TS2Vqsd4I8WrbqKeOhg=; + b=GsvokxzjU9w34s8NZWSyDOZNoNVUcEPG/imvUV/AWXcfrjumX3PGae6TenYqxmCzya + Navsj4kbmTWamn0/P+7sq6SbwKNj7ayfu/OZzEV73eQ56t8bcg2Mc+OK4RLQxZKWgGbr + 8grgZLMHH3J4eE9rPZhFwDLv1wdCdqblginFwdAFFkvThiCUVa/h7e7HeVko0wfYOQpA + 5Ju9sP3UyYYPb0X4R+o4+RNx5gAq02oyD8nrfFIWBZuscgTSJ/KoUk84HRat1aDy42lW + aJdzyxzcdkL1A6oA7DDwnUSm5/ImVOWDkx8jf7X8wtAslKBT8VrnKuGStYNUTEuqLxUj + 7n6Q==; + dara=google.com +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y5QEmYnz; + spf=pass (google.com: domain of suegamisora@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=suegamisora@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@sendeth.org +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id d9443c01a7336-219dc7f9a74sor135575245ad.0.2024.12.27.05.15.12 + for + (Google Transport Security); + Fri, 27 Dec 2024 05:15:12 -0800 (PST) +Received-SPF: pass (google.com: domain of suegamisora@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y5QEmYnz; + spf=pass (google.com: domain of suegamisora@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=suegamisora@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@sendeth.org +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20230601; t=1735305312; x=1735910112; darn=sendeth.org; + h=to:in-reply-to:references:message-id:date:subject:mime-version:from + :content-transfer-encoding:from:to:cc:subject:date:message-id + :reply-to; + bh=K/W/cFvnMwzxYPgtJfj75It4M3R7fI/t7bx8gD6ae24=; + b=Y5QEmYnzk/axJVZAoPWNtFbvGmh2Y+cPh1VOjaEb4lJP9t4jgdC661b1rrXh8OBS6O + IMy2E7qapsbGjDjaLKKBsomMBkdhJEm4ztEqD+ZQJh+yxF0Gbg5+tSpCP9Fj8qF6VtBf + Zx3IbSIar5q3TjTmEtVGitoonhOACjGF4cjmsWFonB8DuHMdO1eCBoLCfzjEUK9TkYAO + Evm4+tBj+ljwnyojB1AkgQAN27rffNb1K+W4v+gsT0Vu9tiYVx65IUwoB4XSZX0IyzTg + 4RzvdSNWNvdEjGXXopvp8v8YZjJQ5KZ+vOvM1a8ypBWxnv8co+rbKzQPebblReN/rjPP + izzg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1735305312; x=1735910112; + h=to:in-reply-to:references:message-id:date:subject:mime-version:from + :content-transfer-encoding:x-gm-message-state:from:to:cc:subject + :date:message-id:reply-to; + bh=K/W/cFvnMwzxYPgtJfj75It4M3R7fI/t7bx8gD6ae24=; + b=re41oGdHzFV3a49OZyz49fSaRoxuWOvYZWsFlghErZRvCLCaUwb6aMLl94+g7bf1WT + HHqAoB4oZrvMB/UrT0bgAjix5Zw5Sz7OQC3DrryiSJpjMK6169FZhD4zHlU9L+a9ZpU4 + xXY4NaJEVXGWTAR30DV4Bpe2onmbbxtKXONxe9Rr2x8cpducSRiBLOVkjYeg4PgN12do + DmdIDV49svHIKJTtbw4Bqjf/2kpPCFQ+DVoqH8BmrZFlwntOPHpxqm9KC5zgDTfa3nmM + AJ/gmZV9dSOH1ieHo/+8syFRcBAfr2YjPwciRbbbO68n2p9O2CAg7bz14iqZRkAKEcz9 + T3NQ== +X-Gm-Message-State: AOJu0YzkUKJTje9pCg/dgXj+StwAGACxx/Mnibtrds6YFDeWY1LXpQVL + ABCt2dP5/iGzpSgjLp2kxVYVGJC16VAgPcIDHb1bIhkEoE+kTIAHR7f82g== +X-Gm-Gg: ASbGncseXdGKqBfdY92bP2QG19Kib6cypZnB2EfDoE1T1J5zc5r1fPQ9rirPQrSLXWH + HVFguWZSi3myTIWRwFieNj+QAz7CV5FhTpPnU7MJN35oWPnRgo+6RUVPzsvpcagE5BF8E1u95jr + OwtMaVZmXuRRGr+0Py+ThZ88BTIn+XpegOYgzK9MD+scp4xYYYhVrCYt7tCwViikdQGWzgOLwIR + wH6oKRq/GgMFloowKXfSFxYU5CvDUIfJvWs8saWtrecQdY4WqgHQGD24t331T8b19k/AUvj/Oc= +X-Google-Smtp-Source: AGHT+IEt/TNLcxSfVgsPp6a3CK6xWCvQHyBDbKHlb3HKKXMwW/V1YNIejBQEb2JXFaoYqyr3iGF7rg== +X-Received: by 2002:a17:902:dac6:b0:216:32c4:f807 with SMTP id d9443c01a7336-219e6f25fdcmr317972615ad.45.1735305311491; + Fri, 27 Dec 2024 05:15:11 -0800 (PST) +Return-Path: +Received: from smtpclient.apple ([45.94.210.237]) + by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-842aba7310bsm11345300a12.1.2024.12.27.05.15.10 + for + (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); + Fri, 27 Dec 2024 05:15:10 -0800 (PST) +Content-Type: multipart/alternative; boundary=Apple-Mail-796E5E50-7F4E-4214-A04C-B681F4FB247C +Content-Transfer-Encoding: 7bit +From: Sora Suegami +Mime-Version: 1.0 (1.0) +Subject: Re: [Reply Needed] Recovery: Acceptance Request +Date: Fri, 27 Dec 2024 22:14:55 +0900 +Message-Id: <50198312-F2A0-4893-A90D-66691D0841FA@gmail.com> +References: +In-Reply-To: +To: arbitrum@sendeth.org +X-Mailer: iPhone Mail (22A3354) + + +--Apple-Mail-796E5E50-7F4E-4214-A04C-B681F4FB247C +Content-Type: text/html; + charset=utf-8 +Content-Transfer-Encoding: quoted-printable + +Confirm
iPhone=E3=81=8B=E3=82=89=E9=80=81=E4=BF=A1

2024/12/27 22:14=E3=80=81arbitrum= +@sendeth.org=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB:

= +
=EF=BB=BF + + + =20 + + + + =20 + =20 + + + + +
+ + +
+ + + + + + + + + + + + +
+ Hi, suegamisora@gmail.com! +
+ You have received an guardian request from the wallet addres= +s 0x952541bdfe8aae3805d5b9a37d5ae5e1ee68346f. Reply "Confirm" to this email to accept the request. + Your request ID is #671422888. + +

+ If you did not initiate this request, please contact us imme= +diately. + + +
+

+ Cheers,
The ZK Email Team +

+
+ + + + + + +
+

+ Powered by + ZK Email +

+ + + + + + + +
+ 3D"= + + 3D"Twitt= + + 3D= + + 3D= +
+
+
+
Accept guardian reques= +t for 0x952541bDfe8aae3805D5b9A37D5Ae5e1EE68346f Code 1162ebff40918afe5305e6= +8396f0283eb675901d0387f97d21928d423aaa0b20
+ =20 + +
= + +--Apple-Mail-796E5E50-7F4E-4214-A04C-B681F4FB247C-- diff --git a/packages/relayer/Cargo.toml b/packages/relayer/Cargo.toml index e611911..b6b4c8b 100644 --- a/packages/relayer/Cargo.toml +++ b/packages/relayer/Cargo.toml @@ -19,12 +19,12 @@ async-native-tls = { version = "0.5.0", default-features = false, features = [ "runtime-tokio", ] } serde = { version = "1.0", features = ["derive"] } -webbrowser = "0.8.11" +# webbrowser = "0.8.11" serde_json = "1.0.68" tiny_http = "0.12.0" lettre = { version = "0.10.4", features = ["tokio1", "tokio1-native-tls"] } ethers = { version = "2.0.10", features = ["abigen"] } -relayer-utils = { version = "0.4.2", git = "https://github.com/zkemail/relayer-utils.git" } +relayer-utils = { version = "0.4.60", git = "https://github.com/zkemail/relayer-utils.git" } futures = "0.3.28" sqlx = { version = "=0.7.3", features = [ "postgres", @@ -60,6 +60,7 @@ ic-utils = "0.37.0" candid = "0.10.10" thiserror = "1.0.63" rustc-hex = "2.1.0" +home = "=0.5.9" [build-dependencies] ethers = "2.0.10" diff --git a/yarn.lock b/yarn.lock index b990bfe..b6b0722 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1724,10 +1724,10 @@ "@openzeppelin/contracts-upgradeable" "^5.0.0" dotenv "^16.3.1" -"@zk-email/relayer-utils@=0.4.59": - version "0.4.59" - resolved "https://registry.yarnpkg.com/@zk-email/relayer-utils/-/relayer-utils-0.4.59.tgz#a57b540fa3cf603b3d9d89624d9994e44453bb91" - integrity sha512-pSKCH/wYuI54Ci5L13md8LNQbwrulQ+HWUyjoiKFH3VtI/NebR98n2JOBvnVHmvpnXfi/l/uimoHnHFD+MOX6A== +"@zk-email/relayer-utils@=0.4.60": + version "0.4.60" + resolved "https://registry.yarnpkg.com/@zk-email/relayer-utils/-/relayer-utils-0.4.60.tgz#ab41a7375470e8161caafaa46abb919c710d4a67" + integrity sha512-sOfRc8yoAGFUPXNC3a/64IH+8+GEYPfUF0x5HtElsNfYxM/xtLG6hYvNTl7WLhhxe83dl3VtGMcptiiSvRdVrg== "@zk-email/zk-regex-circom@=2.3.1", "@zk-email/zk-regex-circom@^2.3.1": version "2.3.1" From 8d77aa10306de4e917e0c6b0ce77baabdac6e4ab Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Sat, 28 Dec 2024 21:33:11 +0900 Subject: [PATCH 7/8] Update groth16 verifier and zkey --- packages/contracts/README.md | 5 +- packages/contracts/package.json | 2 +- .../contracts/src/utils/Groth16Verifier.sol | 160 +++++++++--------- packages/prover/Dockerfile | 2 +- packages/prover/local_setup.sh | 2 +- packages/prover/modal_server.py | 2 +- .../abis/user_overridable_dkim_registry.rs | 4 +- 7 files changed, 89 insertions(+), 88 deletions(-) diff --git a/packages/contracts/README.md b/packages/contracts/README.md index 6b0eb5b..591161b 100644 --- a/packages/contracts/README.md +++ b/packages/contracts/README.md @@ -24,8 +24,9 @@ $ yarn test Run integration tests -Before running integration tests, you need to make a `packages/contracts/test/build_integration` directory, download the zip file from the following link, and place its unzipped directory under that directory. -https://drive.google.com/file/d/1XDPFIL5YK8JzLGoTjmHLXO9zMDjSQcJH/view?usp=sharing +Before running integration tests, you need to make a `packages/contracts/test/build_integration` directory, download wasm and zkey files from the following link, and place its unzipped directory under that directory. +- https://storage.googleapis.com/circom-ether-email-auth/v1.1.0/email_auth.zkey +- https://storage.googleapis.com/circom-ether-email-auth/v1.0.2/email_auth.wasm Then, move `email_auth_with_body_parsing_with_qp_encoding.zkey` and `email_auth_with_body_parsing_with_qp_encoding.wasm` in the unzipped directory `params` to `build_integration`. diff --git a/packages/contracts/package.json b/packages/contracts/package.json index e2affe7..37f4c04 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,6 +1,6 @@ { "name": "@zk-email/ether-email-auth-contracts", - "version": "1.0.3", + "version": "1.1.0", "license": "MIT", "scripts": { "build": "forge build --skip '*ZKSync*'", diff --git a/packages/contracts/src/utils/Groth16Verifier.sol b/packages/contracts/src/utils/Groth16Verifier.sol index 507e1ff..cf095c2 100644 --- a/packages/contracts/src/utils/Groth16Verifier.sol +++ b/packages/contracts/src/utils/Groth16Verifier.sol @@ -27,126 +27,126 @@ contract Groth16Verifier { uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; // Verification Key data - uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; - uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; - uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; - uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; - uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; - uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; + uint256 constant alphax = 16428432848801857252194528405604668803277877773566238944394625302971855135431; + uint256 constant alphay = 16846502678714586896801519656441059708016666274385668027902869494772365009666; + uint256 constant betax1 = 3182164110458002340215786955198810119980427837186618912744689678939861918171; + uint256 constant betax2 = 16348171800823588416173124589066524623406261996681292662100840445103873053252; + uint256 constant betay1 = 4920802715848186258981584729175884379674325733638798907835771393452862684714; + uint256 constant betay2 = 19687132236965066906216944365591810874384658708175106803089633851114028275753; uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; - uint256 constant deltax1 = 17321117490467991551004039976141713368755273259054816981094885308298257468746; - uint256 constant deltax2 = 12206727395119032572075275407523163442640631937249159592734225098709365609525; - uint256 constant deltay1 = 4417177391410880611353118834592763024626678905178826818545984339262284861270; - uint256 constant deltay2 = 2880796425164205982474607914269871986813613330489984606315585308781367270397; + uint256 constant deltax1 = 10264548714561178023199180875646797929252572511673269331763091491411145960772; + uint256 constant deltax2 = 18311575787560507146958693096350917774373079228269069858880619696687209239156; + uint256 constant deltay1 = 15364192743383586712577160784335601317663308697309919234290044903285384079519; + uint256 constant deltay2 = 865431301441011786816114454471335882030231200282491476064342442243395470609; - uint256 constant IC0x = 19613578381454247848148468609153373990024337494801498093921075984524147080543; - uint256 constant IC0y = 19679656485159147880034357576194217721231340550694429843056245208166780538462; + uint256 constant IC0x = 15202293611052609963793495512467254159525935701952156579860017919463680904977; + uint256 constant IC0y = 21661005325338063078677013303929203363922048001197630562247322848427814167028; - uint256 constant IC1x = 20052449153036221687572299937401285311091266095435132578335153498340904649938; - uint256 constant IC1y = 15764417163307122469614065240362232192291517572328697755027198294221542220380; + uint256 constant IC1x = 6452955991179147115246107219429817574024379162049674324925726287356258935551; + uint256 constant IC1y = 1046765160185674313241656418982162550792459336028800222786437867754715411953; - uint256 constant IC2x = 4361517835180741166515344626308622049060007638001045593444587215635621996689; - uint256 constant IC2y = 19201118643799061914335981039124676275112293983941093735550301860322607185724; + uint256 constant IC2x = 19561639896993505362129801692608602738073625583833671944648945381547014922029; + uint256 constant IC2y = 16578191314849960975440386484587520749095058197266524744875542035396142224979; - uint256 constant IC3x = 8876661120575601408049826812959595719763878999267389038360460236791625333498; - uint256 constant IC3y = 11408196638239702010260637829946753653272842440125670418009263038135112927486; + uint256 constant IC3x = 6848044820898772807251245352999299723732963485322714031830239563848700077224; + uint256 constant IC3y = 2651857088234354311303576559129256483017639270071990898705867309911277075744; - uint256 constant IC4x = 4239144839679807249062740088136704318835964394268252599125355261839612326699; - uint256 constant IC4y = 5305729015352955614096892880070008473514985516056595021878643414352723669327; + uint256 constant IC4x = 2368020592197748386535215526517962820178664923849697226874744178021374761681; + uint256 constant IC4y = 12405348435978174377662066841808892817975298275719433954945459872424998071839; - uint256 constant IC5x = 6209359433845184752441518023754219467295768715213761781519952067601204069919; - uint256 constant IC5y = 9300024374482983486251270877008817421099686830332198268743686751353681532955; + uint256 constant IC5x = 12538400703934928967761620107286471911808571054792037306376531644420655213601; + uint256 constant IC5y = 5250913866312777687398128331360175028718921856999591936365321282877989184554; - uint256 constant IC6x = 12106352208806738559239844895709244585236125664695914715895703182907405752772; - uint256 constant IC6y = 12169017124318029069947938293568830762109203408506294175081510718204143749505; + uint256 constant IC6x = 21618258444494928915811318893263107924740504125944838336461987588498540593641; + uint256 constant IC6y = 2413936983943311614040050831359105896959820096643403180384172770646720886542; - uint256 constant IC7x = 20780394989550764148402256088161661630374493293607428046910806329309032750020; - uint256 constant IC7y = 16341246603919770827395793332837619123496041758688559121949577020747410740066; + uint256 constant IC7x = 9712390331435193528924418117411029699629191054855717365288341052594339984129; + uint256 constant IC7y = 2901890001751330239457872918991982397824036405720917553836999774204044455623; - uint256 constant IC8x = 15273319685285300222061403474341956813625975413923991163073854032157409432542; - uint256 constant IC8y = 13934881112826992721068177636581665370208256355674730445070453023022897818665; + uint256 constant IC8x = 15974463782248120842322037142570537184584834522125034585921335575378575808731; + uint256 constant IC8y = 907969419061262461168959968625500836314075317901922012544307573862997420676; - uint256 constant IC9x = 269883730317641118471454602280297193522715547266189568215262161691355396617; - uint256 constant IC9y = 10579523671127870981324428930871610698697199332504112952913935688156838061436; + uint256 constant IC9x = 593520515785869763751321392905809175096343673588301633790700045661419391225; + uint256 constant IC9y = 13590538885742242839583031853957508852299822005933772806256906067517430335152; - uint256 constant IC10x = 15111720043996775547713630069493963041953312032250805602669920240778353496821; - uint256 constant IC10y = 17989754330060974481869521730703295915420829292748691869649062021951031371064; + uint256 constant IC10x = 5126169742944031682914481076896674210863618620274411658445473618966611691186; + uint256 constant IC10y = 11064730524220376902728653747571499563397123195029671857363423441040030329460; - uint256 constant IC11x = 14309709138812924151496804149663234196517987779452581957826923427186324508466; - uint256 constant IC11y = 837564419038165927572233024557522340451880222689623753927716929766721822671; + uint256 constant IC11x = 7259905309705066795127861568175002956910167005984267721335918540367744711170; + uint256 constant IC11y = 18060290263760873381165903451091718347725372544343300414984343301594481434248; - uint256 constant IC12x = 10321198050713737286170261705402053793625935903140320789889366321292914251208; - uint256 constant IC12y = 4524416596287920392675000779441485998355015958867826264807157325136243801801; + uint256 constant IC12x = 20630593989712907614329227879257173969981449059516858515932180120315541561010; + uint256 constant IC12y = 21233726060276660013525937027407792589490085528161401072805191653312390912746; - uint256 constant IC13x = 8676292686822308711756028186506093866012138224700264771038267765026451550597; - uint256 constant IC13y = 18969591884459718843910524676874201450616288035619279382729639384728200508616; + uint256 constant IC13x = 21561014780309254670962294569241599431921262891245404626628451318723403477889; + uint256 constant IC13y = 14995299258320870787097856185937491178710155807159202012928750913696984420098; - uint256 constant IC14x = 15563542753094730123101169924291055479710918417215433030518219966471148128151; - uint256 constant IC14y = 17111989507874615469628834743237220942801630385676523374878722472431595036581; + uint256 constant IC14x = 15280115641601385582695107490819213341046876675730545125336451012678022158547; + uint256 constant IC14y = 3320140604782147564819602725346016709067873440446178893087399954861063843693; - uint256 constant IC15x = 5509158201572470332907095600723763909057186852110620187003814815954837361777; - uint256 constant IC15y = 14311147044839837160066318525388156132525662071848030002355307403690774376097; + uint256 constant IC15x = 17581987119415701930284019851842751354356227331927930316001806538430223682555; + uint256 constant IC15y = 11705390309586641220857009322374633789357714112517459725585094189993550500502; - uint256 constant IC16x = 14677743861372785820161151384220897789625254753896556246859891915913603504306; - uint256 constant IC16y = 1429215591329653255001162130636255241911946736663016835912667541984025166977; + uint256 constant IC16x = 8730931148876341537574019799386064417181454807640745687902577256185621504752; + uint256 constant IC16y = 17468060086293611644001868640796316902388876060470858956528235204288140360575; - uint256 constant IC17x = 8330186929780175733196396762124227608381163961173800695023464516247486333263; - uint256 constant IC17y = 4597254121875995921390507919194438594696876097442425656270240724488166574710; + uint256 constant IC17x = 8861089091657651141391517128205040995769246836643614743523809351020752533882; + uint256 constant IC17y = 2480113299000827096835342659230864215648139204515758667998468461670896051319; - uint256 constant IC18x = 14368983875670204746503693769930434933153164318252156418865233460373122990571; - uint256 constant IC18y = 10680359054182279337819246384127370429967400645228614505289030767934830336475; + uint256 constant IC18x = 17939336806984939360292212764988364743099223651317677582855107905643819103567; + uint256 constant IC18y = 11345872484067084307070331806785082787094115795567848618971963992433132980105; - uint256 constant IC19x = 2412714978665454349001966685910328283720162252476680242398512702173047691731; - uint256 constant IC19y = 11885856244776875594242344088767217187536932814943264630115201914669944275197; + uint256 constant IC19x = 17872444896804360649027636059356355146821158031152682850483070881386442953397; + uint256 constant IC19y = 5216957782766764544695058326427041135266417604395823288983956514263254735763; - uint256 constant IC20x = 18289231848126275227577863148521314660781498938707070617828304112905647968715; - uint256 constant IC20y = 8513932016374398177043257859024450141574205800853362921137786684488025096959; + uint256 constant IC20x = 18614603351333566941561341323477869570590042690081796211106802966274611143634; + uint256 constant IC20y = 6117879660203592329824485391814611137557595216579378075477245855577866972763; - uint256 constant IC21x = 11204496744439255005167888881955294182201674714572088918166576037933634669201; - uint256 constant IC21y = 5954132986264800569399428708359117857207034336062600579463301755579456053780; + uint256 constant IC21x = 21778815968256885187175750646471987903451308718075604716026343917461433675766; + uint256 constant IC21y = 15945045594185327054143762990907113241468460444847255176566320744907818510192; - uint256 constant IC22x = 1579436161381136948037312549427982862867142445956843001422244845405511915973; - uint256 constant IC22y = 11270016119244540030245230838492838401037777449982924630237306346053235677476; + uint256 constant IC22x = 9420414154372262062101448921210266527775069404690917420602160684490398686167; + uint256 constant IC22y = 17925640305786657666580892876791489338459889323848286283099304226197949920700; - uint256 constant IC23x = 19222425621733822408665255021639433191626781312130349499870495696798642594450; - uint256 constant IC23y = 18626154357239088324211752510289613809361903867026572709226587397740785436454; + uint256 constant IC23x = 1970536739758456323127804199327246259716526231320855273266665875199442007659; + uint256 constant IC23y = 16758858790649768578768857243572869296075602760261863455857563135567659592212; - uint256 constant IC24x = 9043465757034661879127749573004202958761045369253982299243691087808173452700; - uint256 constant IC24y = 15858196034482479542868339952979980853295216375615500956111001748997632082783; + uint256 constant IC24x = 10923895606766058814188172080806452656128446108501130817389994541753802960573; + uint256 constant IC24y = 20801878558750282858098578295551361461395721372368916692122569109866370311341; - uint256 constant IC25x = 6917402819437793636040222189729201861581384771715620553749805837959641939049; - uint256 constant IC25y = 6041609440566157668537907200592715465452263725722577850002365652281187363646; + uint256 constant IC25x = 8489780023908430543526842780524979232609226423787632005008601601225833157113; + uint256 constant IC25y = 4882582226086767973432420175935156928604793616650145375822401109295644872290; - uint256 constant IC26x = 20421907491566831010057929508425834000183320273949928342681253375534821855774; - uint256 constant IC26y = 9233228711350515434396055181583836719834685746449974659541706695648528554673; + uint256 constant IC26x = 11525629913109296967959183393964549768747692615404212892337575203974334462608; + uint256 constant IC26y = 5878533926249768910424982091808268978504398559551627740747771443356632204094; - uint256 constant IC27x = 1817862696055069434606208047668389481945798272780116639601259183341357367548; - uint256 constant IC27y = 20474784378402300555574024310151799509654179572885655462796858927365879570596; + uint256 constant IC27x = 20002913036260116795212867763287810702267097115043025643887673607407969655268; + uint256 constant IC27y = 558044083063510890683196204447038476167425982867815116695618624970741997206; - uint256 constant IC28x = 20412382334653840408741372931822166569523675681492549089987127447923660099190; - uint256 constant IC28y = 2615852020450208508170048463579025570053217852769146340153323228316693486419; + uint256 constant IC28x = 1455294901156212354915725105606392225281168194446399988016218564927279753087; + uint256 constant IC28y = 9265622034244521221313827609264536748455417116388928838433754993889267207246; - uint256 constant IC29x = 19322897614335540496155566349033616210890856727051642283922882740789415044519; - uint256 constant IC29y = 5329476994034592291783990066575595810349071013010990171460281424177145984403; + uint256 constant IC29x = 8492175542357327224267566257065741731581922730718422493423394842590799449908; + uint256 constant IC29y = 8652814149387146191572014893807964965786548948516478706728617370415006735859; - uint256 constant IC30x = 14654941388315187356240834653008968740589619812848216128964007208951143921496; - uint256 constant IC30y = 6842213503427756213451745362778229317550540666290695532745346632315605527377; + uint256 constant IC30x = 12945456920857623223065695579160061866066134561035673979412297019686810647455; + uint256 constant IC30y = 20767400459502682189711659499059158554474212104305263580689920062950451183406; - uint256 constant IC31x = 19452447505252996167969632489303247089274474143229604415951002887777739336153; - uint256 constant IC31y = 11755045308581471821100871107652961200377962670420150703890212992989408956552; + uint256 constant IC31x = 12452000809319676201338573627410389364483992019034748753979874328000765644471; + uint256 constant IC31y = 9324011591882185536935801579598120405827218960543046741826186886199801685754; - uint256 constant IC32x = 16051822794119353044809709223388793424030383242597414626613716386341732708154; - uint256 constant IC32y = 2563323817812875962821888876003755618429526614758447054208353391126076067627; + uint256 constant IC32x = 15117130650862375233097846251624547965782822125792934165533788502663832777561; + uint256 constant IC32y = 7327519711005978007931795867820761677338128328833770281221248240709259394804; - uint256 constant IC33x = 19665898005128799077002736538398936679532383659852546423033234091085747243971; - uint256 constant IC33y = 16872339203740752897816186177273626330644745948744098356754727104027249273282; + uint256 constant IC33x = 16999413180918098033592863681849974488877027642144119408578586494899105578070; + uint256 constant IC33y = 8919753301308754243845409919393688372970831151960044671687393095909635721078; - uint256 constant IC34x = 2313636355664267900891158409780312400641397608951873414354429704076959945753; - uint256 constant IC34y = 16242744344345043419668293386869828290431287925635551708181153382960812327795; + uint256 constant IC34x = 15649719163199433869832445862913171035095625562338955896073041648298851160839; + uint256 constant IC34y = 9189039051945082657627610414917017925248648316171459951020666357043783770327; // Memory data diff --git a/packages/prover/Dockerfile b/packages/prover/Dockerfile index ec1a32d..73c259c 100644 --- a/packages/prover/Dockerfile +++ b/packages/prover/Dockerfile @@ -47,7 +47,7 @@ RUN ls /root RUN mkdir params WORKDIR /root/params -RUN curl https://storage.googleapis.com/circom-ether-email-auth/v1.0.2/email_auth_prod1.zkey --output ./email_auth.zkey +RUN curl https://storage.googleapis.com/circom-ether-email-auth/v1.1.0/email_auth.zkey --output ./email_auth.zkey # RUN curl https://storage.googleapis.com/circom-ether-email-auth/v1.0.2/email_auth.wasm --output ./email_auth.wasm RUN mkdir ./email_auth_cpp WORKDIR /root/params/email_auth_cpp diff --git a/packages/prover/local_setup.sh b/packages/prover/local_setup.sh index 4bab72c..4cc97e0 100755 --- a/packages/prover/local_setup.sh +++ b/packages/prover/local_setup.sh @@ -7,7 +7,7 @@ npm install -g snarkjs@latest pip install -r requirements.txt mkdir build && cd build # gdown "https://drive.google.com/uc?id=1XDPFIL5YK8JzLGoTjmHLXO9zMDjSQcJH" -curl https://storage.googleapis.com/circom-ether-email-auth/v1.0.2/email_auth_prod1.zkey --output ./email_auth.zkey +curl https://storage.googleapis.com/circom-ether-email-auth/v1.1.0/email_auth.zkey --output ./email_auth.zkey mkdir ./email_auth_cpp cd ./email_auth_cpp curl https://storage.googleapis.com/circom-ether-email-auth/v1.0.2/email_auth --output ./email_auth diff --git a/packages/prover/modal_server.py b/packages/prover/modal_server.py index b28e1a4..845618c 100644 --- a/packages/prover/modal_server.py +++ b/packages/prover/modal_server.py @@ -6,7 +6,7 @@ from google.cloud.logging_v2.handlers import setup_logging from google.oauth2 import service_account -app = modal.App("email-auth-prover-v1.5.4") +app = modal.App("email-auth-prover-v1.6.0") image = modal.Image.from_dockerfile("Dockerfile") diff --git a/packages/relayer/src/abis/user_overridable_dkim_registry.rs b/packages/relayer/src/abis/user_overridable_dkim_registry.rs index 9320b21..cb2b8bc 100644 --- a/packages/relayer/src/abis/user_overridable_dkim_registry.rs +++ b/packages/relayer/src/abis/user_overridable_dkim_registry.rs @@ -1172,13 +1172,13 @@ pub mod user_overridable_dkim_registry { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15`\x13W`\0\x80\xFD[P`\x80Qa8ra\0=`\09`\0\x81\x81a\"\"\x01R\x81\x81a\"K\x01Ra$l\x01Ra8r`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\x8BW`\x005`\xE0\x1C\x80c}F6H\x11a\0\xD6W\x80c\xAD<\xB1\xCC\x11a\0\x7FW\x80c\xE7\xA7\x97z\x11a\0YW\x80c\xE7\xA7\x97z\x14a\x05\x92W\x80c\xF0\xBF\xB1\x97\x14a\x05\xB2W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xEDW`\0\x80\xFD[\x80c\xAD<\xB1\xCC\x14a\x04\xAFW\x80c\xD5\x07\xC3 \x14a\x04\xF8W\x80c\xE3\x08\xDE\x0C\x14a\x05AW`\0\x80\xFD[\x80c\x81.\x12\xCE\x11a\0\xB0W\x80c\x81.\x12\xCE\x14a\x04/W\x80c\x82\xBF\xF8\xCD\x14a\x04EW\x80c\x8D\xA5\xCB[\x14a\x04eW`\0\x80\xFD[\x80c}F6H\x14a\x03\x90W\x80c\x7F\x8E)\xBA\x14a\x03\xE2W\x80c\x7F\xF1\x03\xDA\x14a\x04\x0FW`\0\x80\xFD[\x80cL\x93\x06\x07\x11a\x018W\x80cWI\0\xDD\x11a\x01\x12W\x80cWI\0\xDD\x14a\x03 W\x80caJD\x85\x14a\x03[W\x80cqP\x18\xA6\x14a\x03{W`\0\x80\xFD[\x80cL\x93\x06\x07\x14a\x02\xCAW\x80cO\x1E\xF2\x86\x14a\x02\xEAW\x80cR\xD1\x90-\x14a\x02\xFDW`\0\x80\xFD[\x80c\"Z\x08\xD4\x11a\x01iW\x80c\"Z\x08\xD4\x14a\x02AW\x80c2\xE1\xE1\x94\x14a\x02\x8AW\x80cK\xCB\xBE\x96\x14a\x02\xAAW`\0\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\x01\x90W\x80c\x0BU\xB3|\x14a\x01\xEFW\x80c\x17\x94\xBB<\x14a\x02\x1FW[`\0\x80\xFD[4\x80\x15a\x01\x9CW`\0\x80\xFD[Pa\x01\xD9`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\x01\xE6\x91\x90a.\xF4V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a0#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x81\x15\x80\x15a\x08hWP\x82[\x90P`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x08\x85WP0;\x15[\x90P\x81\x15\x80\x15a\x08\x93WP\x80\x15[\x15a\x08\xCAW`@Q\x7F\xF9.\xE8\xA9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x16`\x01\x17\x85U\x83\x15a\t+W\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16h\x01\0\0\0\0\0\0\0\0\x17\x85U[a\t4\x88a \x82V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x89\x16\x17\x90U`\x01\x86\x90U\x83\x15a\t\xDAW\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPV[`\0\x84Q\x11a\n5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\n\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x83\x16\x03a\x0B\x9CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FmainAuthorizer cannot reactivate`D\x82\x01R\x7F the public key hash\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x0CBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7Fpublic key hash is already react`D\x82\x01R\x7Fivated\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[a\x0CL\x83\x83a\x1E\x8FV[`\x01\x14a\x0C\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Frevoke threshold must be one\0\0\0\0`D\x82\x01R`d\x01a\x06[V[`\x02a\x0C\xA8\x85\x85\x85a\x1F\x82V[\x10\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fset threshold must be larger tha`D\x82\x01R\x7Fn two\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x0FCW`\0a\r{`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01\x7FREACTIVATE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\r\x88\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x0E\xB5W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\r\xFB\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E<\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x0E\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x0F@V[`\0a\x0E\xC1\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x0F>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\0\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F2\x89\x9A\x1E\xA4\xD8\xE4\x91|k=l\x1Ci\xFDLp\x949C\xB0'\xFE\x9D\x83+ R\xE7\xEF\xF8\xD6\x91\x90\xA3PPPPV[``\x83\x83a\x0F\xD8\x84a \xF8V[`@Q` \x01a\x0F\xEA\x93\x92\x91\x90a5\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x93\x92PPPV[a\x10\na!|V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x10\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x82\x16\x03a\x11JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be the same as the current main`d\x82\x01R\x7FAuthorizer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06[V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x91\x7F;\xB1\x96\x11\xD1\x15f1\xA8\\Y\xDD\xFEvhT\x1A/\0\xE6\xBA+~q\xCB\x0C`\xEC\xE0\xD5\xE5[\x91\xA2PV[a\x11\xBFa\"\nV[a\x11\xC8\x82a#\x0EV[a\x11\xD2\x82\x82a#\x16V[PPV[`\0a\x11\xE0a$TV[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x90V[`\0\x84Q\x11a\x12VW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\x12\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x13,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\x02\x84`@Qa\x13<\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x86\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash is already set\0\0`D\x82\x01R`d\x01a\x06[V[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x14mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x16\x94W`\0a\x14\xCC`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\x14\xD9\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x16\x06W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x15L\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x8D\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x16\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x16\x91V[`\0a\x16\x12\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x16\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\x01`\x02\x85`@Qa\x16\xA6\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x80\x84R\x91\x90\x94R\x91\x81 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x94\x15\x15\x94\x90\x94\x17\x90\x93U\x91T\x16\x90\x03a\x178W`\x01Ta\x17(\x90Ba6\xDBV[`\0\x84\x81R`\x05` R`@\x90 U[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83\x85`@Qa\x17^\x91\x90a6\x90V[`@Q\x90\x81\x90\x03\x81 \x90\x7F}a~\xDC\x9D\n\xDE/\xB7hC\xEF_sr\xBD'0\xE9\0\xFA\x12\xE6t\xBE\xCA\xA8\xAD\x01\xEA\xB6\xCB\x90`\0\x90\xA4PPPPV[a\x17\x9Ca!|V[a\x17\xA6`\0a$\xC3V[V[\x82Q\x84Q\x14a\x17\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Finvalid publicKeyHashes length\0\0`D\x82\x01R`d\x01a\x06[V[\x81Q\x84Q\x14a\x18JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Finvalid authorizers length\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x80Q\x84Q\x14a\x18\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid signatures length\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[`\0[\x84Q\x81\x10\x15a\x19\x1FWa\x19\x17\x85\x82\x81Q\x81\x10a\x18\xBCWa\x18\xBCa6\xEEV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x18\xD6Wa\x18\xD6a6\xEEV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\x18\xF0Wa\x18\xF0a6\xEEV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x19\nWa\x19\na6\xEEV[` \x02` \x01\x01Qa\x12\x05V[`\x01\x01a\x18\x9EV[PPPPPV[`\0\x84Q\x11a\x19wW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\x19\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x1AMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x1A\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x1D\x1AW`\0a\x1BR`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\x1B_\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x1C\x8CW`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x1B\xD2\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x13\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x1C\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x1D\x17V[`\0a\x1C\x98\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x1D\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F5P6\xB8\xAD\x96>\x18^\t\xF0t\xE8VU\x96H:\0\x12\xCB\xE6 \xF5\x07\xC0\xF3IP\xA2\xF0\xB3\x91\x90\xA3PPPPV[`\0\x803s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\x14\x91\x90a7\x1DV[\x90Pa\x1E!\x84\x84\x83a\x06\rV[\x91PP[\x92\x91PPV[a\x1E3a!|V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x1E\x83W`@Q\x7F\x1EO\xBD\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x04\x82\x01R`$\x01a\x06[V[a\x1E\x8C\x81a$\xC3V[PV[`\0\x82\x81R`\x03` \x90\x81R`@\x80\x83 \x83Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x90\x91R\x81 T\x81\x90`\xFF\x16\x15\x15`\x01\x03a\x1E\xDCWa\x1E\xD9`\x01\x82a6\xDBV[\x90P[`\0\x84\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F&Wa\x1F#`\x02\x82a6\xDBV[\x90P[\x80`\x01\x14\x80\x15a\x1FjWP`\0\x84\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x14[\x15a\x08\x16Wa\x1Fz`\x01\x82a7:V[\x94\x93PPPPV[`\0\x80`\0\x90P`\x02\x85`@Qa\x1F\x99\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 \x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a \x17W`\0\x84\x81R`\x05` R`@\x90 TB\x10\x15a \tWa \x02`\x01\x82a6\xDBV[\x90Pa \x17V[a \x14`\x02\x82a6\xDBV[\x90P[`\x02\x85`@Qa '\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1FzWa y`\x02\x82a6\xDBV[\x95\x94PPPPPV[a \x8Aa%YV[a\x1E\x8C\x81a%\xC0V[`\0a \x9F\x82Qa%\xC8V[\x82`@Q` \x01a \xB1\x92\x91\x90a7MV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0\x80a \xDE\x86\x86a&\x86V[\x92P\x92P\x92Pa \xEE\x82\x82a&\xD3V[P\x90\x94\x93PPPPV[``a\x1E%\x82a!t\x84`\xFF`\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x90\x81\x02\x92\x90\x92\x1C`@g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1C` c\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1Ca\xFF\xFF\x81\x11`\x10\x81\x81\x02\x92\x90\x92\x1C\x94\x90\x94\x11`\x02\x90\x94\x02`\x04\x90\x92\x02`\x08\x90\x93\x02\x94\x02\x93\x90\x93\x01\x01\x91\x90\x91\x01\x01\x90V[`\x01\x01a'\xD7V[3a!\xBB\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x17\xA6W`@Q\x7F\x11\x8C\xDA\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R`$\x01a\x06[V[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\"\xD7WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\"\xBE\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCTs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x17\xA6W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x8Ca!|V[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a#\x9BWP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra#\x98\x91\x81\x01\x90a7\xA8V[`\x01[a#\xE9W`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\x04\x82\x01R`$\x01a\x06[V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a$EW`@Q\x7F\xAA\x1DI\xA4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[a$O\x83\x83a)\xF5V[PPPV[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x17\xA6W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x17\xA6W`@Q\x7F\xD7\xE6\xBC\xF8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E3a%YV[```\0a%\xD5\x83a*XV[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xF5Wa%\xF5a/\x07V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\x1FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a&)WP\x93\x92PPPV[`\0\x80`\0\x83Q`A\x03a&\xC0W` \x84\x01Q`@\x85\x01Q``\x86\x01Q`\0\x1Aa&\xB2\x88\x82\x85\x85a+:V[\x95P\x95P\x95PPPPa&\xCCV[PP\x81Q`\0\x91P`\x02\x90[\x92P\x92P\x92V[`\0\x82`\x03\x81\x11\x15a&\xE7Wa&\xE7a7\xC1V[\x03a&\xF0WPPV[`\x01\x82`\x03\x81\x11\x15a'\x04Wa'\x04a7\xC1V[\x03a';W`@Q\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x82`\x03\x81\x11\x15a'OWa'Oa7\xC1V[\x03a'\x89W`@Q\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[`\x03\x82`\x03\x81\x11\x15a'\x9DWa'\x9Da7\xC1V[\x03a\x11\xD2W`@Q\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[``\x82`\0a'\xE7\x84`\x02a7\xF0V[a'\xF2\x90`\x02a6\xDBV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\nWa(\na/\x07V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a(4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\0\x81Q\x81\x10a(kWa(ka6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a(\xCEWa(\xCEa6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\0a)\n\x85`\x02a7\xF0V[a)\x15\x90`\x01a6\xDBV[\x90P[`\x01\x81\x11\x15a)\xB2W\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83`\x0F\x16`\x10\x81\x10a)VWa)Va6\xEEV[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a)lWa)la6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x92\x90\x92\x1C\x91a)\xAB\x81a8\x07V[\x90Pa)\x18V[P\x81\x15a\x1E!W`@Q\x7F\xE2.'\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x85\x90R`D\x01a\x06[V[a)\xFE\x82a,4V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2\x80Q\x15a*PWa$O\x82\x82a-\x03V[a\x11\xD2a-}V[`\0\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a*\xA1Wz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a*\xCDWm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a*\xEBWf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a+\x03Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a+\x17Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a+)W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x1E%W`\x01\x01\x92\x91PPV[`\0\x80\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11\x15a+uWP`\0\x91P`\x03\x90P\x82a,*V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x8A\x90R`\xFF\x89\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x87\x90R`\x80\x81\x01\x86\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a+\xC9W=`\0\x80>=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a, WP`\0\x92P`\x01\x91P\x82\x90Pa,*V[\x92P`\0\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16;`\0\x03a,\x9DW`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\x04\x82\x01R`$\x01a\x06[V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\0\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84`@Qa--\x91\x90a6\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a-hW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a-mV[``\x91P[P\x91P\x91Pa y\x85\x83\x83a-\xB5V[4\x15a\x17\xA6W`@Q\x7F\xB3\x98\x97\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a-\xCAWa-\xC5\x82a.DV[a\x08\x16V[\x81Q\x15\x80\x15a-\xEEWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15[\x15a.=W`@Q\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01a\x06[V[P\x80a\x08\x16V[\x80Q\x15a.TW\x80Q\x80\x82` \x01\xFD[`@Q\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a.\xA1W\x81\x81\x01Q\x83\x82\x01R` \x01a.\x89V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra.\xC2\x81` \x86\x01` \x86\x01a.\x86V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x08\x16` \x83\x01\x84a.\xAAV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a/}Wa/}a/\x07V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a/\x96W`\0\x80\xFD[\x815` \x83\x01`\0\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a/\xB7Wa/\xB7a/\x07V[P`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01a/\xEA\x81a/6V[\x91PP\x82\x81R\x85\x83\x83\x01\x11\x15a/\xFFW`\0\x80\xFD[\x82\x82` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E\x8CW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a0QW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0hW`\0\x80\xFD[a0t\x86\x82\x87\x01a/\x85V[\x93PP` \x84\x015\x91P`@\x84\x015a0\x8C\x81a0\x1AV[\x80\x91PP\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[\x835a0\xB7\x81a0\x1AV[\x92P` \x84\x015a0\xC7\x81a0\x1AV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a0\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x05W`\0\x80\xFD[a1\x11\x87\x82\x88\x01a/\x85V[\x94PP` \x85\x015\x92P`@\x85\x015a1)\x81a0\x1AV[\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1EW`\0\x80\xFD[a1Q\x87\x82\x88\x01a/\x85V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0``\x84\x86\x03\x12\x15a1rW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x89W`\0\x80\xFD[a1\x95\x86\x82\x87\x01a/\x85V[\x93PP` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x86\x82\x87\x01a/\x85V[\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a1\xE2W`\0\x80\xFD[\x815a\x08\x16\x81a0\x1AV[`\0\x80`@\x83\x85\x03\x12\x15a2\0W`\0\x80\xFD[\x825a2\x0B\x81a0\x1AV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2'W`\0\x80\xFD[a23\x85\x82\x86\x01a/\x85V[\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a2PW`\0\x80\xFD[\x825\x91P` \x83\x015a2b\x81a0\x1AV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a2\x7FW`\0\x80\xFD[P5\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a2\xA0Wa2\xA0a/\x07V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a2\xBBW`\0\x80\xFD[\x815a2\xCEa2\xC9\x82a2\x86V[a/6V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\xF0W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805\x83R` \x92\x83\x01\x92\x01a2\xF5V[P\x95\x94PPPPPV[`\0\x82`\x1F\x83\x01\x12a3(W`\0\x80\xFD[\x815a36a2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3XW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805a3p\x81a0\x1AV[\x83R` \x92\x83\x01\x92\x01a3]V[`\0\x82`\x1F\x83\x01\x12a3\x8FW`\0\x80\xFD[\x815a3\x9Da2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3\xBFW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xE3W`\0\x80\xFD[a3\xF2\x88` \x83\x8A\x01\x01a/\x85V[\x84RP` \x92\x83\x01\x92\x01a3\xC4V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4\x17W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4.W`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a4?W`\0\x80\xFD[\x805a4Ma2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x89\x83\x11\x15a4oW`\0\x80\xFD[` \x84\x01[\x83\x81\x10\x15a4\xB1W\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\x93W`\0\x80\xFD[a4\xA2\x8C` \x83\x89\x01\x01a/\x85V[\x84RP` \x92\x83\x01\x92\x01a4tV[P\x96PPPP` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\xD1W`\0\x80\xFD[a4\xDD\x87\x82\x88\x01a2\xAAV[\x93PP`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\xFAW`\0\x80\xFD[a5\x06\x87\x82\x88\x01a3\x17V[\x92PP``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a5#W`\0\x80\xFD[a1Q\x87\x82\x88\x01a3~V[`\0\x80`@\x83\x85\x03\x12\x15a5BW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a5YW`\0\x80\xFD[a5e\x85\x82\x86\x01a/\x85V[\x95` \x94\x90\x94\x015\x94PPPPV[\x82\x81R`@` \x82\x01R`\0a\x1Fz`@\x83\x01\x84a.\xAAV[`\0` \x82\x84\x03\x12\x15a5\x9FW`\0\x80\xFD[\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x08\x16W`\0\x80\xFD[`\0\x84Qa5\xE1\x81\x84` \x89\x01a.\x86V[\x7Fdomain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x84Qa6\x1B\x81`\x07\x84\x01` \x89\x01a.\x86V[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x07\x92\x90\x91\x01\x91\x82\x01R\x83Qa6Y\x81`\x18\x84\x01` \x88\x01a.\x86V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x18\x92\x90\x91\x01\x91\x82\x01R`\x19\x01\x95\x94PPPPPV[`\0\x82Qa6\xA2\x81\x84` \x87\x01a.\x86V[\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E%Wa\x1E%a6\xACV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a7/W`\0\x80\xFD[\x81Qa\x08\x16\x81a0\x1AV[\x81\x81\x03\x81\x81\x11\x15a\x1E%Wa\x1E%a6\xACV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa7\x85\x81`\x1A\x85\x01` \x88\x01a.\x86V[\x83Q\x90\x83\x01\x90a7\x9C\x81`\x1A\x84\x01` \x88\x01a.\x86V[\x01`\x1A\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a7\xBAW`\0\x80\xFD[PQ\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1E%Wa\x1E%a6\xACV[`\0\x81a8\x16Wa8\x16a6\xACV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 q>\xE1\xC5W\xFE\x9D\x8C[\xE2@\x07\x8D\xB2Z\xAAQ\xB4PX\x8F\x10\\I\xA8\x0Bv \x05\x81\x99\x9CdsolcC\0\x08\x1A\x003"; + const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15`\x12W_\x80\xFD[P`\x80Qa7Ma\09_9_\x81\x81a!\xC4\x01R\x81\x81a!\xED\x01Ra$\x0E\x01Ra7M_\xF3\xFE`\x80`@R`\x046\x10a\x01\x83W_5`\xE0\x1C\x80c}F6H\x11a\0\xD1W\x80c\xAD<\xB1\xCC\x11a\0|W\x80c\xE7\xA7\x97z\x11a\0WW\x80c\xE7\xA7\x97z\x14a\x05qW\x80c\xF0\xBF\xB1\x97\x14a\x05\x90W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xC9W_\x80\xFD[\x80c\xAD<\xB1\xCC\x14a\x04\x92W\x80c\xD5\x07\xC3 \x14a\x04\xDAW\x80c\xE3\x08\xDE\x0C\x14a\x05\"W_\x80\xFD[\x80c\x81.\x12\xCE\x11a\0\xACW\x80c\x81.\x12\xCE\x14a\x04\x15W\x80c\x82\xBF\xF8\xCD\x14a\x04*W\x80c\x8D\xA5\xCB[\x14a\x04IW_\x80\xFD[\x80c}F6H\x14a\x03{W\x80c\x7F\x8E)\xBA\x14a\x03\xCBW\x80c\x7F\xF1\x03\xDA\x14a\x03\xF6W_\x80\xFD[\x80cL\x93\x06\x07\x11a\x011W\x80cWI\0\xDD\x11a\x01\x0CW\x80cWI\0\xDD\x14a\x03\x0FW\x80caJD\x85\x14a\x03HW\x80cqP\x18\xA6\x14a\x03gW_\x80\xFD[\x80cL\x93\x06\x07\x14a\x02\xBBW\x80cO\x1E\xF2\x86\x14a\x02\xDAW\x80cR\xD1\x90-\x14a\x02\xEDW_\x80\xFD[\x80c\"Z\x08\xD4\x11a\x01aW\x80c\"Z\x08\xD4\x14a\x025W\x80c2\xE1\xE1\x94\x14a\x02}W\x80cK\xCB\xBE\x96\x14a\x02\x9CW_\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\x01\x87W\x80c\x0BU\xB3|\x14a\x01\xE5W\x80c\x17\x94\xBB<\x14a\x02\x14W[_\x80\xFD[4\x80\x15a\x01\x92W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\x01\xDC\x91\x90a.XV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xF0W_\x80\xFD[Pa\x02\x04a\x01\xFF6`\x04a/\x97V[a\x05\xE8V[`@Q\x90\x15\x15\x81R` \x01a\x01\xDCV[4\x80\x15a\x02\x1FW_\x80\xFD[Pa\x023a\x02.6`\x04a/\xEEV[a\x07\xF2V[\0[4\x80\x15a\x02@W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01\x7FREACTIVATE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x02\x88W_\x80\xFD[Pa\x023a\x02\x976`\x04a0,V[a\t\xB6V[4\x80\x15a\x02\xA7W_\x80\xFD[Pa\x01\xCFa\x02\xB66`\x04a0\xACV[a\x0F\x94V[4\x80\x15a\x02\xC6W_\x80\xFD[Pa\x023a\x02\xD56`\x04a1\x1AV[a\x0F\xCBV[a\x023a\x02\xE86`\x04a15V[a\x11~V[4\x80\x15a\x02\xF8W_\x80\xFD[Pa\x03\x01a\x11\x9DV[`@Q\x90\x81R` \x01a\x01\xDCV[4\x80\x15a\x03\x1AW_\x80\xFD[Pa\x02\x04a\x03)6`\x04a1\x82V[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[4\x80\x15a\x03SW_\x80\xFD[Pa\x023a\x03b6`\x04a0,V[a\x11\xCBV[4\x80\x15a\x03rW_\x80\xFD[Pa\x023a\x17OV[4\x80\x15a\x03\x86W_\x80\xFD[P_Ta\x03\xA6\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDCV[4\x80\x15a\x03\xD6W_\x80\xFD[Pa\x03\x01a\x03\xE56`\x04a1\xB0V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\x01W_\x80\xFD[Pa\x023a\x04\x106`\x04a37V[a\x17bV[4\x80\x15a\x04 W_\x80\xFD[Pa\x03\x01`\x01T\x81V[4\x80\x15a\x045W_\x80\xFD[Pa\x023a\x04D6`\x04a0,V[a\x18\xDFV[4\x80\x15a\x04TW_\x80\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x03\xA6V[4\x80\x15a\x04\x9DW_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7F5.0.0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x04\xE5W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x05-W_\x80\xFD[Pa\x02\x04a\x05<6`\x04a/\x97V[\x82Q` \x81\x85\x01\x81\x01\x80Q`\x02\x82R\x92\x82\x01\x95\x82\x01\x95\x90\x95 \x91\x90\x94R\x83R_\x91\x82R`@\x80\x83 \x90\x93R\x81R T`\xFF\x16\x81V[4\x80\x15a\x05|W_\x80\xFD[Pa\x02\x04a\x05\x8B6`\x04a4[V[a\x1DSV[4\x80\x15a\x05\x9BW_\x80\xFD[Pa\x02\x04a\x05\xAA6`\x04a1\x82V[`\x03` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[4\x80\x15a\x05\xD4W_\x80\xFD[Pa\x023a\x05\xE36`\x04a1\x1AV[a\x1D\xD9V[_\x80\x84Q\x11a\x06>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82a\x06\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x07\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x83\x16\x03a\x07\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fauthorizer cannot be mainAuthori`D\x82\x01R\x7Fzer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_a\x07\xAF\x84\x84a\x1E#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x08=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x07\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x0E{W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x0F\nV[_a\x0E\x8B\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x0F\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[_\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F2\x89\x9A\x1E\xA4\xD8\xE4\x91|k=l\x1Ci\xFDLp\x949C\xB0'\xFE\x9D\x83+ R\xE7\xEF\xF8\xD6\x91\x90\xA3PPPPV[``\x83\x83a\x0F\xA1\x84a \x9AV[`@Q` \x01a\x0F\xB3\x93\x92\x91\x90a5\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x93\x92PPPV[a\x0F\xD3a!\x1EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x10\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x82\x16\x03a\x11\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be the same as the current main`d\x82\x01R\x7FAuthorizer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x065V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x91\x7F;\xB1\x96\x11\xD1\x15f1\xA8\\Y\xDD\xFEvhT\x1A/\0\xE6\xBA+~q\xCB\x0C`\xEC\xE0\xD5\xE5[\x91\xA2PV[a\x11\x86a!\xACV[a\x11\x8F\x82a\"\xB0V[a\x11\x99\x82\x82a\"\xB8V[PPV[_a\x11\xA6a#\xF6V[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x90V[_\x84Q\x11a\x12\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x82a\x12hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x12\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[`\x02\x84`@Qa\x13\x01\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x86\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15a\x13\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash is already set\0\0`D\x82\x01R`d\x01a\x065V[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x140W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x16RW_a\x14\x8E`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\x94V[\x90P_a\x14\x9A\x82a 8V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x15\xC5W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x15\r\x90\x84\x90\x87\x90`\x04\x01a4\x9DV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15(W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15L\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x15\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x16OV[_a\x15\xD0\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x16MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[`\x01`\x02\x85`@Qa\x16d\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x80\x84R\x91\x90\x94R\x91\x81 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x94\x15\x15\x94\x90\x94\x17\x90\x93U\x91T\x16\x90\x03a\x16\xF4W`\x01Ta\x16\xE5\x90Ba5\xE0V[_\x84\x81R`\x05` R`@\x90 U[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83\x85`@Qa\x17\x1A\x91\x90a5\xA8V[`@Q\x90\x81\x90\x03\x81 \x90\x7F}a~\xDC\x9D\n\xDE/\xB7hC\xEF_sr\xBD'0\xE9\0\xFA\x12\xE6t\xBE\xCA\xA8\xAD\x01\xEA\xB6\xCB\x90_\x90\xA4PPPPV[a\x17Wa!\x1EV[a\x17`_a$eV[V[\x82Q\x84Q\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Finvalid publicKeyHashes length\0\0`D\x82\x01R`d\x01a\x065V[\x81Q\x84Q\x14a\x18\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Finvalid authorizers length\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x80Q\x84Q\x14a\x18UW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid signatures length\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[_[\x84Q\x81\x10\x15a\x18\xD8Wa\x18\xD0\x85\x82\x81Q\x81\x10a\x18uWa\x18ua5\xF3V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x18\x8FWa\x18\x8Fa5\xF3V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\x18\xA9Wa\x18\xA9a5\xF3V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x18\xC3Wa\x18\xC3a5\xF3V[` \x02` \x01\x01Qa\x11\xCBV[`\x01\x01a\x18WV[PPPPPV[_\x84Q\x11a\x19/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x82a\x19|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x1A\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x1A\xAAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x1C\xCCW_a\x1B\x08`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\x94V[\x90P_a\x1B\x14\x82a 8V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x1C?W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x1B\x87\x90\x84\x90\x87\x90`\x04\x01a4\x9DV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xA2W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B\xC6\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x1C:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x1C\xC9V[_a\x1CJ\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x1C\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F5P6\xB8\xAD\x96>\x18^\t\xF0t\xE8VU\x96H:\0\x12\xCB\xE6 \xF5\x07\xC0\xF3IP\xA2\xF0\xB3\x91\x90\xA3PPPPV[_\x803s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\x9EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC2\x91\x90a6 V[\x90Pa\x1D\xCF\x84\x84\x83a\x05\xE8V[\x91PP[\x92\x91PPV[a\x1D\xE1a!\x1EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x1E0W`@Q\x7F\x1EO\xBD\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x04\x82\x01R`$\x01a\x065V[a\x1E9\x81a$eV[PV[_\x82\x81R`\x03` \x90\x81R`@\x80\x83 \x83Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x90\x91R\x81 T\x81\x90`\xFF\x16\x15\x15`\x01\x03a\x1E\x88Wa\x1E\x85`\x01\x82a5\xE0V[\x90P[_\x84\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1E\xD1Wa\x1E\xCE`\x02\x82a5\xE0V[\x90P[\x80`\x01\x14\x80\x15a\x1F\x14WP_\x84\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x14[\x15a\x07\xEBWa\x1F$`\x01\x82a6;V[\x94\x93PPPPV[_\x80_\x90P`\x02\x85`@Qa\x1FA\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 \x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F\xBDW_\x84\x81R`\x05` R`@\x90 TB\x10\x15a\x1F\xAFWa\x1F\xA8`\x01\x82a5\xE0V[\x90Pa\x1F\xBDV[a\x1F\xBA`\x02\x82a5\xE0V[\x90P[`\x02\x85`@Qa\x1F\xCD\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F$Wa \x1E`\x02\x82a5\xE0V[\x95\x94PPPPPV[a /a$\xFAV[a\x1E9\x81a%aV[_a C\x82Qa%iV[\x82`@Q` \x01a U\x92\x91\x90a6NV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x80_\x80a \x80\x86\x86a&%V[\x92P\x92P\x92Pa \x90\x82\x82a&nV[P\x90\x94\x93PPPPV[``a\x1D\xD3\x82a!\x16\x84`\xFF`\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x90\x81\x02\x92\x90\x92\x1C`@g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1C` c\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1Ca\xFF\xFF\x81\x11`\x10\x81\x81\x02\x92\x90\x92\x1C\x94\x90\x94\x11`\x02\x90\x94\x02`\x04\x90\x92\x02`\x08\x90\x93\x02\x94\x02\x93\x90\x93\x01\x01\x91\x90\x91\x01\x01\x90V[`\x01\x01a'qV[3a!]\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x17`W`@Q\x7F\x11\x8C\xDA\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R`$\x01a\x065V[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\"yWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\"`\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCTs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x17`W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E9a!\x1EV[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a#=WP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra#:\x91\x81\x01\x90a6\x88V[`\x01[a#\x8BW`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\x04\x82\x01R`$\x01a\x065V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a#\xE7W`@Q\x7F\xAA\x1DI\xA4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[a#\xF1\x83\x83a)\x89V[PPPV[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x17`W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x17`W`@Q\x7F\xD7\xE6\xBC\xF8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\xE1a$\xFAV[``_a%u\x83a)\xEBV[`\x01\x01\x90P_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x94Wa%\x94a.jV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%\xBEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a%\xC8WP\x93\x92PPPV[_\x80_\x83Q`A\x03a&\\W` \x84\x01Q`@\x85\x01Q``\x86\x01Q_\x1Aa&N\x88\x82\x85\x85a*\xCCV[\x95P\x95P\x95PPPPa&gV[PP\x81Q_\x91P`\x02\x90[\x92P\x92P\x92V[_\x82`\x03\x81\x11\x15a&\x81Wa&\x81a6\x9FV[\x03a&\x8AWPPV[`\x01\x82`\x03\x81\x11\x15a&\x9EWa&\x9Ea6\x9FV[\x03a&\xD5W`@Q\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x82`\x03\x81\x11\x15a&\xE9Wa&\xE9a6\x9FV[\x03a'#W`@Q\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[`\x03\x82`\x03\x81\x11\x15a'7Wa'7a6\x9FV[\x03a\x11\x99W`@Q\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[``\x82_a'\x80\x84`\x02a6\xCCV[a'\x8B\x90`\x02a5\xE0V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\xA3Wa'\xA3a.jV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a'\xCDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81_\x81Q\x81\x10a(\x03Wa(\x03a5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a(eWa(ea5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP_a(\x9F\x85`\x02a6\xCCV[a(\xAA\x90`\x01a5\xE0V[\x90P[`\x01\x81\x11\x15a)FW\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83`\x0F\x16`\x10\x81\x10a(\xEBWa(\xEBa5\xF3V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a)\x01Wa)\x01a5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP`\x04\x92\x90\x92\x1C\x91a)?\x81a6\xE3V[\x90Pa(\xADV[P\x81\x15a\x1D\xCFW`@Q\x7F\xE2.'\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x85\x90R`D\x01a\x065V[a)\x92\x82a+\xBFV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a)\xE3Wa#\xF1\x82\x82a,\x8DV[a\x11\x99a-\x03V[_\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a*3Wz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a*_Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a*}Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a*\x95Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a*\xA9Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a*\xBBW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x1D\xD3W`\x01\x01\x92\x91PPV[_\x80\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11\x15a+\x05WP_\x91P`\x03\x90P\x82a+\xB5V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x8A\x90R`\xFF\x89\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x87\x90R`\x80\x81\x01\x86\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a+VW=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a+\xACWP_\x92P`\x01\x91P\x82\x90Pa+\xB5V[\x92P_\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16;_\x03a,'W`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\x04\x82\x01R`$\x01a\x065V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``_\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84`@Qa,\xB6\x91\x90a5\xA8V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a,\xEEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a,\xF3V[``\x91P[P\x91P\x91Pa \x1E\x85\x83\x83a-;V[4\x15a\x17`W`@Q\x7F\xB3\x98\x97\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a-PWa-K\x82a-\xCAV[a\x07\xEBV[\x81Q\x15\x80\x15a-tWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15[\x15a-\xC3W`@Q\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01a\x065V[P\x80a\x07\xEBV[\x80Q\x15a-\xDAW\x80Q\x80\x82` \x01\xFD[`@Q\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x07\xEB` \x83\x01\x84a.\x0CV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a.\xDEWa.\xDEa.jV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a.\xF5W_\x80\xFD[\x815` \x83\x01_\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a/\x15Wa/\x15a.jV[P`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01a/H\x81a.\x97V[\x91PP\x82\x81R\x85\x83\x83\x01\x11\x15a/\\W_\x80\xFD[\x82\x82` \x83\x017_\x92\x81\x01` \x01\x92\x90\x92RP\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E9W_\x80\xFD[_\x80_``\x84\x86\x03\x12\x15a/\xA9W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xBFW_\x80\xFD[a/\xCB\x86\x82\x87\x01a.\xE6V[\x93PP` \x84\x015\x91P`@\x84\x015a/\xE3\x81a/vV[\x80\x91PP\x92P\x92P\x92V[_\x80_``\x84\x86\x03\x12\x15a0\0W_\x80\xFD[\x835a0\x0B\x81a/vV[\x92P` \x84\x015a0\x1B\x81a/vV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_\x80_\x80`\x80\x85\x87\x03\x12\x15a0?W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0UW_\x80\xFD[a0a\x87\x82\x88\x01a.\xE6V[\x94PP` \x85\x015\x92P`@\x85\x015a0y\x81a/vV[\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x94W_\x80\xFD[a0\xA0\x87\x82\x88\x01a.\xE6V[\x91PP\x92\x95\x91\x94P\x92PV[_\x80_``\x84\x86\x03\x12\x15a0\xBEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xD4W_\x80\xFD[a0\xE0\x86\x82\x87\x01a.\xE6V[\x93PP` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xFCW_\x80\xFD[a1\x08\x86\x82\x87\x01a.\xE6V[\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a1*W_\x80\xFD[\x815a\x07\xEB\x81a/vV[_\x80`@\x83\x85\x03\x12\x15a1FW_\x80\xFD[\x825a1Q\x81a/vV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1lW_\x80\xFD[a1x\x85\x82\x86\x01a.\xE6V[\x91PP\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a1\x93W_\x80\xFD[\x825\x91P` \x83\x015a1\xA5\x81a/vV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a1\xC0W_\x80\xFD[P5\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a1\xE0Wa1\xE0a.jV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a1\xF9W_\x80\xFD[\x815a2\x0Ca2\x07\x82a1\xC7V[a.\x97V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2-W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805\x83R` \x92\x83\x01\x92\x01a22V[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a2cW_\x80\xFD[\x815a2qa2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\x92W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805a2\xAA\x81a/vV[\x83R` \x92\x83\x01\x92\x01a2\x97V[_\x82`\x1F\x83\x01\x12a2\xC7W_\x80\xFD[\x815a2\xD5a2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\xF6W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\x19W_\x80\xFD[a3(\x88` \x83\x8A\x01\x01a.\xE6V[\x84RP` \x92\x83\x01\x92\x01a2\xFBV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a3JW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3`W_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a3pW_\x80\xFD[\x805a3~a2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x89\x83\x11\x15a3\x9FW_\x80\xFD[` \x84\x01[\x83\x81\x10\x15a3\xE0W\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xC2W_\x80\xFD[a3\xD1\x8C` \x83\x89\x01\x01a.\xE6V[\x84RP` \x92\x83\x01\x92\x01a3\xA4V[P\x96PPPP` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xFFW_\x80\xFD[a4\x0B\x87\x82\x88\x01a1\xEAV[\x93PP`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4'W_\x80\xFD[a43\x87\x82\x88\x01a2TV[\x92PP``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4OW_\x80\xFD[a0\xA0\x87\x82\x88\x01a2\xB8V[_\x80`@\x83\x85\x03\x12\x15a4lW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\x82W_\x80\xFD[a4\x8E\x85\x82\x86\x01a.\xE6V[\x95` \x94\x90\x94\x015\x94PPPPV[\x82\x81R`@` \x82\x01R_a\x1F$`@\x83\x01\x84a.\x0CV[_` \x82\x84\x03\x12\x15a4\xC5W_\x80\xFD[\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x07\xEBW_\x80\xFD[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\x16\x82\x86a4\xF4V[\x7Fdomain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra5F`\x07\x82\x01\x86a4\xF4V[\x90P\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra5x`\x11\x82\x01\x85a4\xF4V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x01\x01\x96\x95PPPPPPV[_a\x07\xEB\x82\x84a4\xF4V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1D\xD3Wa\x1D\xD3a5\xB3V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a60W_\x80\xFD[\x81Qa\x07\xEB\x81a/vV[\x81\x81\x03\x81\x81\x11\x15a\x1D\xD3Wa\x1D\xD3a5\xB3V[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R_a\x1F$a6\x82`\x1A\x84\x01\x86a4\xF4V[\x84a4\xF4V[_` \x82\x84\x03\x12\x15a6\x98W_\x80\xFD[PQ\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`!`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1D\xD3Wa\x1D\xD3a5\xB3V[_\x81a6\xF1Wa6\xF1a5\xB3V[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 \x7F\n\xFD\x9A\xBF\xB9\x91\xD0\x90=\xA0\x9A4Q\xD0\x9B\xC8-\x8E\xE7\x10\xE0V\xAE\xE7qYx\xCD\xA6\xB6\xD7dsolcC\0\x08\x1A\x003"; /// The bytecode of the contract. pub static USEROVERRIDABLEDKIMREGISTRY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01\x8BW`\x005`\xE0\x1C\x80c}F6H\x11a\0\xD6W\x80c\xAD<\xB1\xCC\x11a\0\x7FW\x80c\xE7\xA7\x97z\x11a\0YW\x80c\xE7\xA7\x97z\x14a\x05\x92W\x80c\xF0\xBF\xB1\x97\x14a\x05\xB2W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xEDW`\0\x80\xFD[\x80c\xAD<\xB1\xCC\x14a\x04\xAFW\x80c\xD5\x07\xC3 \x14a\x04\xF8W\x80c\xE3\x08\xDE\x0C\x14a\x05AW`\0\x80\xFD[\x80c\x81.\x12\xCE\x11a\0\xB0W\x80c\x81.\x12\xCE\x14a\x04/W\x80c\x82\xBF\xF8\xCD\x14a\x04EW\x80c\x8D\xA5\xCB[\x14a\x04eW`\0\x80\xFD[\x80c}F6H\x14a\x03\x90W\x80c\x7F\x8E)\xBA\x14a\x03\xE2W\x80c\x7F\xF1\x03\xDA\x14a\x04\x0FW`\0\x80\xFD[\x80cL\x93\x06\x07\x11a\x018W\x80cWI\0\xDD\x11a\x01\x12W\x80cWI\0\xDD\x14a\x03 W\x80caJD\x85\x14a\x03[W\x80cqP\x18\xA6\x14a\x03{W`\0\x80\xFD[\x80cL\x93\x06\x07\x14a\x02\xCAW\x80cO\x1E\xF2\x86\x14a\x02\xEAW\x80cR\xD1\x90-\x14a\x02\xFDW`\0\x80\xFD[\x80c\"Z\x08\xD4\x11a\x01iW\x80c\"Z\x08\xD4\x14a\x02AW\x80c2\xE1\xE1\x94\x14a\x02\x8AW\x80cK\xCB\xBE\x96\x14a\x02\xAAW`\0\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\x01\x90W\x80c\x0BU\xB3|\x14a\x01\xEFW\x80c\x17\x94\xBB<\x14a\x02\x1FW[`\0\x80\xFD[4\x80\x15a\x01\x9CW`\0\x80\xFD[Pa\x01\xD9`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\x01\xE6\x91\x90a.\xF4V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a0#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x81\x15\x80\x15a\x08hWP\x82[\x90P`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x08\x85WP0;\x15[\x90P\x81\x15\x80\x15a\x08\x93WP\x80\x15[\x15a\x08\xCAW`@Q\x7F\xF9.\xE8\xA9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x16`\x01\x17\x85U\x83\x15a\t+W\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16h\x01\0\0\0\0\0\0\0\0\x17\x85U[a\t4\x88a \x82V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x89\x16\x17\x90U`\x01\x86\x90U\x83\x15a\t\xDAW\x84T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPV[`\0\x84Q\x11a\n5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\n\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x83\x16\x03a\x0B\x9CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FmainAuthorizer cannot reactivate`D\x82\x01R\x7F the public key hash\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x0CBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7Fpublic key hash is already react`D\x82\x01R\x7Fivated\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[a\x0CL\x83\x83a\x1E\x8FV[`\x01\x14a\x0C\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Frevoke threshold must be one\0\0\0\0`D\x82\x01R`d\x01a\x06[V[`\x02a\x0C\xA8\x85\x85\x85a\x1F\x82V[\x10\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fset threshold must be larger tha`D\x82\x01R\x7Fn two\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x0FCW`\0a\r{`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01\x7FREACTIVATE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\r\x88\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x0E\xB5W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\r\xFB\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E<\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x0E\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x0F@V[`\0a\x0E\xC1\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x0F>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\0\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F2\x89\x9A\x1E\xA4\xD8\xE4\x91|k=l\x1Ci\xFDLp\x949C\xB0'\xFE\x9D\x83+ R\xE7\xEF\xF8\xD6\x91\x90\xA3PPPPV[``\x83\x83a\x0F\xD8\x84a \xF8V[`@Q` \x01a\x0F\xEA\x93\x92\x91\x90a5\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x93\x92PPPV[a\x10\na!|V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x10\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x82\x16\x03a\x11JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be the same as the current main`d\x82\x01R\x7FAuthorizer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06[V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x91\x7F;\xB1\x96\x11\xD1\x15f1\xA8\\Y\xDD\xFEvhT\x1A/\0\xE6\xBA+~q\xCB\x0C`\xEC\xE0\xD5\xE5[\x91\xA2PV[a\x11\xBFa\"\nV[a\x11\xC8\x82a#\x0EV[a\x11\xD2\x82\x82a#\x16V[PPV[`\0a\x11\xE0a$TV[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x90V[`\0\x84Q\x11a\x12VW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\x12\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x13,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\x02\x84`@Qa\x13<\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x86\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash is already set\0\0`D\x82\x01R`d\x01a\x06[V[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x14mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x16\x94W`\0a\x14\xCC`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\x14\xD9\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x16\x06W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x15L\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x8D\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x16\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x16\x91V[`\0a\x16\x12\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x16\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\x01`\x02\x85`@Qa\x16\xA6\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x80\x84R\x91\x90\x94R\x91\x81 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x94\x15\x15\x94\x90\x94\x17\x90\x93U\x91T\x16\x90\x03a\x178W`\x01Ta\x17(\x90Ba6\xDBV[`\0\x84\x81R`\x05` R`@\x90 U[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83\x85`@Qa\x17^\x91\x90a6\x90V[`@Q\x90\x81\x90\x03\x81 \x90\x7F}a~\xDC\x9D\n\xDE/\xB7hC\xEF_sr\xBD'0\xE9\0\xFA\x12\xE6t\xBE\xCA\xA8\xAD\x01\xEA\xB6\xCB\x90`\0\x90\xA4PPPPV[a\x17\x9Ca!|V[a\x17\xA6`\0a$\xC3V[V[\x82Q\x84Q\x14a\x17\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Finvalid publicKeyHashes length\0\0`D\x82\x01R`d\x01a\x06[V[\x81Q\x84Q\x14a\x18JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Finvalid authorizers length\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x80Q\x84Q\x14a\x18\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid signatures length\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[`\0[\x84Q\x81\x10\x15a\x19\x1FWa\x19\x17\x85\x82\x81Q\x81\x10a\x18\xBCWa\x18\xBCa6\xEEV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x18\xD6Wa\x18\xD6a6\xEEV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\x18\xF0Wa\x18\xF0a6\xEEV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x19\nWa\x19\na6\xEEV[` \x02` \x01\x01Qa\x12\x05V[`\x01\x01a\x18\x9EV[PPPPPV[`\0\x84Q\x11a\x19wW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[\x82a\x19\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x06[V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x1AMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x1A\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06[V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x1D\x1AW`\0a\x1BR`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\xCBV[\x90P`\0a\x1B_\x82a \x93V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x1C\x8CW`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x1B\xD2\x90\x84\x90\x87\x90`\x04\x01a5tV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x13\x91\x90a5\x8DV[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x1C\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[a\x1D\x17V[`\0a\x1C\x98\x82\x85a \xCEV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x1D\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06[V[P[PP[`\0\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F5P6\xB8\xAD\x96>\x18^\t\xF0t\xE8VU\x96H:\0\x12\xCB\xE6 \xF5\x07\xC0\xF3IP\xA2\xF0\xB3\x91\x90\xA3PPPPV[`\0\x803s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\x14\x91\x90a7\x1DV[\x90Pa\x1E!\x84\x84\x83a\x06\rV[\x91PP[\x92\x91PPV[a\x1E3a!|V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x1E\x83W`@Q\x7F\x1EO\xBD\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x04\x82\x01R`$\x01a\x06[V[a\x1E\x8C\x81a$\xC3V[PV[`\0\x82\x81R`\x03` \x90\x81R`@\x80\x83 \x83Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x90\x91R\x81 T\x81\x90`\xFF\x16\x15\x15`\x01\x03a\x1E\xDCWa\x1E\xD9`\x01\x82a6\xDBV[\x90P[`\0\x84\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F&Wa\x1F#`\x02\x82a6\xDBV[\x90P[\x80`\x01\x14\x80\x15a\x1FjWP`\0\x84\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x14[\x15a\x08\x16Wa\x1Fz`\x01\x82a7:V[\x94\x93PPPPV[`\0\x80`\0\x90P`\x02\x85`@Qa\x1F\x99\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 \x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a \x17W`\0\x84\x81R`\x05` R`@\x90 TB\x10\x15a \tWa \x02`\x01\x82a6\xDBV[\x90Pa \x17V[a \x14`\x02\x82a6\xDBV[\x90P[`\x02\x85`@Qa '\x91\x90a6\x90V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1FzWa y`\x02\x82a6\xDBV[\x95\x94PPPPPV[a \x8Aa%YV[a\x1E\x8C\x81a%\xC0V[`\0a \x9F\x82Qa%\xC8V[\x82`@Q` \x01a \xB1\x92\x91\x90a7MV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0\x80a \xDE\x86\x86a&\x86V[\x92P\x92P\x92Pa \xEE\x82\x82a&\xD3V[P\x90\x94\x93PPPPV[``a\x1E%\x82a!t\x84`\xFF`\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x90\x81\x02\x92\x90\x92\x1C`@g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1C` c\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1Ca\xFF\xFF\x81\x11`\x10\x81\x81\x02\x92\x90\x92\x1C\x94\x90\x94\x11`\x02\x90\x94\x02`\x04\x90\x92\x02`\x08\x90\x93\x02\x94\x02\x93\x90\x93\x01\x01\x91\x90\x91\x01\x01\x90V[`\x01\x01a'\xD7V[3a!\xBB\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x17\xA6W`@Q\x7F\x11\x8C\xDA\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R`$\x01a\x06[V[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\"\xD7WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\"\xBE\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCTs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x17\xA6W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x8Ca!|V[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a#\x9BWP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra#\x98\x91\x81\x01\x90a7\xA8V[`\x01[a#\xE9W`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\x04\x82\x01R`$\x01a\x06[V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a$EW`@Q\x7F\xAA\x1DI\xA4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[a$O\x83\x83a)\xF5V[PPPV[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x17\xA6W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x17\xA6W`@Q\x7F\xD7\xE6\xBC\xF8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E3a%YV[```\0a%\xD5\x83a*XV[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xF5Wa%\xF5a/\x07V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\x1FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a&)WP\x93\x92PPPV[`\0\x80`\0\x83Q`A\x03a&\xC0W` \x84\x01Q`@\x85\x01Q``\x86\x01Q`\0\x1Aa&\xB2\x88\x82\x85\x85a+:V[\x95P\x95P\x95PPPPa&\xCCV[PP\x81Q`\0\x91P`\x02\x90[\x92P\x92P\x92V[`\0\x82`\x03\x81\x11\x15a&\xE7Wa&\xE7a7\xC1V[\x03a&\xF0WPPV[`\x01\x82`\x03\x81\x11\x15a'\x04Wa'\x04a7\xC1V[\x03a';W`@Q\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x82`\x03\x81\x11\x15a'OWa'Oa7\xC1V[\x03a'\x89W`@Q\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[`\x03\x82`\x03\x81\x11\x15a'\x9DWa'\x9Da7\xC1V[\x03a\x11\xD2W`@Q\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x06[V[``\x82`\0a'\xE7\x84`\x02a7\xF0V[a'\xF2\x90`\x02a6\xDBV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\nWa(\na/\x07V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a(4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\0\x81Q\x81\x10a(kWa(ka6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a(\xCEWa(\xCEa6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\0a)\n\x85`\x02a7\xF0V[a)\x15\x90`\x01a6\xDBV[\x90P[`\x01\x81\x11\x15a)\xB2W\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83`\x0F\x16`\x10\x81\x10a)VWa)Va6\xEEV[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a)lWa)la6\xEEV[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x92\x90\x92\x1C\x91a)\xAB\x81a8\x07V[\x90Pa)\x18V[P\x81\x15a\x1E!W`@Q\x7F\xE2.'\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x85\x90R`D\x01a\x06[V[a)\xFE\x82a,4V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2\x80Q\x15a*PWa$O\x82\x82a-\x03V[a\x11\xD2a-}V[`\0\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a*\xA1Wz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a*\xCDWm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a*\xEBWf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a+\x03Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a+\x17Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a+)W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x1E%W`\x01\x01\x92\x91PPV[`\0\x80\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11\x15a+uWP`\0\x91P`\x03\x90P\x82a,*V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x8A\x90R`\xFF\x89\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x87\x90R`\x80\x81\x01\x86\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a+\xC9W=`\0\x80>=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a, WP`\0\x92P`\x01\x91P\x82\x90Pa,*V[\x92P`\0\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16;`\0\x03a,\x9DW`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\x04\x82\x01R`$\x01a\x06[V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\0\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84`@Qa--\x91\x90a6\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a-hW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a-mV[``\x91P[P\x91P\x91Pa y\x85\x83\x83a-\xB5V[4\x15a\x17\xA6W`@Q\x7F\xB3\x98\x97\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a-\xCAWa-\xC5\x82a.DV[a\x08\x16V[\x81Q\x15\x80\x15a-\xEEWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15[\x15a.=W`@Q\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01a\x06[V[P\x80a\x08\x16V[\x80Q\x15a.TW\x80Q\x80\x82` \x01\xFD[`@Q\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a.\xA1W\x81\x81\x01Q\x83\x82\x01R` \x01a.\x89V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra.\xC2\x81` \x86\x01` \x86\x01a.\x86V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x08\x16` \x83\x01\x84a.\xAAV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a/}Wa/}a/\x07V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a/\x96W`\0\x80\xFD[\x815` \x83\x01`\0\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a/\xB7Wa/\xB7a/\x07V[P`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01a/\xEA\x81a/6V[\x91PP\x82\x81R\x85\x83\x83\x01\x11\x15a/\xFFW`\0\x80\xFD[\x82\x82` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E\x8CW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a0QW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0hW`\0\x80\xFD[a0t\x86\x82\x87\x01a/\x85V[\x93PP` \x84\x015\x91P`@\x84\x015a0\x8C\x81a0\x1AV[\x80\x91PP\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[\x835a0\xB7\x81a0\x1AV[\x92P` \x84\x015a0\xC7\x81a0\x1AV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a0\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x05W`\0\x80\xFD[a1\x11\x87\x82\x88\x01a/\x85V[\x94PP` \x85\x015\x92P`@\x85\x015a1)\x81a0\x1AV[\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1EW`\0\x80\xFD[a1Q\x87\x82\x88\x01a/\x85V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0``\x84\x86\x03\x12\x15a1rW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x89W`\0\x80\xFD[a1\x95\x86\x82\x87\x01a/\x85V[\x93PP` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x86\x82\x87\x01a/\x85V[\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a1\xE2W`\0\x80\xFD[\x815a\x08\x16\x81a0\x1AV[`\0\x80`@\x83\x85\x03\x12\x15a2\0W`\0\x80\xFD[\x825a2\x0B\x81a0\x1AV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2'W`\0\x80\xFD[a23\x85\x82\x86\x01a/\x85V[\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a2PW`\0\x80\xFD[\x825\x91P` \x83\x015a2b\x81a0\x1AV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a2\x7FW`\0\x80\xFD[P5\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a2\xA0Wa2\xA0a/\x07V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a2\xBBW`\0\x80\xFD[\x815a2\xCEa2\xC9\x82a2\x86V[a/6V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\xF0W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805\x83R` \x92\x83\x01\x92\x01a2\xF5V[P\x95\x94PPPPPV[`\0\x82`\x1F\x83\x01\x12a3(W`\0\x80\xFD[\x815a36a2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3XW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805a3p\x81a0\x1AV[\x83R` \x92\x83\x01\x92\x01a3]V[`\0\x82`\x1F\x83\x01\x12a3\x8FW`\0\x80\xFD[\x815a3\x9Da2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3\xBFW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a3\rW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xE3W`\0\x80\xFD[a3\xF2\x88` \x83\x8A\x01\x01a/\x85V[\x84RP` \x92\x83\x01\x92\x01a3\xC4V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4\x17W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4.W`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a4?W`\0\x80\xFD[\x805a4Ma2\xC9\x82a2\x86V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x89\x83\x11\x15a4oW`\0\x80\xFD[` \x84\x01[\x83\x81\x10\x15a4\xB1W\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\x93W`\0\x80\xFD[a4\xA2\x8C` \x83\x89\x01\x01a/\x85V[\x84RP` \x92\x83\x01\x92\x01a4tV[P\x96PPPP` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\xD1W`\0\x80\xFD[a4\xDD\x87\x82\x88\x01a2\xAAV[\x93PP`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\xFAW`\0\x80\xFD[a5\x06\x87\x82\x88\x01a3\x17V[\x92PP``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a5#W`\0\x80\xFD[a1Q\x87\x82\x88\x01a3~V[`\0\x80`@\x83\x85\x03\x12\x15a5BW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a5YW`\0\x80\xFD[a5e\x85\x82\x86\x01a/\x85V[\x95` \x94\x90\x94\x015\x94PPPPV[\x82\x81R`@` \x82\x01R`\0a\x1Fz`@\x83\x01\x84a.\xAAV[`\0` \x82\x84\x03\x12\x15a5\x9FW`\0\x80\xFD[\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x08\x16W`\0\x80\xFD[`\0\x84Qa5\xE1\x81\x84` \x89\x01a.\x86V[\x7Fdomain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x84Qa6\x1B\x81`\x07\x84\x01` \x89\x01a.\x86V[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x07\x92\x90\x91\x01\x91\x82\x01R\x83Qa6Y\x81`\x18\x84\x01` \x88\x01a.\x86V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x18\x92\x90\x91\x01\x91\x82\x01R`\x19\x01\x95\x94PPPPPV[`\0\x82Qa6\xA2\x81\x84` \x87\x01a.\x86V[\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E%Wa\x1E%a6\xACV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a7/W`\0\x80\xFD[\x81Qa\x08\x16\x81a0\x1AV[\x81\x81\x03\x81\x81\x11\x15a\x1E%Wa\x1E%a6\xACV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa7\x85\x81`\x1A\x85\x01` \x88\x01a.\x86V[\x83Q\x90\x83\x01\x90a7\x9C\x81`\x1A\x84\x01` \x88\x01a.\x86V[\x01`\x1A\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a7\xBAW`\0\x80\xFD[PQ\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1E%Wa\x1E%a6\xACV[`\0\x81a8\x16Wa8\x16a6\xACV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 q>\xE1\xC5W\xFE\x9D\x8C[\xE2@\x07\x8D\xB2Z\xAAQ\xB4PX\x8F\x10\\I\xA8\x0Bv \x05\x81\x99\x9CdsolcC\0\x08\x1A\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01\x83W_5`\xE0\x1C\x80c}F6H\x11a\0\xD1W\x80c\xAD<\xB1\xCC\x11a\0|W\x80c\xE7\xA7\x97z\x11a\0WW\x80c\xE7\xA7\x97z\x14a\x05qW\x80c\xF0\xBF\xB1\x97\x14a\x05\x90W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xC9W_\x80\xFD[\x80c\xAD<\xB1\xCC\x14a\x04\x92W\x80c\xD5\x07\xC3 \x14a\x04\xDAW\x80c\xE3\x08\xDE\x0C\x14a\x05\"W_\x80\xFD[\x80c\x81.\x12\xCE\x11a\0\xACW\x80c\x81.\x12\xCE\x14a\x04\x15W\x80c\x82\xBF\xF8\xCD\x14a\x04*W\x80c\x8D\xA5\xCB[\x14a\x04IW_\x80\xFD[\x80c}F6H\x14a\x03{W\x80c\x7F\x8E)\xBA\x14a\x03\xCBW\x80c\x7F\xF1\x03\xDA\x14a\x03\xF6W_\x80\xFD[\x80cL\x93\x06\x07\x11a\x011W\x80cWI\0\xDD\x11a\x01\x0CW\x80cWI\0\xDD\x14a\x03\x0FW\x80caJD\x85\x14a\x03HW\x80cqP\x18\xA6\x14a\x03gW_\x80\xFD[\x80cL\x93\x06\x07\x14a\x02\xBBW\x80cO\x1E\xF2\x86\x14a\x02\xDAW\x80cR\xD1\x90-\x14a\x02\xEDW_\x80\xFD[\x80c\"Z\x08\xD4\x11a\x01aW\x80c\"Z\x08\xD4\x14a\x025W\x80c2\xE1\xE1\x94\x14a\x02}W\x80cK\xCB\xBE\x96\x14a\x02\x9CW_\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\x01\x87W\x80c\x0BU\xB3|\x14a\x01\xE5W\x80c\x17\x94\xBB<\x14a\x02\x14W[_\x80\xFD[4\x80\x15a\x01\x92W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\x01\xDC\x91\x90a.XV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xF0W_\x80\xFD[Pa\x02\x04a\x01\xFF6`\x04a/\x97V[a\x05\xE8V[`@Q\x90\x15\x15\x81R` \x01a\x01\xDCV[4\x80\x15a\x02\x1FW_\x80\xFD[Pa\x023a\x02.6`\x04a/\xEEV[a\x07\xF2V[\0[4\x80\x15a\x02@W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01\x7FREACTIVATE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x02\x88W_\x80\xFD[Pa\x023a\x02\x976`\x04a0,V[a\t\xB6V[4\x80\x15a\x02\xA7W_\x80\xFD[Pa\x01\xCFa\x02\xB66`\x04a0\xACV[a\x0F\x94V[4\x80\x15a\x02\xC6W_\x80\xFD[Pa\x023a\x02\xD56`\x04a1\x1AV[a\x0F\xCBV[a\x023a\x02\xE86`\x04a15V[a\x11~V[4\x80\x15a\x02\xF8W_\x80\xFD[Pa\x03\x01a\x11\x9DV[`@Q\x90\x81R` \x01a\x01\xDCV[4\x80\x15a\x03\x1AW_\x80\xFD[Pa\x02\x04a\x03)6`\x04a1\x82V[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[4\x80\x15a\x03SW_\x80\xFD[Pa\x023a\x03b6`\x04a0,V[a\x11\xCBV[4\x80\x15a\x03rW_\x80\xFD[Pa\x023a\x17OV[4\x80\x15a\x03\x86W_\x80\xFD[P_Ta\x03\xA6\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDCV[4\x80\x15a\x03\xD6W_\x80\xFD[Pa\x03\x01a\x03\xE56`\x04a1\xB0V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\x01W_\x80\xFD[Pa\x023a\x04\x106`\x04a37V[a\x17bV[4\x80\x15a\x04 W_\x80\xFD[Pa\x03\x01`\x01T\x81V[4\x80\x15a\x045W_\x80\xFD[Pa\x023a\x04D6`\x04a0,V[a\x18\xDFV[4\x80\x15a\x04TW_\x80\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x03\xA6V[4\x80\x15a\x04\x9DW_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7F5.0.0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x04\xE5W_\x80\xFD[Pa\x01\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[4\x80\x15a\x05-W_\x80\xFD[Pa\x02\x04a\x05<6`\x04a/\x97V[\x82Q` \x81\x85\x01\x81\x01\x80Q`\x02\x82R\x92\x82\x01\x95\x82\x01\x95\x90\x95 \x91\x90\x94R\x83R_\x91\x82R`@\x80\x83 \x90\x93R\x81R T`\xFF\x16\x81V[4\x80\x15a\x05|W_\x80\xFD[Pa\x02\x04a\x05\x8B6`\x04a4[V[a\x1DSV[4\x80\x15a\x05\x9BW_\x80\xFD[Pa\x02\x04a\x05\xAA6`\x04a1\x82V[`\x03` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[4\x80\x15a\x05\xD4W_\x80\xFD[Pa\x023a\x05\xE36`\x04a1\x1AV[a\x1D\xD9V[_\x80\x84Q\x11a\x06>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82a\x06\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x07\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x83\x16\x03a\x07\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fauthorizer cannot be mainAuthori`D\x82\x01R\x7Fzer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_a\x07\xAF\x84\x84a\x1E#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x08=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x07\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x0E{W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x0F\nV[_a\x0E\x8B\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x0F\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[_\x83\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F2\x89\x9A\x1E\xA4\xD8\xE4\x91|k=l\x1Ci\xFDLp\x949C\xB0'\xFE\x9D\x83+ R\xE7\xEF\xF8\xD6\x91\x90\xA3PPPPV[``\x83\x83a\x0F\xA1\x84a \x9AV[`@Q` \x01a\x0F\xB3\x93\x92\x91\x90a5\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x93\x92PPPV[a\x0F\xD3a!\x1EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x10\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x82\x16\x03a\x11\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FnewMainAuthorizer address cannot`D\x82\x01R\x7F be the same as the current main`d\x82\x01R\x7FAuthorizer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x065V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x91\x7F;\xB1\x96\x11\xD1\x15f1\xA8\\Y\xDD\xFEvhT\x1A/\0\xE6\xBA+~q\xCB\x0C`\xEC\xE0\xD5\xE5[\x91\xA2PV[a\x11\x86a!\xACV[a\x11\x8F\x82a\"\xB0V[a\x11\x99\x82\x82a\"\xB8V[PPV[_a\x11\xA6a#\xF6V[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x90V[_\x84Q\x11a\x12\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x82a\x12hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x12\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[`\x02\x84`@Qa\x13\x01\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x86\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15a\x13\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash is already set\0\0`D\x82\x01R`d\x01a\x065V[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x140W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x16RW_a\x14\x8E`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\x94V[\x90P_a\x14\x9A\x82a 8V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x15\xC5W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x15\r\x90\x84\x90\x87\x90`\x04\x01a4\x9DV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15(W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15L\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x15\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x16OV[_a\x15\xD0\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x16MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[`\x01`\x02\x85`@Qa\x16d\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x80\x84R\x91\x90\x94R\x91\x81 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x94\x15\x15\x94\x90\x94\x17\x90\x93U\x91T\x16\x90\x03a\x16\xF4W`\x01Ta\x16\xE5\x90Ba5\xE0V[_\x84\x81R`\x05` R`@\x90 U[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83\x85`@Qa\x17\x1A\x91\x90a5\xA8V[`@Q\x90\x81\x90\x03\x81 \x90\x7F}a~\xDC\x9D\n\xDE/\xB7hC\xEF_sr\xBD'0\xE9\0\xFA\x12\xE6t\xBE\xCA\xA8\xAD\x01\xEA\xB6\xCB\x90_\x90\xA4PPPPV[a\x17Wa!\x1EV[a\x17`_a$eV[V[\x82Q\x84Q\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Finvalid publicKeyHashes length\0\0`D\x82\x01R`d\x01a\x065V[\x81Q\x84Q\x14a\x18\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Finvalid authorizers length\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x80Q\x84Q\x14a\x18UW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid signatures length\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[_[\x84Q\x81\x10\x15a\x18\xD8Wa\x18\xD0\x85\x82\x81Q\x81\x10a\x18uWa\x18ua5\xF3V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x18\x8FWa\x18\x8Fa5\xF3V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\x18\xA9Wa\x18\xA9a5\xF3V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x18\xC3Wa\x18\xC3a5\xF3V[` \x02` \x01\x01Qa\x11\xCBV[`\x01\x01a\x18WV[PPPPPV[_\x84Q\x11a\x19/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fdomain name cannot be zero\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[\x82a\x19|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fpublic key hash cannot be zero\0\0`D\x82\x01R`d\x01a\x065V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x1A\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fauthorizer address cannot be zer`D\x82\x01R\x7Fo\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x1A\xAAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fpublic key hash is already revok`D\x82\x01R\x7Fed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x065V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x14a\x1C\xCCW_a\x1B\x08`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86a\x0F\x94V[\x90P_a\x1B\x14\x82a 8V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15a\x1C?W`@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x16&\xBA~\x90a\x1B\x87\x90\x84\x90\x87\x90`\x04\x01a4\x9DV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xA2W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B\xC6\x91\x90a4\xB5V[{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16c\x16&\xBA~`\xE0\x1B\x14a\x1C:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Finvalid eip1271 signature\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[a\x1C\xC9V[_a\x1CJ\x82\x85a rV[\x90P\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x1C\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Finvalid ecdsa signature\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x065V[P[PP[_\x83\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x80\x85R\x92R\x80\x83 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x90\x91\x85\x91\x7F5P6\xB8\xAD\x96>\x18^\t\xF0t\xE8VU\x96H:\0\x12\xCB\xE6 \xF5\x07\xC0\xF3IP\xA2\xF0\xB3\x91\x90\xA3PPPPV[_\x803s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\x9EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC2\x91\x90a6 V[\x90Pa\x1D\xCF\x84\x84\x83a\x05\xE8V[\x91PP[\x92\x91PPV[a\x1D\xE1a!\x1EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x1E0W`@Q\x7F\x1EO\xBD\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x04\x82\x01R`$\x01a\x065V[a\x1E9\x81a$eV[PV[_\x82\x81R`\x03` \x90\x81R`@\x80\x83 \x83Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x90\x91R\x81 T\x81\x90`\xFF\x16\x15\x15`\x01\x03a\x1E\x88Wa\x1E\x85`\x01\x82a5\xE0V[\x90P[_\x84\x81R`\x03` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1E\xD1Wa\x1E\xCE`\x02\x82a5\xE0V[\x90P[\x80`\x01\x14\x80\x15a\x1F\x14WP_\x84\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16\x15\x15`\x01\x14[\x15a\x07\xEBWa\x1F$`\x01\x82a6;V[\x94\x93PPPPV[_\x80_\x90P`\x02\x85`@Qa\x1FA\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 \x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F\xBDW_\x84\x81R`\x05` R`@\x90 TB\x10\x15a\x1F\xAFWa\x1F\xA8`\x01\x82a5\xE0V[\x90Pa\x1F\xBDV[a\x1F\xBA`\x02\x82a5\xE0V[\x90P[`\x02\x85`@Qa\x1F\xCD\x91\x90a5\xA8V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 _\x87\x81R\x90\x83R\x81\x81 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x82R\x90\x92R\x90 T`\xFF\x16\x15\x15`\x01\x03a\x1F$Wa \x1E`\x02\x82a5\xE0V[\x95\x94PPPPPV[a /a$\xFAV[a\x1E9\x81a%aV[_a C\x82Qa%iV[\x82`@Q` \x01a U\x92\x91\x90a6NV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x80_\x80a \x80\x86\x86a&%V[\x92P\x92P\x92Pa \x90\x82\x82a&nV[P\x90\x94\x93PPPPV[``a\x1D\xD3\x82a!\x16\x84`\xFF`\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x90\x81\x02\x92\x90\x92\x1C`@g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1C` c\xFF\xFF\xFF\xFF\x82\x11\x90\x81\x02\x91\x90\x91\x1Ca\xFF\xFF\x81\x11`\x10\x81\x81\x02\x92\x90\x92\x1C\x94\x90\x94\x11`\x02\x90\x94\x02`\x04\x90\x92\x02`\x08\x90\x93\x02\x94\x02\x93\x90\x93\x01\x01\x91\x90\x91\x01\x01\x90V[`\x01\x01a'qV[3a!]\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x17`W`@Q\x7F\x11\x8C\xDA\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R`$\x01a\x065V[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\"yWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\"`\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCTs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x17`W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E9a!\x1EV[\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a#=WP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra#:\x91\x81\x01\x90a6\x88V[`\x01[a#\x8BW`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\x04\x82\x01R`$\x01a\x065V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a#\xE7W`@Q\x7F\xAA\x1DI\xA4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[a#\xF1\x83\x83a)\x89V[PPPV[0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x17`W`@Q\x7F\xE0|\x8D\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x17`W`@Q\x7F\xD7\xE6\xBC\xF8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\xE1a$\xFAV[``_a%u\x83a)\xEBV[`\x01\x01\x90P_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x94Wa%\x94a.jV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%\xBEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a%\xC8WP\x93\x92PPPV[_\x80_\x83Q`A\x03a&\\W` \x84\x01Q`@\x85\x01Q``\x86\x01Q_\x1Aa&N\x88\x82\x85\x85a*\xCCV[\x95P\x95P\x95PPPPa&gV[PP\x81Q_\x91P`\x02\x90[\x92P\x92P\x92V[_\x82`\x03\x81\x11\x15a&\x81Wa&\x81a6\x9FV[\x03a&\x8AWPPV[`\x01\x82`\x03\x81\x11\x15a&\x9EWa&\x9Ea6\x9FV[\x03a&\xD5W`@Q\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x82`\x03\x81\x11\x15a&\xE9Wa&\xE9a6\x9FV[\x03a'#W`@Q\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[`\x03\x82`\x03\x81\x11\x15a'7Wa'7a6\x9FV[\x03a\x11\x99W`@Q\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R`$\x01a\x065V[``\x82_a'\x80\x84`\x02a6\xCCV[a'\x8B\x90`\x02a5\xE0V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\xA3Wa'\xA3a.jV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a'\xCDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81_\x81Q\x81\x10a(\x03Wa(\x03a5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a(eWa(ea5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP_a(\x9F\x85`\x02a6\xCCV[a(\xAA\x90`\x01a5\xE0V[\x90P[`\x01\x81\x11\x15a)FW\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83`\x0F\x16`\x10\x81\x10a(\xEBWa(\xEBa5\xF3V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a)\x01Wa)\x01a5\xF3V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81_\x1A\x90SP`\x04\x92\x90\x92\x1C\x91a)?\x81a6\xE3V[\x90Pa(\xADV[P\x81\x15a\x1D\xCFW`@Q\x7F\xE2.'\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x85\x90R`D\x01a\x065V[a)\x92\x82a+\xBFV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a)\xE3Wa#\xF1\x82\x82a,\x8DV[a\x11\x99a-\x03V[_\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a*3Wz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a*_Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a*}Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a*\x95Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a*\xA9Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a*\xBBW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x1D\xD3W`\x01\x01\x92\x91PPV[_\x80\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11\x15a+\x05WP_\x91P`\x03\x90P\x82a+\xB5V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x8A\x90R`\xFF\x89\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x87\x90R`\x80\x81\x01\x86\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a+VW=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a+\xACWP_\x92P`\x01\x91P\x82\x90Pa+\xB5V[\x92P_\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16;_\x03a,'W`@Q\x7FL\x9C\x8C\xE3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\x04\x82\x01R`$\x01a\x065V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``_\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84`@Qa,\xB6\x91\x90a5\xA8V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a,\xEEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a,\xF3V[``\x91P[P\x91P\x91Pa \x1E\x85\x83\x83a-;V[4\x15a\x17`W`@Q\x7F\xB3\x98\x97\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a-PWa-K\x82a-\xCAV[a\x07\xEBV[\x81Q\x15\x80\x15a-tWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16;\x15[\x15a-\xC3W`@Q\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01a\x065V[P\x80a\x07\xEBV[\x80Q\x15a-\xDAW\x80Q\x80\x82` \x01\xFD[`@Q\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x07\xEB` \x83\x01\x84a.\x0CV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a.\xDEWa.\xDEa.jV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a.\xF5W_\x80\xFD[\x815` \x83\x01_\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a/\x15Wa/\x15a.jV[P`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01a/H\x81a.\x97V[\x91PP\x82\x81R\x85\x83\x83\x01\x11\x15a/\\W_\x80\xFD[\x82\x82` \x83\x017_\x92\x81\x01` \x01\x92\x90\x92RP\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E9W_\x80\xFD[_\x80_``\x84\x86\x03\x12\x15a/\xA9W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xBFW_\x80\xFD[a/\xCB\x86\x82\x87\x01a.\xE6V[\x93PP` \x84\x015\x91P`@\x84\x015a/\xE3\x81a/vV[\x80\x91PP\x92P\x92P\x92V[_\x80_``\x84\x86\x03\x12\x15a0\0W_\x80\xFD[\x835a0\x0B\x81a/vV[\x92P` \x84\x015a0\x1B\x81a/vV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_\x80_\x80`\x80\x85\x87\x03\x12\x15a0?W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0UW_\x80\xFD[a0a\x87\x82\x88\x01a.\xE6V[\x94PP` \x85\x015\x92P`@\x85\x015a0y\x81a/vV[\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x94W_\x80\xFD[a0\xA0\x87\x82\x88\x01a.\xE6V[\x91PP\x92\x95\x91\x94P\x92PV[_\x80_``\x84\x86\x03\x12\x15a0\xBEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xD4W_\x80\xFD[a0\xE0\x86\x82\x87\x01a.\xE6V[\x93PP` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xFCW_\x80\xFD[a1\x08\x86\x82\x87\x01a.\xE6V[\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a1*W_\x80\xFD[\x815a\x07\xEB\x81a/vV[_\x80`@\x83\x85\x03\x12\x15a1FW_\x80\xFD[\x825a1Q\x81a/vV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1lW_\x80\xFD[a1x\x85\x82\x86\x01a.\xE6V[\x91PP\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a1\x93W_\x80\xFD[\x825\x91P` \x83\x015a1\xA5\x81a/vV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a1\xC0W_\x80\xFD[P5\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a1\xE0Wa1\xE0a.jV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a1\xF9W_\x80\xFD[\x815a2\x0Ca2\x07\x82a1\xC7V[a.\x97V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2-W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805\x83R` \x92\x83\x01\x92\x01a22V[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a2cW_\x80\xFD[\x815a2qa2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\x92W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805a2\xAA\x81a/vV[\x83R` \x92\x83\x01\x92\x01a2\x97V[_\x82`\x1F\x83\x01\x12a2\xC7W_\x80\xFD[\x815a2\xD5a2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2\xF6W_\x80\xFD[` \x85\x01[\x83\x81\x10\x15a2JW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\x19W_\x80\xFD[a3(\x88` \x83\x8A\x01\x01a.\xE6V[\x84RP` \x92\x83\x01\x92\x01a2\xFBV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a3JW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3`W_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a3pW_\x80\xFD[\x805a3~a2\x07\x82a1\xC7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x89\x83\x11\x15a3\x9FW_\x80\xFD[` \x84\x01[\x83\x81\x10\x15a3\xE0W\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xC2W_\x80\xFD[a3\xD1\x8C` \x83\x89\x01\x01a.\xE6V[\x84RP` \x92\x83\x01\x92\x01a3\xA4V[P\x96PPPP` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a3\xFFW_\x80\xFD[a4\x0B\x87\x82\x88\x01a1\xEAV[\x93PP`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4'W_\x80\xFD[a43\x87\x82\x88\x01a2TV[\x92PP``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4OW_\x80\xFD[a0\xA0\x87\x82\x88\x01a2\xB8V[_\x80`@\x83\x85\x03\x12\x15a4lW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a4\x82W_\x80\xFD[a4\x8E\x85\x82\x86\x01a.\xE6V[\x95` \x94\x90\x94\x015\x94PPPPV[\x82\x81R`@` \x82\x01R_a\x1F$`@\x83\x01\x84a.\x0CV[_` \x82\x84\x03\x12\x15a4\xC5W_\x80\xFD[\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x07\xEBW_\x80\xFD[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\x16\x82\x86a4\xF4V[\x7Fdomain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra5F`\x07\x82\x01\x86a4\xF4V[\x90P\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra5x`\x11\x82\x01\x85a4\xF4V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x01\x01\x96\x95PPPPPPV[_a\x07\xEB\x82\x84a4\xF4V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1D\xD3Wa\x1D\xD3a5\xB3V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a60W_\x80\xFD[\x81Qa\x07\xEB\x81a/vV[\x81\x81\x03\x81\x81\x11\x15a\x1D\xD3Wa\x1D\xD3a5\xB3V[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R_a\x1F$a6\x82`\x1A\x84\x01\x86a4\xF4V[\x84a4\xF4V[_` \x82\x84\x03\x12\x15a6\x98W_\x80\xFD[PQ\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`!`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1D\xD3Wa\x1D\xD3a5\xB3V[_\x81a6\xF1Wa6\xF1a5\xB3V[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 \x7F\n\xFD\x9A\xBF\xB9\x91\xD0\x90=\xA0\x9A4Q\xD0\x9B\xC8-\x8E\xE7\x10\xE0V\xAE\xE7qYx\xCD\xA6\xB6\xD7dsolcC\0\x08\x1A\x003"; /// The deployed bytecode of the contract. pub static USEROVERRIDABLEDKIMREGISTRY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, From 41fbafb4485ae94e6cfa88b40237123929ad0612 Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Sun, 29 Dec 2024 07:55:51 +0900 Subject: [PATCH 8/8] Update github actions --- .github/workflows/build-fmt.yml | 3 ++ .github/workflows/unit-tests.yml | 6 +++ yarn.lock | 77 ++++++++++++++++++-------------- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/.github/workflows/build-fmt.yml b/.github/workflows/build-fmt.yml index cbe83bb..09b83b9 100644 --- a/.github/workflows/build-fmt.yml +++ b/.github/workflows/build-fmt.yml @@ -44,6 +44,9 @@ jobs: with: node-version: 18 cache: "yarn" + + - name: Cache clean + run: yarn cache clean - name: Install dependencies run: yarn install --frozen-lockfile diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 62b1d9e..41c7f51 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -88,6 +88,9 @@ jobs: - name: Install yarn run: npm install -g yarn + - name: Cache clean + run: yarn cache clean + - name: Install dependencies run: yarn install --frozen-lockfile @@ -118,6 +121,9 @@ jobs: - name: Install yarn run: npm install -g yarn + - name: Cache clean + run: yarn cache clean + - name: Install dependencies run: yarn install --frozen-lockfile diff --git a/yarn.lock b/yarn.lock index b6b0722..3dcaa89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1729,7 +1729,7 @@ resolved "https://registry.yarnpkg.com/@zk-email/relayer-utils/-/relayer-utils-0.4.60.tgz#ab41a7375470e8161caafaa46abb919c710d4a67" integrity sha512-sOfRc8yoAGFUPXNC3a/64IH+8+GEYPfUF0x5HtElsNfYxM/xtLG6hYvNTl7WLhhxe83dl3VtGMcptiiSvRdVrg== -"@zk-email/zk-regex-circom@=2.3.1", "@zk-email/zk-regex-circom@^2.3.1": +"@zk-email/zk-regex-circom@=2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@zk-email/zk-regex-circom/-/zk-regex-circom-2.3.1.tgz#032cdf12b5f587f828d6e872a235c0120d463bc8" integrity sha512-FJNi4QL07teQPuXV4EZqosPpA4riOSeFX2xD+cd4CCuf5b1RmqGqXoBz7yxT0QXuwNqdgooY6v6/xhH1o4X7vg== @@ -1737,6 +1737,14 @@ commander "^11.0.0" snarkjs "^0.7.5" +"@zk-email/zk-regex-circom@^2.3.1": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@zk-email/zk-regex-circom/-/zk-regex-circom-2.3.2.tgz#d3ad819ea0de3ce7612aa9ecde0497c3fac514fc" + integrity sha512-GXp4Z/93iF54hfJwlWl52HFiqpmLCeSHFc4HlYpxj5EWHQK6ibFQMLUWTJsdA3eh/erjO4UX+HlEIJ/gHhLg9g== + dependencies: + commander "^11.0.0" + snarkjs "^0.7.5" + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -2075,7 +2083,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.7: +call-bind@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== @@ -2085,7 +2093,7 @@ call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.2" -call-bound@^1.0.2: +call-bound@^1.0.2, call-bound@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== @@ -2109,9 +2117,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001688: - version "1.0.30001689" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz#67ca960dd5f443903e19949aeacc9d28f6e10910" - integrity sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g== + version "1.0.30001690" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" + integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== chai@^4.3.6, chai@^4.3.7: version "4.5.0" @@ -2383,11 +2391,11 @@ dotenv@^16.3.1: resolved "https://github.com/dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0" dunder-proto@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80" - integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A== + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: - call-bind-apply-helpers "^1.0.0" + call-bind-apply-helpers "^1.0.1" es-errors "^1.3.0" gopd "^1.2.0" @@ -2399,9 +2407,9 @@ ejs@^3.1.10, ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.5.73: - version "1.5.73" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz#f32956ce40947fa3c8606726a96cd8fb5bb5f720" - integrity sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg== + version "1.5.76" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" + integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== elliptic@6.5.4: version "6.5.4" @@ -2685,8 +2693,8 @@ for-each@^0.3.3: is-callable "^1.1.3" "forge-std@https://github.com/foundry-rs/forge-std": - version "1.9.4" - resolved "https://github.com/foundry-rs/forge-std#d3db4ef90a72b7d24aa5a2e5c649593eaef7801d" + version "1.9.5" + resolved "https://github.com/foundry-rs/forge-std#b5a86914561f38735ef1fc357685de3e7c92dc48" fs.realpath@^1.0.0: version "1.0.0" @@ -2922,9 +2930,9 @@ is-callable@^1.1.3: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.0.tgz#6c01ffdd5e33c49c1d2abfa93334a85cb56bd81c" - integrity sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g== + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" @@ -2973,11 +2981,11 @@ is-stream@^2.0.0: integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-typed-array@^1.1.3: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== dependencies: - which-typed-array "^1.1.14" + which-typed-array "^1.1.16" is-unicode-supported@^0.1.0: version "0.1.0" @@ -3578,9 +3586,9 @@ makeerror@1.0.12: tmpl "1.0.5" math-intrinsics@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817" - integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== merge-stream@^2.0.0: version "2.0.0" @@ -4014,9 +4022,9 @@ resolve.exports@^2.0.0: integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== resolve@^1.14.2, resolve@^1.20.0: - version "1.22.9" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.9.tgz#6da76e4cdc57181fa4471231400e8851d0a924f3" - integrity sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A== + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: is-core-module "^2.16.0" path-parse "^1.0.7" @@ -4442,15 +4450,16 @@ web-worker@^1.2.0: resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== -which-typed-array@^1.1.14, which-typed-array@^1.1.2: - version "1.1.16" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.16.tgz#db4db429c4706feca2f01677a144278e4a8c216b" - integrity sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ== +which-typed-array@^1.1.16, which-typed-array@^1.1.2: + version "1.1.18" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" + integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== dependencies: available-typed-arrays "^1.0.7" - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" for-each "^0.3.3" - gopd "^1.0.1" + gopd "^1.2.0" has-tostringtag "^1.0.2" which@^2.0.1: